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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вращение треугольника относительно центра http://www.cyberforum.ru/cpp-beginners/thread666573.html
Смотрел похожие темы. Исходники. Но так и не догнал, почему у меня фигура вращается не просто по кругу, а ещё и переворачивается! 0_о Что не так? Где косяк сделал? Прошу помощи знающих. main.cpp:...
C++ Перевести JS на C++ Есть js. Он выполняет некие манипуляции и на выходе должен давать строку. Этот js парситься со страницы, входные параметры в нём каждый раз новые. Мне нужно перевести этот js на с++. У самого у меня... http://www.cyberforum.ru/cpp-beginners/thread666568.html
Составить программу вычисления значения функции Y=x^5+8x^4+10, для х, изменяющегося от а до b с шагом b C++
Составить программу вычисления значения функции Y=x^5+8x^4+10, для х, изменяющегося от а до b с шагом b.С помощу циклов
C++ Быстрое преобразование Хартли
Need Help! Need to correct this super Program for Fast Hartley Transform! Нужна помощь! Необходимо подправить эту супер программу для выполнения быстрого преобразования Хартли! ...
C++ Разработайте функцию вычисления n-го члена рада Фибоначчи http://www.cyberforum.ru/cpp-beginners/thread666547.html
Программа, которая позволяет найти предел отношения двух последовательных чисел ряда Фибоначчи с заданной точностью. Ряд Фибоначчи: 1 1 2 3 5 8 13 21 и т.д. При разработке данной программы и во...
C++ Учимся вместе Ребят, всем привет! Недавно понял что жизнь моя скучна и уныла, и что пора ее чем нибудь разнообразить, и выбор пал на с++. Объяснить почему именно си - не могу, просто где то слышал, где то читал, и... подробнее

Показать сообщение отдельно
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 09:34
С выводом количества предложений, и предложения с наибольшим количеством слов.
Код
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;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru