Напишите функцию внутр najdlhsie_opakovanie, которая возвращает длину самого длинного сегмента - C (СИ)
Формулировка задачи:
Напишите функцию внутр najdlhsie_opakovanie
Помогите пожалуйста написать эту функцию!!!
Заранее спасибо!!!
(char str [])
, которая возвращает длину самого длинного сегмента(в строку str)
, содержащий тот же повторяющийся характер. Различают между прописными и строчными буквами. Строкаstr
, будет закончена \0 Пример вызова: str = "aabbbcCcCcddeeeeff" dlzka = najdlhsie_opakovanie(str); // вызов функции dlzka: 4 // вывод функции| C |
Решение задачи: «Напишите функцию внутр najdlhsie_opakovanie, которая возвращает длину самого длинного сегмента»
textual
Листинг программы
#include <stdio.h>
#include <stdbool.h>
unsigned func(const char str[]) {
unsigned max = 0;
unsigned cnt = 1;
while (*str++) {
if (*str == *(str - 1)) {
cnt++;
}
else {
if (max < cnt) {
max = cnt;
}
cnt = 1;
}
}
return max;
}
int main() {
printf("dlzka: %u\n", func("aabbbcCcCcddeeeeff"));
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию func, которая принимает в качестве аргумента строку (константный указатель на символ)
- Внутри функции объявляем переменные: max - для хранения максимальной длины сегмента cnt - для подсчета количества одинаковых символов в сегменте
- Используем цикл while для прохода по всем символам строки
- Внутри цикла проверяем, является ли текущий символ таким же, как предыдущий
- Если символы одинаковые, увеличиваем значение переменной cnt на 1
- Если символы разные, проверяем, является ли текущая длина сегмента (cnt) больше максимальной длины (max)
- Если текущая длина сегмента больше максимальной, обновляем значение переменной max
- После выхода из цикла обнуляем значение переменной cnt
- Возвращаем значение переменной max
- В функции main вызываем функцию func и выводим результат на экран
- Для этого передаем в функцию func строку
aabbbcCcCcddeeeeff - Функция func возвращает максимальную длину сегмента (в данном случае 5)
- Значение 5 выводится на экран
- Функция main возвращает 0, что означает успешный конец работы программы