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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
09.04.2011, 13:14     Предложение, в котором больше всего знаков препинания #1
Добрый день. Нужно написать программу, которая читает текст из файла и выводит предложения(е), где больше всего знаков препинания.

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

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

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

Найти и напечатать слово, в котором содержится больше всего символов “А” C++
Двоичные файлы.Дано предложение.Создать файл и вывести в него все символы этого предложения,отличные от знаков препинания.Вывести содержимое на экран. C++
Дано предложение без знаков препинания C++
Вывести на экран предложение, имеющее больше всего слов C++
C++ найти номер курса на котором больше всего мужчин(пол указывается буквой Ч (чоловiк) или Ж (жiнка)).
1. Скопировать из файла F1 в файл F2 строки, которые не содержат слова, начинающиеся на одну букву 2. Определить номер слова в котором больше всего г C++
Определить номер слова в котором больше всего гласных букв C++
Удаление знаков препинания C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
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;
}
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
09.04.2011, 17:46  [ТС]     Предложение, в котором больше всего знаков препинания #3
igorrr37, а я таких функций даже и не знаю, вообще непонятно, что делает программа Мне бы обычный с.
Yandex
Объявления
09.04.2011, 17:46     Предложение, в котором больше всего знаков препинания
Ответ Создать тему
Опции темы

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