0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 4
1

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

09.10.2012, 17:41. Показов 2504. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать программу
Вот условие:
Нужно определить количество предложений в тексте(текст вводить самому надо).Вывести на экран предложение имеющее больше всего слов.
Буду очень благодарен за помощь!

Добавлено через 20 часов 2 минуты
У меня не Ну хоть кто-то(
У меня не получаеться...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2012, 17:41
Ответы с готовыми решениями:

Найти и вывести на экран самое маленькое число-палиндром, имеющее больше 40 делителей
Здравствуйте! Только начал изучать с++ и получил такое вот задание: Найти и вывести на экран...

Вывести на экран новое предложение с обратным порядом слов
Ввести предложения. создать и вывести на экран новое предложение с обратным порядком слов.

Вывести на экран строку матрицы, в которой больше всего заданных пользователем двубуквенных сочетаний
Двумерная матрица символов содержит набор строк. Вывести на экран строку, в которой больше всего...

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

9
167 / 166 / 46
Регистрация: 10.10.2010
Сообщений: 725
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++;
}
вот вы и посчитали сколько предложений.Сколько предложений - столько же и знаков окончания предложения.
Добавьте еще проверку на восклицательный знак и знак вопроса.
0
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 4
10.10.2012, 00:12  [ТС] 3
Цитата Сообщение от Rexer Посмотреть сообщение
Предложение это куча слов и на конце точка.
Вводите текст в массив

вот вы и посчитали сколько предложений.Сколько предложений - столько же и знаков окончания предложения.
Добавьте еще проверку на восклицательный знак и знак вопроса.
всё равно не выходит...
либо не находит либо неправильно считает(
0
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
10.10.2012, 00:38 4
Envy8, кидайте сюда свой код
0
5498 / 4893 / 831
Регистрация: 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;
}
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
10.10.2012, 09:26 6
alsav22 а если предложение заканчивается вопросительным или восклицательным знаком?
0
5498 / 4893 / 831
Регистрация: 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;
}
0
320 / 270 / 128
Регистрация: 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;
}
1
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 4
10.10.2012, 20:14  [ТС] 9
Добавлено через 9 минут
Все спасибо большое!
Очень помогли)

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

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

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

Добавлено через 19 минут
А что если троеточие?
0
5498 / 4893 / 831
Регистрация: 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;
}
1
11.10.2012, 09:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2012, 09:34
Помогаю со студенческими работами здесь

На какую из букв начинается больше всего слов в тексте
Добрый день! Помогите, пожалуйста. Задача на C++: С клавиатуры вводится произвольная текстовая...

Посчитать и вывести на экран количество слов в файле, первую половину слов вывести в другой файл
3. Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество слов...

Число, имеющее больше всего делителей
Даны два натуральных числа M и N. Составить функцию, возвращающую в , число, имеющее больше всего...

Текстовый файл. Вывести номер строки в которой больше всего слов и кол-во этих слов
в текстовом файле в нескольких строках записаны слова через запятую, вывести номер строки в которой...


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

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

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