Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
osminog18
0 / 0 / 1
Регистрация: 15.04.2017
Сообщений: 23
#1

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

17.04.2017, 21:35. Просмотров 464. Ответов 2
Метки нет (Все метки)

Вообщем, дано задание найти самое длинное и самое короткое слово в строке. Все хорошо работает, но, если мы зададим слова , отличающиеся только на одну букву, то самое длинное слово, программа пропускает(например я он они, короткое:я, а длинное: он.) Уже не первый день, не могу найти ошибку, подскажите пожалуйста


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
35
36
char str[100];
    cout<<"Введите слова: ";
    cin.getline(str, 100);
    int l=strlen(str);
    for(int i=0;i<l+1;i++) 
        {
            if(str[i]!=' ' && str[i]!='\0' )
                k++;// количество букв в слове для длинного
            else
           {
                    if(k>=max)
                {
                    max=k;  
                    cout<<max;
                    cout<<i;
                    j=i-max;// запоминаем индес длинного слова
                    cout<<j;
                    cout<<"Возможно длинное слово"<<endl;
                    max+=j;
                    /*for(int r = j;r<max+j; r++){
                        cout<<str[r];
                    }*/
                    for(int j;j<max;j++)
                        cout<<str[j];
                    cout<<endl; 
                }
                            k=0;
            }
         }
k=0;
cout<<"Длинное: "<<max;
    for(j;j<max;j++)
    {
        cout<<str[j];   
        k++;// cчитаем количество символов в длинном слове
    }

http://www.cyberforum.ru/cpp-beginners/thread1289776.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2017, 21:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти самое длинное и самое короткое слово в строке (C++):

Найти самое короткое и самое длинное слово в строке
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; #include...

Найти самое короткое и самое длинное слово в строке
Посмотрите на код, что не так пишу? #include &lt;iostream&gt; #include &lt;string.h&gt; ...

В заданной строке определить самое длинное и самое короткое слово
Ввести несколько строк,каждая из которых содержит некоторое количество слов.В...

Напечатать самое длинное и самое короткое слово в строке
Напечатать самое длинное и самое короткое слово в строке в С++

Напечатать самое длинное и самое короткое слово в строке
Прошу помочь с решением задачи. Задана строка, состоящая из символов....

2
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
17.04.2017, 22:24 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <sstream>
    string str;
    cout<<"Введите слова: ";
    getline(cin,str);
    istringstream ss(str);
    string small,tmp;
    ss>>small;
    string big=small;
    while(ss>>tmp)
    {
            if(tmp.size()<small.size())
                small=tmp;
            if(tmp.size()>big.size())
                big=tmp;
    }
    cout<<"Длинное: "<<big<<endl;
    cout<<"Короткое: "<<small<<endl;
0
osminog18
0 / 0 / 1
Регистрация: 15.04.2017
Сообщений: 23
19.04.2017, 17:55  [ТС] #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
    setlocale (LC_ALL,"Russian");
    int j,i,k=0,n,g,f;
    bool flag=true;
    int max=0,min=0;
    char str[100];
    cout<<"введите слова: ";
    cin.getline(str, 100);
    int l=strlen(str);
    for(int i=0;i<l+1;i++) 
        {
            if(str[i]!=' ' && str[i]!='\0' )
                k++;// количество букв в слове для длинного
            else
           {
                    if(k>=max)
                {
                    max=k;  
                    cout<<max;
                    cout<<i;
                    j=i-max;// запоминаем индекс длинного слова
                    cout<<j;
                    max+=j;
                    
                    
                    cout<<endl; 
                }
                            k=0;
            }
         }
k=0;
cout<<"Длинное: "<<max;
    for(j;j<max;j++)
    {
        cout<<str[j];   
        k++;//считаем количество символов в длинном слове
    }
        cout<<"\n";
    cout<<"Кроткое: ";
        for(int i=0;i<l+1;i++)
        {
            if(str[i]!=' ' && str[i]!='\0')
            {
                n++;// считаем количество слов в коротком
            }
            else 
            {
        if(k>n && flag == true) // флаг на проверку длинного слова
        {
            min=n;
            flag = false;
        }
        if(min>=n)  
    {
        min=n;
    g=i-n;
    }
        n=0;
            }
        }
        min+=g;
        for(g;g<min;g++)
        cout<<str[g];
        return 0;
}
Вот сам полный код(при компилляции, там остались цифры, т.к. найти проблему)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2017, 17:55
Привет! Вот еще темы с решениями:

Напечатать самое длинное и самое короткое слово в строке
. Напечатать самое длинное и самое короткое слово в этой строке. Вроде все...

В заданном предложении найти самое короткое и самое длинное слово
Строка вводится с клавиатуры. Нужно выполнить задание, не применяя функций...

Строки: найти самое короткое и самое длинное слово
прошу спосите меня.... Дана строка текста, в которой слова разделены...

Найти самое длинное и самое короткое слово в тексте
Всем доброго времени суток! В моем задание нужно найти самое длинное и самое...


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

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

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