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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
#1

Предложение, в котором больше всего знаков препинания - C++

09.04.2011, 13:14. Просмотров 1513. Ответов 2
Метки нет (Все метки)

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

Подскажите, пожалуйста, как попроще сделать. А то никак не могу сообразить.

Я придумал вот, что:
1) Увеличивать счетчик знаков препинания, когда они встречаются.
2) Ввести 2 переменные максимума знаков (для предыдущего предложения и текущего).
3) Если нашелся конец предложения (! ? .), то записываем его в другой файл (пока хотя бы в другой файл, потом уже с выводом разбираться).

Вот как-то так. Только я не могу связать эти 3 пункта воедино, помогите, пожалуйста. Третий пункт нужно делать, когда предложение оказалось с максимальным количеством знаком, т.е. (max1 < max2), или же (max1 = max2), если в текущем и предыдущем предложениях одинаковое кол-во знаков. Но как сделать так, чтобы max1 соответствовало предыдущему, а max2 - текущему предложению? Ведь компилятор этого не знает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 13:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Предложение, в котором больше всего знаков препинания (C++):

Дано предложение без знаков препинания - C++
Дано предложение без знаков препинания. Составить программу определения количества слов, начинающихся с гласной буквы. Добавлено через...

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

Двоичные файлы.Дано предложение.Создать файл и вывести в него все символы этого предложения,отличные от знаков препинания.Вывести содержимое на экран. - C++
плллиииз =)

Найти и напечатать слово, в котором содержится больше всего символов “А” - C++
Дан текст, который содержит буквы и пропуски. Найти и напечатать слово, в котором содержится больше всего символов “А”. Словом считать...

Определить номер слова в котором больше всего гласных букв - C++
1. Определить номер слова в котором больше всего гласных букв 2. Найти самое короткое слово в файле F

найти номер курса на котором больше всего мужчин(пол указывается буквой Ч (чоловiк) или Ж (жiнка)). - C++
Всем привет! Дан файл с &quot;базой данных&quot; нужно его прочитать и найти номер курса на котором больше всего мужчин(пол указывается буквой Ч...

2
igorrr37
1711 / 1339 / 160
Регистрация: 21.12.2010
Сообщений: 2,036
Записей в блоге: 9
09.04.2011, 17:18 #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
#include<iostream>
#include<fstream>
#include<algorithm>
#include<iterator>
#include<cctype>
#include<string>
#include<cstring>
 
int main(){
    std::fstream fs("1.txt");
    if(!fs){std::cerr<<"File not found\n"; return 1;}
    std::string text((std::istreambuf_iterator<char>(fs)), std::istreambuf_iterator<char>()), delims="!?.";
    int couPunct=0, couTmp;
    std::vector<std::string> sents;
    for(char* p=strtok(&text[0], &delims[0]); p; p=strtok(NULL, &delims[0])){
        while(isspace(*p))++p;
        couTmp=std::count_if(p, p+strlen(p), [](char val){return ispunct(val);});
        if(couTmp==couPunct){
            sents.push_back(p);
        }
        else if(couTmp>couPunct){
            couPunct=couTmp;
            sents.clear();
            sents.push_back(p);
        }
    }
    std::cout<<couPunct<<"\n";
    std::copy(sents.begin(), sents.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    fs.close();
    return 0;
}
1
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
09.04.2011, 17:46  [ТС] #3
igorrr37, а я таких функций даже и не знаю, вообще непонятно, что делает программа Мне бы обычный с.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2011, 17:46
Привет! Вот еще темы с ответами:

1. Скопировать из файла F1 в файл F2 строки, которые не содержат слова, начинающиеся на одну букву 2. Определить номер слова в котором больше всего г - C++
1. Скопировать из файла F1 в файл F2 строки, которые не содержат слова, начинающиеся на одну букву 2. Определить номер слова в котором...

Расстановка знаков препинания - C++
По правилу расстановки знаков препинания перед каждым знаком препинания пробел отсутствует, а после него обязательно стоит пробел. Учитывая...

Удаление знаков препинания - C++
Удалить в строке все знаки препинания. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; void...

Кол-во знаков препинания и букв в строке - C++
Требуется подсчитать кол-во букв и знаков препинания в строке, но программа упорно не хочет считать буквы, выдаёт кол-во равное нулю. В чём...


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

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

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