Подсчитать наибольшее количество идущих подряд пробелов - C (СИ)
Формулировка задачи:
Здраствуйте, помогите написать код к такой задаче:
Дана строка символов S.
а) Подсчитать наибольшее количество идущих подряд пробелов.
б) Выяснить, верно ли, что в строке S имеются пять идущих подряд букв е.
Решение задачи: «Подсчитать наибольшее количество идущих подряд пробелов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define n 25
int main()
{
int i;
int countSpace = 0;
int countTemp = 0;
char ar[n]; //массив символов
//скопируем тестовую строку, максимум пробелов подряд = 3
strncpy(ar, "some string", n);
printf("String is: %s\n", ar);
for (i = 0; i < n; i++)
{
//если попался хоть один пробел
if (ar[i] == ' ')
{
countTemp = 1;
//пока ещё есть рядом пробелы увеличиваем счётчик
while (ar[i] && ar[++i] == ' ')
{
countTemp++;
}
//заносим в countSpace новое число пробелов только
//если оно больше того что было до этого
countSpace = (countTemp < countSpace) ? countSpace : countTemp;
}
}
printf("countSpace = %d\n", countSpace);
system("pause");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Установка константы n равной 25
- Объявление переменных: i, countSpace, countTemp, ar
- Копирование тестовой строки в массив ar
- Вывод тестовой строки на экран
- Инициализация счётчика пробелов countSpace равным 0
- Инициализация счётчика пробелов countTemp равным 0
- Цикл по всем элементам массива ar
- Проверка каждого элемента массива на равенство пробелу ' '
- Если элемент равен пробелу, то увеличиваем счётчик countTemp на 1
- Пока следующий элемент массива также равен пробелу, увеличиваем счётчик countTemp на 1
- Если countTemp меньше текущего значения countSpace или countSpace равно 0, то обновляем countSpace значением countTemp
- Вывод значения countSpace на экран
- Вызов функции system(
pause) для приостановки программы до нажатия клавиши - Конец программы с возвращаемым значением 0