• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

Символы

  • Автор темы Miller85
  • Дата начала
M

Miller85

#1
Всем привет... Ребят у меня такая проблемма... Значит дан числовой отрезок от 0123456789... если я введу допустим 123 то он должен выдать что является отрезком 0123456789... если я введу например 134 или 023 или 891 и т.д... то он соответственно не является отрезком 0123456789...
 

hosm

* so what *
18.05.2009
2 442
6
#2
Можно через строки вариант с помощью
#include <string.h>
char *strstr(const char *s1, const char *s2);
The strstr() function shall locate the first occurrence in the string pointed to by s1 of the sequence of bytes (excluding the terminating null byte) in the string pointed to by s2.
RETURN VALUE
Upon successful completion, strstr() shall return a pointer to the located string or a null pointer if the string is not found.
If s2 points to a string with zero length, the function shall return s1.
 
M

Miller85

#4
Проблема в том что не могу сообразить как это сделать... Помогите плиз надо до 16 часов сделать а там зачет
 
I

ierofant

#5
Ещё есть более C++-овый вариант с алгоритмом std::search:
C++:
#include <iostream>
#include <algorithm>

int main ()
{
std::string str1, str2;
std::cout << "Введите числовой отрезок: ", std::cin >> str1;
std::cout << "Введите часть отрезка: ", std::cin >> str2;

if (std::search (str1.begin (), str1.end (), str2.begin(), str2.end ()) != str1.end ()) std::cout << "Часть отрезка входит в исходный отрезок" << std::endl;
else std::cout << "Часть отрезка не входит в исходный отрезок" << std::endl;

return 0;
}
 

lazybiz

Well-known member
03.11.2010
1 339
0
#6
Это сложно?

C++:
#include <iostream.h>

char *	A = "0123456789";
char *	B = "456";

int main()
{
for ( int i = 0; i < strlen( A ) - strlen( B ); i++ ) {
if ( !strncmp( &A[i], B, strlen( B ) ) ) {
cout << "ok" << endl;
return 1;
}
}
cout << "xep" << endl;
return 0;
}
 
M

Miller85

#7
Чо то не один не работает... Не дает скомпилировать... У ierofant выдает ошибку на >>... у тебя lazybiz просит какойто прототип на strlen( A ) и !strncmp
 
I

ierofant

#8
"У ierofant выдает ошибку на >>"

В какой именно строке?
 
M

Miller85

#9
std::cout << "Введите числовой отрезок: ", std::cin >> str1;
std::cout << "Введите часть отрезка: ", std::cin >> str2;
 
I

ierofant

#12
У меня добавь #include <string>

Добавлено: И вообще с недостающими заголовочниками мог бы и сам разобраться. И так всё на блюдечке принесли..
 
M

Miller85

#14
Такой вопрос у меня С++ 3.1 не понимает библиотеку #include <algorithm>... Какой можно заменить альтернативой... Просто зачет и работу я буду сдавать именно в С++ 3.1?
 
I

ierofant

#15
Что такое C++ 3.1 ? Такого стандарта не существует. Есть стандарты C++98, С++03, C++0x.
Вы, наверно, имеете в виду компилятор Borland С++ 3.1. Так он был выпущен ещё в 1992 году, ещё для принятия первого стандарта. Он настолько стар, что не поддерживает ни один официальный стандарт, и вашему учебному заведению должно быть стыдно пользоваться им.
algorithm - входит в стандартную поставку к любому компилятору начиная с C++98. Но в те далёкие времена его не существовало. Вам придётся обходится функциями унаследованными от языка C. Смотрите вариант lazybiz.

Добавлено: Или как OKEN, советовала функцию strstr, которая так же унаследована от языка C и очень похожа по своему назначению на std::search.
 
M

Miller85

#16
Понял... Не могу разобраться по варианту lazybiz как за место В Вставить отрезок введенный пользователем... Подскажи
 
I

ierofant

#17
Вопросы у тебя, конечно... Хоть немного бы книжки почитал, что ли.. Вот, я через strstr сделал.
C++:
#include <iostream>
#include <string>
#include <string.h>

int main ()
{

std::string str1, str2;
std::cout << "Введите числовой отрезок: ", std::cin >> str1;
std::cout << "Введите часть отрезка: ", std::cin >> str2;

if (strstr (str1.c_str (), str2.c_str ())) std::cout << "Часть отрезка входит в исходный отрезок" << std::endl;
else std::cout << "Часть отрезка не входит в исходный отрезок" << std::endl;

return 0;
}
 

lazybiz

Well-known member
03.11.2010
1 339
0
#19
C++:
#include <iostream.h>
#include <string.h>

int main()
{
char	A[256];
char	B[64];
cout << "Введите числовой отрезок: "; cin >> A;
cout << "Введите часть отрезка: "; cin >> B;
for ( int i = 0; i < strlen( A ) - strlen( B ); i++ ) {
if ( !strncmp( &A[i], B, strlen( B ) ) ) {
cout << "Часть отрезка входит в исходный отрезок" << endl;
return 1;
}
}
cout << "Часть отрезка не входит в исходный отрезок" << endl;
return 0;
}