ИП
Ирина Панина

Поиск наиболее длинного слова в строке! С++

Помогите подправить код, пожалуйста! Сейчас в данной программе идет поиск слова с наибольшей длинной, но на выходе я пишу не само слово, а сколько символов содержит это слово, почему-то работает некорректно. Помогите найти тут ошибку и подправить код, чтобы на выходе он выдавал мне еще само слово.
#include
#include
#include
#include

using namespace std;

int main()
{
char str [10];
printf ("string? ");
fgets(str, 11, stdin);
int max, test, length;
test=0;
for (length=0; (length<11) && (str[length]!=0); length++) max++; //пусть первое слово - максимальное

for (length=0; length<11; length++){ //сравниваю остальные слова с первым и если какое-то из них больше, то записываю его
if (str[length]==0) {
if (test>max) {
max=test;
test=0;
}
else test=0;

}
else test++;
}
printf("%d", max);

getchar();
}

ОМ
Ольга Машинкина

1. Твоя программа вообще не работоспособна, хотя она и компилируется, но в результате выдает полную херню. В вопросе http://otvet.mail.ru/question/90460863 есть "Введите строку не более 200 символов\n", а тут у тебя массив str[10]; из десяти чаров. Какое нахрен предложение в 10 символов?

2. Либо вы изучаете С++ и используете все "достижения цивилизации" типа string и т. д. и пишете на С++:

#include
#include

using namespace std;

int main() {
string s, w, m, d = " " /* добавить разделителей по вкусу */ ;
cout << "string? ";
getline(cin, s);
int b, e = 0;
while ((b = s.find_first_not_of(d, e)) != s.npos) {
e = s.find_first_of(d, b);
w = s.substr(b, e - b);
if (w.size() > m.size()) m = w;
}
cout << "max. length word: " << m << endl;
}

3. Либо вы изучаете Си в каком-нибудь курсе системного программирования и, используя стандартную библиотеку Си, копошитесь в Си-строках:

#include
#include

main() {
char s[201], *w, *m = "", d[] = " \n" /* добавить разделителей по вкусу */ ;
printf("string? ");
fgets(s, 201, stdin);
for (w = strtok(s, d); w != NULL; w = strtok(NULL, d)) if (strlen(w) > strlen(m)) m = w;
printf("max. length word: %s\n", m);
}

Если ваш препод не понимает разницу между Си и С++, то надо валить из этого учебного заведения, или требовать всей группой, чтобы вам поменяли преподавателя.

4. Ну и четвертый вариант: вас пытаются обучить алгоритмам и программированию. Тут вам не подойдет Си и С++. Для начального обучения программированию школьников и студентов первых курсов был придуман язык Паскаль и другие языки, которые у нас менее распространены. Если в вашем учебном заведении учебную программу составляли мудаки, то опять же, лучше валить оттуда.

Похожие вопросы
Как прописать строку поиска на сайте
Помогите. Как найти самое длинное слово в строке на С?
Поиск строки и вывод номера.
Дана строка символов. Определить длину строки. Если длина строки <=20, то найти в строке порядковый номер символа *
Поиск одинаковых слов в строке в С++, помогите пожалуйста, уже несколько дней мучаюсь .
Поиск одинаковых слов в строке в С++, помогите пожалуйста, уже несколько дней мучаюсь .)
Ввести строку, вывести самое длинное слово. с++. Ввести строку, вывести самое длинное слово. с++
Вводит с клавиатуры строку длиной не более 200 символов, ищет в ней самое длинное слово и выводит его.
[PHP]Поиск номера строки по слову
Как уменьшить длину строки поиска?