Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/47: Рейтинг темы: голосов - 47, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 01.02.2017
Сообщений: 25
1

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

22.11.2017, 19:30. Показов 8763. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача- Вывести самое длинное слово и его порядковый номер в исходной строке (Признак конца строки - символ «\n» (перевод строки). Строка состоит из слов, разделенных пробелами)

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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
int main() 
{
    char S[20];
    int n, i, k, kol, max = 0, y,g,j=0;
    cin.getline(S, 20);
    i = 0;
    while (S[i] != '')
    {
        if (S[i] == ' ')
            {
            i++;
            }
        else
            {
            n = i;
            do
                {
                    i++;
                } 
            while ((S[i] != ' ') && (S[i] != ''));
            k = i;
            kol = k - n;
            if (kol > max)
            {
                j++;
                y = n;
                g = k;
                max = kol;
            }
        }
    }
        for (n=y; n<g; n++)
    {
        cout « S[n];
    }
    cout « " - samoe dlinnoe slovo" « endl;
    cout « " ego nomer v spiske - " «j « endl;
    system("pause");
    return 0;
}
При любом вводе слов в строке вывод один - он указывает что первое слово самое большое и его позиция-1. Даже если ввести 'dom mama dacha'
Помогите найти ошибку пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2017, 19:30
Ответы с готовыми решениями:

Ввести строку с клавиатуры. Найти самое длинное слово в строке и самое короткое
Ввести строку с клавиатуры. Найти самое длинное слово в строке и самое короткое. Слова...

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

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

Найти самое длинное и самое короткое слово в строке
Вообщем, дано задание найти самое длинное и самое короткое слово в строке. Все хорошо работает, но,...

10
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,877
22.11.2017, 20:56 2
Цитата Сообщение от Murrel19 Посмотреть сообщение
(S[i] != '')
это вообще скомпилировалось?
Особо не смотрел, но, похоже, вы не обнуляете длину после предыдущего слова.
На всякий случай для отладки для каждого слова выводите это слово и его длину.
0
0 / 0 / 0
Регистрация: 01.02.2017
Сообщений: 25
22.11.2017, 23:12  [ТС] 3
Да, это просто из MVS так скопировалось
Я как понял ошибка в том, что у меня не сохраняется самое большое слово, то есть нужен второй массив
Но как сохранить большое слово в втором массиве и вывести его я без понятия
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,877
23.11.2017, 08:23 4
Зачем второй массив? Нужно хранить указатель на начало самого длинного слова и его длину.
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
23.11.2017, 10:36 5
Лучший ответ Сообщение было отмечено Murrel19 как решение

Решение

Murrel19, здравствуйте. Вот еще вариант решения данной задачи:

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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    string s, word, res;
    int max, k, num;
    cout << "Enter a string:" << "\n";
    getline(cin, s);
    stringstream str(s);
    max = k = 0;
    while (str >> word)
    {
        k++;
        if (word.size() > max)
        {
            max = word.size();
            res = word;
            num = k;
        }
    }
    cout << "The longest word in the string: " << res << "\n";
    cout << "The longest word's sequence number: " << num << "\n";
    cin.get();
    return 0;
}
1
0 / 0 / 0
Регистрация: 01.02.2017
Сообщений: 25
26.11.2017, 15:26  [ТС] 6
Что такое
C++
1
#include <bits/stdc++.h>
и
C++
1
 stringstream str(s);
?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
27.11.2017, 19:23 7
Лучший ответ Сообщение было отмечено Murrel19 как решение

Решение

Цитата Сообщение от Murrel19 Посмотреть сообщение
#include <bits/stdc++.h>
Здравствуйте! Извините, что долго не отвечал. Эта библиотека обычно подключается на олимпиадах по программированию, чтобы не тратить время на подключение других библиотек. Вы можете заменить ее на стандартные библиотеки и все также будет работать.
Цитата Сообщение от Murrel19 Посмотреть сообщение
stringstream str(s);
Так мы помещаем строку в поток. Это эквивалентно считыванию строки из файла, но работает в консоли.
1
0 / 0 / 0
Регистрация: 01.02.2017
Сообщений: 25
29.11.2017, 01:28  [ТС] 8
Наверно глупый вопрос, но можно поподробнее про word.size, и откуда он там появляется?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
29.11.2017, 11:00 9
Murrel19, здравствуйте!
C++
1
word.size()
- это просто длина слова.
0
0 / 0 / 0
Регистрация: 01.02.2017
Сообщений: 25
05.12.2017, 21:21  [ТС] 10
Цитата Сообщение от Fixer_84 Посмотреть сообщение
while (str >> word)
здесь вы скорее всего имели в виду str > word? ибо << и >> это оператор сдвига
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
05.12.2017, 22:27 11
Murrel19, здравствуйте! Нет, я имел ввиду операцию считывания из потока, а именно оператор сдвига ">>", так как поместил строку в поток:
C++
1
stringstream str(s);
0
05.12.2017, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2017, 22:27
Помогаю со студенческими работами здесь

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

Найти самое длинное слово в строке
помогите написать программу (с учетом условия выполнения) Написать программу, которая будет...

Найти самое длинное слово в строке
Здравствуйте! Нужно найти самое длинное слово в строке, введённой с клавиатуры. Желательно самый...

Найти самое длинное слово в строке
Найти самое длинное слово, а затем вывести его следующим образом: первый раз – на новой строке,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru