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

Требуется определить строки, содержащие максимальное количество слов - C++

Восстановить пароль Регистрация
 
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
29.11.2011, 00:51     Требуется определить строки, содержащие максимальное количество слов #1
Строки текстового файла input.txt состоят из слов, разделенных одним или несколькими пробелами. Перед первым, а также после последнего слова строки пробелы могут отсутствовать. Требуется определить строки, содержащие максимальное количество слов. Если таких строк несколько, найти первые 10. Результат вывести на консоль в форме, удобной для чтения. Нет никаких ограничений ни на длину слова, ни на длину строки, ни на объем исходного файла.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 00:51     Требуется определить строки, содержащие максимальное количество слов
Посмотрите здесь:

C++ Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину.
Определить номер первой строки матрицы, в которой максимальное количество положительных элементов C++
Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. C++
программа которая в матрице меняет местами строки содержащие максимальное количество четных и нечетных элементов C++
Вывод на экран предложения, содержащие максимальное количество знаков пунктуации C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
29.11.2011, 18:15     Требуется определить строки, содержащие максимальное количество слов #2
Цитата Сообщение от Тина_Ливингстон Посмотреть сообщение
делать на с++
- ОК будет алгоритм с использованием ifstream и std::string
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
29.11.2011, 18:35  [ТС]     Требуется определить строки, содержащие максимальное количество слов #3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ОК будет алгоритм с использованием ifstream и std::string
Спасибо,буду ждать.
-=ЮрА=-
Заблокирован
Автор FAQ
29.11.2011, 18:53     Требуется определить строки, содержащие максимальное количество слов #4
Тина_Ливингстон, т.к. мне нужно какое-то время предлагаю пока Вам изучить данный пост
Строки в С++, не могу понять что неправильно в программе

Добавлено через 12 минут
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
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    bool bFlag = false;
    long nWords;
    long minlen;
    long nCount;
    string line;
    string str;
    stringstream ss;
    ifstream ifs("input.txt");
    if(!ifs)
        cout<<"Error open input.txt\n";
    else
    {
        while(getline(ifs,line))
        {
            nWords = 0;
            ss.str(line);
            while(ss>>str)
                nWords++;
            if(!bFlag)
            {
                minlen = nWords;
                bFlag  = true;
            }
            if(nWords < minlen)
                minlen = nWords;
            ss.clear();//ÂñòðÿõГ*ВёГ¬ ñòðèГ*ãïîòîê ïåðåä 
            //Г§Г*ïèõèâГ*Г*ГЁГҐГ¬ Гў Г*ГҐГЈГ® î÷åðåäГ*îé ñòðîêè
        }
        ifs.clear();//Òåïåðü Г±Г*Г¬ ГґГ*éëîâûé ïîòîê îáГ*óëÿåì
        ifs.seekg(0,ios::beg);
 
        nCount = 0;
        cout<<"min count of words in line : "<<minlen<<endl;
        cout<<"lines with min count of words\n";
        while(getline(ifs,line))
        {
            nWords = 0;
            ss.str(line);
            while(ss>>str)
                nWords++;
            if(nWords == minlen && (nCount++) < 10)
                cout<<nCount<<" "<<line<<endl;
            ss.clear();
        }
        ifs.close();
    }
    system("pause");
    return 0;
}
Файл input.txt
dshksg jhfg g dfjgd gfdg
fgd dfg fdgfg sdfgf
fdg lf fld fl fdl fd;
fdf fdd dfff fd
fdf ffff ffff ff ffffff
fdf lfld lfld ldfll ;d;f;; df;; ;dff

Вывод в консоль
min count of words in line : 4
lines with min count of words
1 fgd dfg fdgfg sdfgf
2 fdf fdd dfff fd
Для продолжения нажмите любую клавишу . . .

Добавлено через 3 минуты
Тина_Ливингстон, алгоритм программы прост - парсю из программы строки
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(getline(ifs,line))
каждую строку запихиваю в стринг поток и делаю из него вывод - выводится будет аккурат по 1-му слово - вот их кол-во и считаю, ну а дальше думаю всё более или менее ясно
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
29.11.2011, 19:16  [ТС]     Требуется определить строки, содержащие максимальное количество слов #5
Спасибо, только мне нужно с максимальным количеством слов.
я вроде исправила, вот так:
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
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    setlocale (LC_ALL,".1251");
        bool bFlag = false;
        int n;
        int maxlen;
        int nCount;
        string line;
        string str;
        stringstream ss;
        ifstream ifs("input.txt");
        if(!ifs)
                cout<<"Файл открыть не удалось\n";
        else
        {
                while(getline(ifs,line))
                {
                        n = 0;
                        ss.str(line);
                        while(ss>>str)
                                n++;
                        if(bFlag)
                        {
                                maxlen = n;
                                bFlag  = false;
                        }
                        if(n > maxlen)
                                maxlen = n;
                        ss.clear();//Встряхнём стрингпоток перед 
                        //запихиванием в него очередной строки
                }
                ifs.clear();//Теперь сам файловый поток обнуляем
                ifs.seekg(0,ios::beg);
 
                nCount = 0;
                cout<<"Максимальное количество слов в строке=  "<<maxlen<<endl;
                cout<<"Стока с максимальным количеством слов\n";
                while(getline(ifs,line))
                {
                        n= 0;
                        ss.str(line);
                        while(ss>>str)
                                n++;
                        if(n == maxlen && (nCount++) < 10)
                                cout<<nCount<<" "<<line<<endl;
                        ss.clear();
                }
                ifs.close();
        }
        system("pause");
        return 0;
}
Работает, только выдает какую-то ошибку...=(
-=ЮрА=-
Заблокирован
Автор FAQ
30.11.2011, 11:36     Требуется определить строки, содержащие максимальное количество слов #6
Цитата Сообщение от Тина_Ливингстон Посмотреть сообщение
Работает, только выдает какую-то ошибку...=(
Как писал я
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(!bFlag)
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * minlen = nWords;
* * * * * * * * * * * * * * * * bFlag *= true;
* * * * * * * * * * * * }
как написали Вы
Цитата Сообщение от Тина_Ливингстон Посмотреть сообщение
if(bFlag)
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * maxlen = n;
* * * * * * * * * * * * * * * * bFlag *= false;
* * * * * * * * * * * * }
Зачем изменили bFlag *= true; на bFlag *= false;???
bFlag - говорит о том что считана или нет самая первая строка, если строка самая первая то делаем инит maxlen = n; а затем уже сравниваем с текущими строками. При bFlag *= false; у нас каждая строка "первая"

Добавлено через 1 минуту
В добавок условие ещё изменили
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(!bFlag)
Цитата Сообщение от Тина_Ливингстон Посмотреть сообщение
if(bFlag)
- тогда уже начальный инит bFlag вместо false на true делали бы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 02:35     Требуется определить строки, содержащие максимальное количество слов
Еще ссылки по теме:

C++ Подсчитать количество предложений, содержащие нечетное количество слов
Программа выводит на экран предложения, содержащие максимальное количество знаков пунктуации C++
Определить количество слов строки C++

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

Или воспользуйтесь поиском по форуму:
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
01.12.2011, 02:35  [ТС]     Требуется определить строки, содержащие максимальное количество слов #7
спасибо, я позже поняла ошибку=)
Yandex
Объявления
01.12.2011, 02:35     Требуется определить строки, содержащие максимальное количество слов
Ответ Создать тему
Опции темы

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