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

Вывести на экран предложение, имеющее больше всего слов - C++

Восстановить пароль Регистрация
 
Envy8
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 4
09.10.2012, 17:41     Вывести на экран предложение, имеющее больше всего слов #1
Помогите написать программу
Вот условие:
Нужно определить количество предложений в тексте(текст вводить самому надо).Вывести на экран предложение имеющее больше всего слов.
Буду очень благодарен за помощь!

Добавлено через 20 часов 2 минуты
У меня не Ну хоть кто-то(
У меня не получаеться...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 17:41     Вывести на экран предложение, имеющее больше всего слов
Посмотрите здесь:

Двоичные файлы.Дано предложение.Создать файл и вывести в него все символы этого предложения,отличные от знаков препинания.Вывести содержимое на экран. C++
C++ Предложение, в котором больше всего знаков препинания
C++ Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение.
Подсчитать и вывести на экран число слов в ней, а затем и каждое отдельное слов C++
C++ Дано предложение. Нужно вывести на экран только первое слово предложения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
09.10.2012, 17:56     Вывести на экран предложение, имеющее больше всего слов #2
Предложение это куча слов и на конце точка.
Вводите текст в массив
C++
1
char text[100];
далее идете по нему
C++
1
2
3
4
5
6
int countPreld = 0;
for(int i = 0; i < 100; i++)
{
if(text[i] == '.' || text[i] == '!' || text[i] == '!')
countPredl++;
}
вот вы и посчитали сколько предложений.Сколько предложений - столько же и знаков окончания предложения.
Добавьте еще проверку на восклицательный знак и знак вопроса.
Envy8
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 4
10.10.2012, 00:12  [ТС]     Вывести на экран предложение, имеющее больше всего слов #3
Цитата Сообщение от Rexer Посмотреть сообщение
Предложение это куча слов и на конце точка.
Вводите текст в массив

вот вы и посчитали сколько предложений.Сколько предложений - столько же и знаков окончания предложения.
Добавьте еще проверку на восклицательный знак и знак вопроса.
всё равно не выходит...
либо не находит либо неправильно считает(
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
10.10.2012, 00:38     Вывести на экран предложение, имеющее больше всего слов #4
Envy8, кидайте сюда свой код
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2012, 02:34     Вывести на экран предложение, имеющее больше всего слов #5
Подсчёт количества предложений в тексте.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <algorithm>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Введите текст: ";
    string str;
    getline(cin, str);
 
    cout << count(str.begin(), str.end(), '.') << endl;
 
    system("pause");
    return 0;
}
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
10.10.2012, 09:26     Вывести на экран предложение, имеющее больше всего слов #6
alsav22 а если предложение заканчивается вопросительным или восклицательным знаком?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2012, 10:41     Вывести на экран предложение, имеющее больше всего слов #7
Цитата Сообщение от David Sylva Посмотреть сообщение
alsav22 а если предложение заканчивается вопросительным или восклицательным знаком?
ТС же написал, что текст вводить самому надо. Пусть заканчивает только точками.

Добавлено через 19 минут
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 <iostream>
#include <string>
#include <algorithm>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Введите текст: ";
    
    string str;
    getline(cin, str);
    
    string s = ".!?";
    int n = 0;
    for (int i = 0; i < s.size(); i++)
    {
       n += count(str.begin(), str.end(), s[i]);
    }
    cout << n << endl;
 
    system("pause");
    return 0;
}
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
10.10.2012, 12:26     Вывести на экран предложение, имеющее больше всего слов #8
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string text = "", result;
    unsigned count = 0, maxCount = 0;
    bool endSent = true, endWord = true;
    char c;
    do {
        switch (c = cin.get()) {
        case '.': case '!':
        case '?': case '\n':
            if (!endSent) {
                if (count > maxCount) {
                    result = text;
                    maxCount = count;
                }
                count = 0;
                text.clear();
                endSent = true;
            } else
                result += c;
            endWord = true;
            continue;
 
        case ' ': case '\t':
            if (!endWord) {
                count++;
                endWord = true;
            }
            break;
 
        default:
            endSent = endWord = false;
        }
        text += c;
    } while (c != '\n');
    cout << result;
}
Envy8
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 4
10.10.2012, 20:14  [ТС]     Вывести на экран предложение, имеющее больше всего слов #9
Добавлено через 9 минут
Все спасибо большое!
Очень помогли)

если не сложно напишите комментарии программе)

Добавлено через 11 минут
Но она не показывает количество предложений(

Добавлено через 1 час 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
ТС же написал, что текст вводить самому надо. Пусть заканчивает только точками.

Добавлено через 19 минут
А что если троеточие?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2012, 09:34     Вывести на экран предложение, имеющее больше всего слов
Еще ссылки по теме:

C++ сколько в предложении слов, состоящих не более, чем из n букв. Исходное предложение и полученный результат вывести на печать
C++ как вывести содержимое всего файла на экран? принтер?и файл?
Строка, введенная пользователем, состоит из слов, разделенных запятой. Подсчитать и вывести на экран количество введенных слов C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 09:34     Вывести на экран предложение, имеющее больше всего слов #10
С выводом количества предложений, и предложения с наибольшим количеством слов.
Код
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
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Введите текст: ";
    
    string str; // строка для предложения
    vector <string> vec; // вектор для строк с предложениями
    int max = 0; // максимальное количество слов в предложении
    int indmax = 0; // индекс в векторе, по которому находится предложение
                    // с максимальным количеством слов
    int c = 0; // счётчик слов
    int i = 0; // индекс вектора
    
    while (true)
    {
        string temp; 
        cin >> temp; // читается слово
        str += temp; // добавляется в строку
        c++;
        // если считано в строку предложение
        if (*(str.end() - 1) == '.' || *(str.end() - 1) == '!' || *(str.end() - 1) == '?')
        {
            vec.push_back(str); // помещаем предложение в вектор
            
            if (c > max) // если количество слов в предложении больше
            {
                max = c; // запоминаем новое максимальное количество слов в предложении
                indmax = i; //запоминаем индекс вектора, где находится такое предложение
            }
            str.clear(); // очищаем строку для следующего предложения
            c = 0; // обнуляем счётчик слов
            i++;
        }
        else str += ' '; // если не конец предложения, то добавляем после слова пробел
        if (cin.peek() == '\n') break; // если конец ввода, выходим из цикла
    }
    
    cout << "Количество предложений в тексте = " << vec.size() << endl;
    cout << "Предложение с наибольшим количеством слов (" << max << "): " << vec[indmax] << endl;
    
    system("pause");
    return 0;
}


Добавлено через 1 час 11 минут
Вариант, когда в тексте - нескольно предложений с одинаковым количеством слов:
Код
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
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Введите текст: ";
    
    string str; // строка для предложения
    vector <string> vec; // вектор для строк с предложениями
    vector <int> vind; // вектор для индексов предложений с одинаковым количеством слов
    int max = 0; // максимальное количество слов в предложении
    int indmax = 0; // индекс в векторе, по которому находится предложение
                    // с максимальным количеством слов
    int c = 0; // счётчик слов
    int i = 0; // индекс вектора
    
    while (true)
    {
        string temp; 
        cin >> temp; // читается слово
        str += temp; // добавляется в строку
        c++;
        // если считано в строку предложение
        if (*(str.end() - 1) == '.' || *(str.end() - 1) == '!' || *(str.end() - 1) == '?')
        {
            vec.push_back(str); // помещаем предложение в вектор
            
            if (c > max) // если количество слов в предложении больше
            {
                max = c; // запоминаем новое максимальное количество слов в предложении
                indmax = i; //запоминаем индекс вектора, где находится такое предложение
                vind.clear(); // очищаем вектор с индексами предложений с одинаковым количеством слов
                vind.push_back(i); // запоминаем индекс
            }
            else if (c == max) vind.push_back(i); // если количество слов равно максимальному, запоминаем индекс
            str.clear(); // очищаем строку для следующего предложения
            c = 0; // обнуляем счётчик слов
            i++;
        }
        else str += ' '; // если не конец предложения, то добавляем после слова пробел
        if (cin.peek() == '\n') break; // если конец ввода, выходим из цикла
    }
    
    cout << "Количество предложений в тексте = " << vec.size() << endl;
    
    if (vind.empty() || vind.size() == 1) // если предложений, с одинаковы количеством слов, нет
    cout << "Предложение с наибольшим количеством слов (" << max << "): " << vec[indmax] << endl;
    else // если есть несколько предложений с одинаковым количеством слов
    {
        cout << "Предложения с наибольшим количеством слов (" << max << "):\n";
        for (int i = 0; i < vind.size(); i++)
             cout << vec[vind[i]] << endl;
    }
    
    system("pause");
    return 0;
}
Yandex
Объявления
11.10.2012, 09:34     Вывести на экран предложение, имеющее больше всего слов
Ответ Создать тему
Опции темы

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