Поиск наиболее длинной последовательности символов - C (СИ)
Формулировка задачи:
Помогите. Это программа считающая наиболее длинную последовательность символов и выводящая этот символ на экран. Кроме этого нужно вывести на экран исходный массив символов и количество символов из наиболее длинной последовательности. Так вот, проблема в том, что при выводе количества символов из наиболее длинной последовательности у мне приходится ее вбивать с клавиатуры. Помогите сделать так что бы символы брались из основного массива и исправьте пожалуйста какие вдруг есть еще ошибки.
#
include "math.h" #include "stdio.h" int main (void) { char s[11]="2222211148"; int a, i, j, m = 0, max = 0; for (i=0, j=1; s[j]; i++, j++) { if (s[j] == s[i]) m++; else { if (m > max) max = m, a = i; m = 0; } } printf("Исходный массив символов:2222211148 %c\n",s[10]); printf("Наиболее длинная последовательность: %c\n", s[a]); //Считает количество символов из наиболее длинной строки int k,count; count= 0; for (k=0; (s[k] = getchar()) != '\n' ;k++) { if (s[k] == '2') count++; } printf("Количество символов: %d\n", count); return 0; }
Решение задачи: «Поиск наиболее длинной последовательности символов»
textual
Листинг программы
#include "stdio.h" int main (void) { char s[11]="22222111488"; int a, m = 1, max = 0; for (int i = 1; s[i]; i++) { if(m > max) { max = m; a = i - 1; } if (s[i] == s[i - 1]) m++; else m = 1; } printf("Исходный массив символов: %s\n",s); printf("Наиболее длинная последовательность: символ %c, количество %d \n", s[a], max); return 0; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки ввода-вывода.
- Объявление переменной типа int, которая будет использоваться для подсчета максимальной длины последовательности.
- Объявление переменной типа int, которая будет использоваться для хранения текущего значения длины последовательности.
- Объявление переменной типа int, которая будет использоваться для хранения индекса начала наибольшей последовательности.
- Инициализация строки s[11]=
22222111488
. - Проверка на пустой символ в строке.
- В цикле проходить по каждому символу строки.
- Если текущая длина последовательности больше максимальной, то обновить значения максимальной длины и индекса начала наибольшей последовательности.
- Если текущий символ равен предыдущему, то увеличить текущую длину последовательности на 1.
- Если текущий символ не равен предыдущему, то обновить значения текущей длины последовательности и счетчика символов.
- Вывод исходного массива символов.
- Вывод наиболее длинной последовательности.
- Возврат 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д