Написать ** языке С++ Ввести строку символов. Подсчитать наибольшее количество точек...

0 голосов
82 просмотров

Написать на языке С++
Ввести строку символов. Подсчитать наибольшее количество точек идущих подряд (реализовать через функцию). Вывести на экран результат вычисления.


Информатика (207 баллов) | 82 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

#include
#include
using namespace std;
unsigned dotsConuter(const string &s)
{
unsigned i, j, max = 0;
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;
}
}
return max;
}

int main()
{
string str("dots.. more dots.....");
cout << dotsConuter(str) << endl;<br>return 0;
}

(4.2k баллов)
0

вообще стиль зависит от проекта в котором работаешь, как и ваш стиль йоды, это была тупая защита от "дураков", давно его юзали, хотя кто-то и сейчас юзает, мне это не нравится, сейчас все современные IDE предупреждают если вместо == было = )

0

Это какие к примеру, в студии или Qt напиши что-то типа:
int a;
int b;
if (a = b) //ругаться не будет, в лучшем случаи кинет варнинг
{...}

0

#include //библиотека ввода/вывода
#include //библиотека с типом данных string, для работы со строками
using namespace std; //пространство имен, тут названия всех типов данных дополнительных (в нашем случаи string)
//а так же функций из iostream

const char DOT_SIMBOL = '.'; //константа с которой будем сравнивать, является ли символ точкой

0

//-----------------------------------------------------------------------------
int getMaxDotCountInARow(const string& str)
//-----------------------------------------------------------------------------
{
int dotCounter; //счётчик точек
int maxDotLine; //тут будем хранить максимальное кол-во стоящих под ряд точек

dotCounter = 0; //обнуляем значения переменных
maxDotLine = 0;

0

for (const char& simbol : str) //цикл по всем елементам строки
{
if (DOT_SIMBOL == simbol) //если символ является точкой
{
++dotCounter; //счётчик точек увеличить на 1
}
else //иначе, если любой другой символ
{
if (dotCounter > maxDotLine) //если максимальное кол-во точек меньше чем на счётчике
{
maxDotLine = dotCounter; //запомнить новое максимальное кол-во точек
}
dotCounter = 0; //обнулить счётчек
}
}

0

if (dotCounter > maxDotLine) //ещё раз проверяем, если строка закончилась
{
maxDotLine = dotCounter;
}

return maxDotLine; //возращаем максимальное кол-во точек
}

//точка входа в программу, либо основная функция программы
//-----------------------------------------------------------------------------
int main()
//-----------------------------------------------------------------------------

0

{
string inputString; //создаем строку

cout << "Enter sting: ";<br> cin >> inputString; //вводим её и инициализируем

cout << "Max dot count in a row is: ";<br> cout << getMaxDotCountInARow(inputString); //передаем строку в функцию и выводим полученное число<br> cout << endl; //переносим строку<br>
system("pause"); //ставим программу в режим ожидания, до нажатия любой клавиши на клавиатуре
return 0; //возращаем системе код '0', что значит, что программа завершила работу корректно.
}

0

К вопросу, как бы сделал я.

0

Большое спасибо Вам)

0

не за что