Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Canican
0 / 0 / 0
Регистрация: 20.06.2016
Сообщений: 1
20.06.2016, 11:22     Найти максимальное слово в строке #1
Программа правильно определяет длину слов, но почему-то она проверяет только первое слово, но дальше по строке не идет. Причем, если убрать 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; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2016, 11:22     Найти максимальное слово в строке
Посмотрите здесь:

Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки) C++
C++ Найти слово, один и тот же символ в котором встречается максимальное число раз
Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки). C++
Задан массив А(4,5). Найти максимальное значение в каждой строке. C++
Максимальное слово в строке C++
Найти минимальное|максимальное значение в каждой строке матрицы C++
C++ Найти минимальное|максимальное значение в каждой строке матрицы
C++ Найти максимальное число в матрице в строке и столбце одновременно

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shilko2013
 Аватар для shilko2013
237 / 214 / 115
Регистрация: 02.04.2016
Сообщений: 812
Завершенные тесты: 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;
}
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 427
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;
}
Yandex
Объявления
20.06.2016, 12:18     Найти максимальное слово в строке
Ответ Создать тему
Опции темы

Текущее время: 04:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru