Поиск наиболее длинной последовательности символов - 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;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки ввода-вывода.
  2. Объявление переменной типа int, которая будет использоваться для подсчета максимальной длины последовательности.
  3. Объявление переменной типа int, которая будет использоваться для хранения текущего значения длины последовательности.
  4. Объявление переменной типа int, которая будет использоваться для хранения индекса начала наибольшей последовательности.
  5. Инициализация строки s[11]=22222111488.
  6. Проверка на пустой символ в строке.
  7. В цикле проходить по каждому символу строки.
  8. Если текущая длина последовательности больше максимальной, то обновить значения максимальной длины и индекса начала наибольшей последовательности.
  9. Если текущий символ равен предыдущему, то увеличить текущую длину последовательности на 1.
  10. Если текущий символ не равен предыдущему, то обновить значения текущей длины последовательности и счетчика символов.
  11. Вывод исходного массива символов.
  12. Вывод наиболее длинной последовательности.
  13. Возврат 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы