Символы

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

Miller85

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

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#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;
 
M

Miller85

Гость
#11
Лудче что бы работала и в С++3.1 если не сложно
 
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;
}