• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Символы

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

Miller85

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

hosm

Можно через строки вариант с помощью
#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

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

ierofant

Ещё есть более 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;
}
 
L

lazybiz

Это сложно?

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

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

Miller85

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

ierofant

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

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

Miller85

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

ierofant

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

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

Miller85

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

ierofant

Вопросы у тебя, конечно... Хоть немного бы книжки почитал, что ли.. Вот, я через 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;
}
 
L

lazybiz

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;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!