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

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

Войти
Регистрация
Восстановить пароль
 
 
ivan-frost
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 52
#1

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

29.11.2013, 10:37. Просмотров 730. Ответов 27
Метки нет (Все метки)

Здраствуйте, помогите написать код к такой задаче:
Дана строка символов S.
а) Подсчитать наибольшее количество идущих подряд пробелов.
б) Выяснить, верно ли, что в строке S имеются пять идущих подряд букв е.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 10:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подсчитать наибольшее количество идущих подряд пробелов в строке (C++):

Подсчитать наибольшее количество идущих подряд пробелов - C++
#include "stdafx.h" #include "iostream" #include "iomanip" int main() { setlocale (LC_ALL, "Ukrainian"); int n,...

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
29.11.2013, 10:47 #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
32
33
34
35
36
37
38
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
   string str = "hfhfh bdfhb eeee e ee e    ee e e";
   
   int prob;
   int maxprob;
   int e;
   bool be;
   
   prob = 0;
   e = 0;
   maxprob = 0;
   be = false;
   
   for (int i = 0; i < str.length() ; i++) {
       
       if (str[i] == ' ') prob++;
       else prob = 0;
       
       if ( prob > maxprob ) maxprob = prob;
       
       if (str[i] == 'e') e++;
       else e = 0;
       
       if ( e == 5 ) be = true;
       
   }
   
   cout << "E = 5  " << be << endl; 
   cout << "Probel = " << maxprob << endl; 
   
   return 0;
}
ivan-frost
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 52
29.11.2013, 10:51  [ТС] #3
mibin, єм а точно правильынй код, оно выводит сразу
E = 5 1
Probel = 4
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
29.11.2013, 10:54 #4
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
#include <iostream>
#include <regex>
#include <string>
using namespace::std;
 
int main()
{ 
    string s="abc def dfseeeeedfas  gfi";
    cout <<"s= "<<s<<endl;
    int max(0);
    smatch sm;
    //а) Подсчитать наибольшее количество идущих подряд пробелов.
    string s1=s;
    while(regex_search(s1,sm,regex(" +")))
    {
        if(max<sm[0].str().length()) max=sm[0].str().length();
        s1=sm.suffix().str();
    }
 
    cout <<"max_prob= "<<max<<endl;
 
    //б) Выяснить, верно ли, что в строке S имеются пять идущих подряд букв е
    if(regex_match(s,regex(".*eeeee.*")))
        cout <<"est6 sovpadenie \"eeeee\""<<endl;
    else
        cout <<"net \"eeeee\""<<endl;
 
    return 0;
}
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
29.11.2013, 10:58 #5
Цитата Сообщение от ivan-frost Посмотреть сообщение
mibin, єм а точно правильынй код, оно выводит сразу
E = 5 1
Probel = 4
Точно правильный
Только скопируй заного, я там после первой вставки сделал 1 изменение, опечатался в if два подряд = должны быть.

после E = 5 будет 1 или 0 что означает 1 = 5 e подряд есть 0 нет.
ivan-frost
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 52
29.11.2013, 10:58  [ТС] #6
ninja2, ваш код вообще не запускается
gray_fox
29.11.2013, 10:58
  #7

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
//б) Выяснить, верно ли, что в строке S имеются пять идущих подряд букв е
До, без регулярок здесь ну никак не обойдёшься...)

ivan-frost
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 52
29.11.2013, 10:59  [ТС] #8
mibin, так нужно самому ввести текст и чтобы оно подсчитало как это сделать
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
29.11.2013, 11:00 #9
Цитата Сообщение от gray_fox Посмотреть сообщение
До, без регулярок здесь ну никак не обойдёшься...)
Ну мне регулярки больше нравятся, я щас любую обработку или поиск по тексту делаю с регулярками. А зачем что нить выдумывать?
mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
29.11.2013, 11:02 #10
Цитата Сообщение от ivan-frost Посмотреть сообщение
mibin, так нужно самому ввести текст и чтобы оно подсчитало как это сделать
Тогда так попробуй

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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
   string str;
   
   cin >> str;
   
   int prob;
   int maxprob;
   int e;
   bool be;
   
   prob = 0;
   e = 0;
   maxprob = 0;
   be = false;
   
   for (int i = 0; i < str.length() ; i++) {
       
       if (str[i] == ' ') prob++;
       else prob = 0;
       
       if ( prob > maxprob ) maxprob = prob;
       
       if (str[i] == 'e') e++;
       else e = 0;
       
       if ( e == 5 ) be = true;
       
   }
   
   cout << "E = 5  " << be << endl; 
   cout << "Probel = " << maxprob << endl; 
   
   return 0;
}
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
29.11.2013, 11:03 #11
gray_fox, А да ну можно б было find использовать.
gray_fox
29.11.2013, 11:04
  #12

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
Ну мне регулярки больше нравятся, я щас любую обработку или поиск по тексту делаю с регулярками.
Просто есть вещи попроще (и пошустрее, кстати, если это интересно, конечно), std::string::find например.

mibin
49 / 49 / 4
Регистрация: 21.10.2009
Сообщений: 272
29.11.2013, 11:04 #13
Цитата Сообщение от ninja2 Посмотреть сообщение
Ну мне регулярки больше нравятся, я щас любую обработку или поиск по тексту делаю с регулярками. А зачем что нить выдумывать?
Они тяжелые на выполнение, считается, что на выполнение регулярного выражения требуется больше времени чем нежели циклами обработать.
ivan-frost
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 52
29.11.2013, 11:05  [ТС] #14
mibin, не работает оно пишет все равно пробел 0 и е 5 0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
29.11.2013, 11:09 #15
Цитата Сообщение от mibin Посмотреть сообщение
Они тяжелые на выполнение, считается, что на выполнение регулярного выражения требуется больше времени чем нежели циклами обработать.
Зато мороки меньше и честно сказать С++ шустрый язык, нафиг нада это все циклами писать, когда можно строчку написать и не париться!

Добавлено через 2 минуты
В данной задаче да можно циклами, но есть когда нужно выполнить поиск, таких выражений с большим количеством условий, тогда уже без РВ не обойтись, а эта задачка это мелочь. Там уже либо строчка РВ либо 200 - 1000к строк условий.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 11:09
Привет! Вот еще темы с ответами:

В строке подсчитать наибольшее количество букв идущих подряд - C++
Дана строка символов. Подсчитать наибольшее количество подряд идущих букв. Букву для подсчета запросить у пользователя.

Во введенной строке подсчитать наибольшее количество одинаковых букв, идущих подряд - C++
Во введенной строке подсчитать наибольшее количество одинаковых букв, идущих подряд. Заранее спасибо :)

Вывести наибольшее количество пробелов, идущих подряд - C++
Из файла считывается текст и выводится наибольшее количество пробелов, что идут подряд. Помогите, как это реализовать, где у мея ошибки?...

Дано предложение. Найти наибольшее количество идущих подряд пробелов - C++
9)Дано предложение. Найти наибольшее количество идущих подряд пробелов.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.11.2013, 11:09
Ответ Создать тему
Опции темы

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