Найти наиболее длинную последовательность нулей - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Помогите написать программу,пожалуйста. Вот задание : Числа вводятся с клавиатуры до первого отрицательного числа. Написать программу, которая находит номера начала и конца наиболее длинной последовательности нулей

Решение задачи: «Найти наиболее длинную последовательность нулей»

textual
Листинг программы
int i=0, n=-1, k=-1, a, L=0, Lt=0, nt=-1, kt=-1, flag=0;
while (1) {
  scanf("%d", &a);
  if (a < 0) break;
  if (a==0) {
    if (flag==0) {
      nt = i;
      Lt = 1;
    }
     else Lt++;
     flag = 1; 
     kt = i;
     if (Lt > L) {
        L = Lt;
        n = nt;
        k = kt;
    }
  }
  else flag = 0;
  i++;
}
if (n < 0) printf( "Нет нулей\n"l;
else printf("Beg=%d End=%d L=%d\n", n, k, L);

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

  1. Переменная i инициализируется как 0 и используется для отслеживания текущего индекса.
  2. Переменная n инициализируется как -1 и используется для определения конца последовательности нулей.
  3. Переменная k инициализируется как -1 и используется для определения первого индекса последовательности нулей.
  4. Переменная a используется для хранения каждого введенного числа.
  5. Переменная L инициализируется как 0 и используется для подсчета количества нулей до текущего индекса.
  6. Переменная Lt инициализируется как 0 и используется для подсчета длины наибольшей последовательности нулей до текущего индекса.
  7. Переменная nt инициализируется как -1 и используется для хранения индекса первого нуля в текущей наибольшей последовательности.
  8. Переменная kt инициализируется как -1 и используется для хранения индекса последнего нуля в текущей наибольшей последовательности.
  9. В цикле while(1) происходит считывание каждого числа с помощью функции scanf(). Если число отрицательное, цикл прерывается.
  10. Если число равно 0, то проверяется, является ли текущая последовательность нулей наибольшей. Если да, то обновляются значения переменных nt, kt, Lt, L, n и k.
  11. Если число не равно 0, то флаг устанавливается в 0, чтобы начать подсчет новой последовательности нулей.
  12. Переменная i увеличивается на 1 после каждой итерации цикла.
  13. Если n меньше 0, то выводится сообщение Нет нулей.
  14. Если n больше или равно 0, то выводится сообщение Beg, End и L, где Beg - это первый индекс, End - последний индекс и L - длина наибольшей последовательности. Следует отметить, что код не обрабатывает ошибки, связанные с вводом пользователя, и предполагает, что пользователь будет вводить только числа.

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


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

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

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