Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Canican
0 / 0 / 0
Регистрация: 20.06.2016
Сообщений: 8
#1

Найти максимальное слово в строке - C++

20.06.2016, 11:22. Просмотров 292. Ответов 2
Метки нет (Все метки)

Программа правильно определяет длину слов, но почему-то она проверяет только первое слово, но дальше по строке не идет. Причем, если убрать k=0; она проверяет все слова. Надеюсь на вашу помощь и прошу прощения за кривокод.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h> 
#include <string.h> 
#include <iostream>
using namespace std;
int main() 
{ 
     int i,ii=0,k=0,maxk=0,n,slovo=0; 
     char str[] = " string this is Beautiful";
     printf("%s\n",str); 
     n = strlen(str); 
     for(i=0;i<n-1;i++) 
     { 
          if(str[i]!=' ') 
          {  
               k++; 
          } 
          
          else if(str[i]==' ') 
          { 
               if(k>maxk)
               {
                    maxk=k;
                    ii=i;    
                    printf("ii=%i maxk=%i\n",ii,maxk);
               }
               k=0;
          }
     } 
     printf("\nMax dlina slova: %i\nSlovo max dliny: ",maxk);
     for(i=ii-maxk;i<ii;i++)
          printf("%c",str[i]); 
cin.get();
return 0; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2016, 11:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти максимальное слово в строке (C++):

Максимальное слово в строке - C++
Всем привет! Не получается вывести максимальное слово в строке. Функцию strtok использовать нельзя! #include &quot;stdafx.h&quot; #include...

Найти слово "ТЕКСТ", если такое слово есть,то отпечатать его номер в строке. - C++
В символьной строке, содержащей не более 80 символов, каждые два соседних слова разделены одним пробелом, строка заканчивается символом...

В каждой строке найти минимальный элемент, затем среди них найти максимальное и вывести на экран индекс этого элемента - C++
Здравствуйте! Помогите, пожалуйста, с задачей: В двумерном массиве все числа различны. В каждой строке найти минимальный элемент, затем...

Найти слово, один и тот же символ в котором встречается максимальное число раз - C++
длина входной строки не превосходит 300 символов, она вводится с консоли. Вам необходимо вывести на консоль либо преобразованную строку,...

Найти минимальное|максимальное значение в каждой строке матрицы - C++
Осталось 30мин помогите Дана матрица размером 5 x 10 . Найти минимальное и максимальное значение в каждой строке столбце C++

Задан массив А(4,5). Найти максимальное значение в каждой строке. - C++
Задан массив А(4,5). Найти максимальное значение в каждой строке.

2
shilko2013
244 / 221 / 118
Регистрация: 02.04.2016
Сообщений: 855
Завершенные тесты: 1
20.06.2016, 12:04 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <iostream>
using namespace std;
int main() {
 
    int max = -1, k = 0;
    string s = "string this is Beautiful";
    for (int i = 0; i < s.length(); i++) {
        if ((s[i] == ' ') || (i == s.length()-1)) {
            cout << "Длина = " << k << endl;
            if (k > max)
                max = k;
            k = 0;
        }
        else k++;
    }
    cout << "Максимальная длина = "<< max;
 
    return 0;
}
0
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 449
20.06.2016, 12:18 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h> 
#include <string.h> 
#include <iostream>
using namespace std;
int main()
   {
   size_t max = 0;
   char str[] = " string this is Beautiful";
   char *word = nullptr;
   char *maxWord = nullptr;
   cout << str << endl;
   word = strtok(str, " ,.-!?");
   while (word != nullptr)
      {
      auto tmpLen = strlen(word);
      if (max < tmpLen)
         {
         max = tmpLen;
         maxWord = word;
         }
      word = strtok(nullptr, " ,.-!?");
      }
   cout << "\nMax dlina slova: " << max << "\nSlovo max dliny: " << maxWord;
   cin.get();
   return 0;
   }
Добавлено через 6 минут
shilko2013 если уж писать через string то я бы использовал чего то типа следующего:
C++
1
2
3
4
5
6
7
8
9
vector<string> split(const string &s, char delim) {
    stringstream ss(s);
    string item;
    vector<string> tokens;
    while (getline(ss, item, delim)) {
        tokens.push_back(item);
    }
    return tokens;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2016, 12:18
Привет! Вот еще темы с ответами:

Найти максимальное число в матрице в строке и столбце одновременно - C++
опишите в словах, пожалуйста, программу нахождения макс числа в матрице в строке и столбце одновременно. прошу просто направление дать...

В заданной строке найти минимальное и максимальное целое число - C++
В заданной строке найти минимальное и максимальное целое число (числа могут быть отрицательными, в этом случае знак минус перед ними...

Найти минимальное|максимальное значение в каждой строке матрицы - C++
Помогите с задачей! язык С++ Дана матрица размера n×m. Найти минимальное1|максимальное2 значение в каждой строке3|столбце4.

Найти количество слов в строке; найти самое длинное слово, заканчивающееся на заданную букву - C++
Дана строка текста, в которой слова разделены пробелами. Необходимо: - вычислить количество слов в строке; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.