Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 5
1

Вывести наибольшее количество пробелов, идущих подряд

11.05.2015, 10:20. Показов 1095. Ответов 7
Метки нет (Все метки)

Из файла считывается текст и выводится наибольшее количество пробелов, что идут подряд. Помогите, как это реализовать, где у мея ошибки? Программа не работает правильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        string s;
    int countTemp = 0, maxCountTemp =0;
    vector <string> arr;
    ifstream fin("input.txt");
        while (fin >> s)
    {
        arr.push_back(s);
    }
        for (int i = 0; i < arr.size(); i++)
    {
        if (arr[i] == " ")
        {
 
            countTemp=1;
            while (arr[i] == " " && arr[++i] == " ")
                countTemp++;
            if (countTemp > maxCountTemp) maxCountTemp = countTemp;
        }
    }
cout <<  maxCountTemp << endl;
Добавлено через 19 минут
Желательно чтобы был именно vector<string>, т.к. текст в файле на несколько строк, а другого способа реализации этой части, кроме vector<string> я не знаю
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2015, 10:20
Ответы с готовыми решениями:

Подсчитать наибольшее количество идущих подряд пробелов
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;iomanip&quot; int main() { setlocale...

Подсчитать наибольшее количество идущих подряд пробелов
Даны натуральное число n, символы S1, .... Sn . а) Подсчитать наибольшее количество идущих...

Подсчитать наибольшее количество идущих подряд пробелов
Подсчитать наибольшее количество идущих подряд пробелов...

Подсчитать наибольшее количество идущих подряд пробелов
дана строка. подсчитать наибольшее количество идущих подряд пробелов

7
84 / 80 / 31
Регистрация: 18.11.2013
Сообщений: 390
11.05.2015, 10:37 2
Используйте string
string - строка, длина которой неограничена, то есть массив символов, байтов.
Файл - набор битов, байтов
и что же нам мешает записать файл в строку?
Переносы строк, скажете вы, но, если бы вы изучали Си(printf), то вы бы знали, что перенос строки это тоже символ, 1 байт, '/n', и весь файл можно записать в строку
но если бы вы подошли к этой задаче более оригинально, то вы бы использовали не строку, а символ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int max=0,now=0;
char c;
cin >> c;
 
while(!cin.fail())
{
if(c==' ')
now++;
else 
{
if(max<now)
max = now;
now=0;
}
cin >> c;
}
Этот код запишет в max максимальное кол-во послед. Пробелов
этот код будет считывать весь файл, если он подставляется во входной поток, и бесконечно, если ввод с консоли
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 5
11.05.2015, 16:26  [ТС] 3
Помогите,код по-прежнему не работает
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 <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <string.h>
#include <windows.h>
using namespace std;
 
int main(int argc, char* argv[])
{
    string s;
    vector <string> arr;
    ifstream fin("input.txt");
    if (!fin)
    {
        cout << "Error! File is not found." << endl;
        system("pause");
        return 0;
    }
    fin >> s;
    while (fin >> s)
    {
        arr.push_back(s);
    }
    int i, j, max = 0;
    for (int i = 0; i < arr.size(); i++)
    {
        
        for (i = 0; i<s.length(); i++){
            if (s[i] == ' '){
                for (j = 1; ((i + j)<s.length()) && (s[i + j] == ' '); j++);
                max = (max<j) ? j : max;
            }
        }
    }
 
    cout  << max << endl;
    system("pause");
    return 0;
}
0
2723 / 1887 / 559
Регистрация: 05.06.2014
Сообщений: 5,499
11.05.2015, 17:07 4
Эм... На кой черт вам понадобились векторы и строки?
C++
1
2
3
4
5
6
7
8
9
10
11
std::ifstream stream("in.txt");
char prev_char=0;
int result=0,count=0;
while(stream)
{
    char next_char=stream.get();
    count=next_char==' '?count+1:0;
    result=max(result,count);
    prev_char=next_char;
}
cout<<result<<endl;
1
84 / 80 / 31
Регистрация: 18.11.2013
Сообщений: 390
12.05.2015, 18:18 5
Цитата Сообщение от Renji Посмотреть сообщение
Эм... На кой черт вам понадобились векторы и строки?
Эм... На кой черт вам понадобился prev_char?
0
2723 / 1887 / 559
Регистрация: 05.06.2014
Сообщений: 5,499
12.05.2015, 18:45 6
Цитата Сообщение от Krock21rus Посмотреть сообщение
Эм... На кой черт вам понадобился prev_char?
Ступил и показалось что надо проверку в духе "если этот символ - пробел, а до него был не пробел...". Правда, код при этом получился без проверок и prev_char там действительно даром не нужен.
0
84 / 80 / 31
Регистрация: 18.11.2013
Сообщений: 390
12.05.2015, 20:45 7
Цитата Сообщение от Renji Посмотреть сообщение
Ступил и показалось что надо проверку в духе "если этот символ - пробел, а до него был не пробел...". Правда, код при этом получился без проверок и prev_char там действительно даром не нужен.
prev_char помоему только при обрезании длинных пробелов нужен, и то в самом простом, обучающем решении
0
2723 / 1887 / 559
Регистрация: 05.06.2014
Сообщений: 5,499
12.05.2015, 20:57 8
Цитата Сообщение от Krock21rus Посмотреть сообщение
prev_char помоему только при обрезании длинных пробелов нужен, и то в самом простом, обучающем решении
Ну так я и говорю, ступил.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2015, 20:57

Подсчитать наибольшее количество идущих подряд пробелов в строке
Здраствуйте, помогите написать код к такой задаче: Дана строка символов S. а) Подсчитать...

В строке посчитать наибольшее количество идущих подряд пробелов
В строке посчитать наибольшее количество идущих подряд пробелов

Подсчитать наибольшее количество подряд идущих пробелов в тексте
С помощью текстового редактора БЛОКНОТ создать файл, содержащий текст, длина которого не...

Дано предложение. Определите наибольшее количество идущих подряд пробелов
Дано предложение. Определите наибольшее количество идущих подряд пробелов.


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

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

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