Вывести длину самой длинной цепочки чисел в массиве - C (СИ)

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

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

Добрый вечер. Дан одномерный массив размерностью n. Вводится с клавиатуры числа. Необходимо выделить длину самой длинной цепочки чисел по возрастающей. Пример,ввели числа 1,2,3,4,5,20,9 необходимо вывести: "Максимальная длина 5"

Решение задачи: «Вывести длину самой длинной цепочки чисел в массиве»

textual
Листинг программы
  k=0;
        for (i=0; i<n; ++i)
             scanf("%d",str[i]);
        
        for (i=0; i<n; ++i)
        {
               if (str[i+1]==str[i]+1) 
                   kol+=1; //увеличиваем счётчик
                else  //если условие не выполняется, значит цепочка оборвалась. Необходимо занести полученное значение в массив str1, а счётчик обнулить
                {
                     str1[k]=kol;
                     kol=0;
                     ++k;                     
                }
        }
        for (i=0; i<=k; ++k)
        {
               находим наибольший элемент в массиве str1. Это и будет ответ
        }

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

В данном коде решаются две задачи:

  1. Первая задача: нахождение длины самой длинной цепочки чисел в массиве. Для этого используется два прохода по массиву:
    • В первом проходе происходит заполнение массива str числовыми значениями с помощью функции scanf.
    • Во втором проходе происходит проверка на возрастание каждого элемента массива str. Если текущий элемент больше следующего на 1, то это означает начало новой цепочки. В этом случае счетчик kol увеличивается на 1. Если условие не выполняется, то это означает окончание текущей цепочки. В этом случае значение счетчика kol записывается в массив str1, а сам счетчик обнуляется. Также увеличивается значение переменной k, которая отслеживает количество записанных в массив str1 значений.
  2. Вторая задача: нахождение наибольшего элемента в массиве str1. Для этого используется третий проход по массиву str1 с помощью цикла for. Переменная k устанавливается равной 0, а затем в каждой итерации цикла значение переменной k увеличивается на 1. В конце цикла k будет равно количеству элементов в массиве str1, и это будет наибольшее значение в массиве. Список действий:
  3. Установить переменную k равной 0.
  4. Заполнить массив str числовыми значениями с помощью функции scanf.
  5. Выполнить второй проход по массиву str:
    • Проверять, является ли текущий элемент больше следующего на 1.
    • Если условие выполняется, увеличивать значение счетчика kol на 1.
    • Если условие не выполняется, записывать значение счетчика kol в массив str1 и обнулять счетчик kol.
    • Увеличивать значение переменной k на 1.
  6. Выполнить третий проход по массиву str1:
    • Находить наибольшее значение в массиве str1.
    • Установить переменную k равной количеству элементов в массиве str1.
  7. Вывести значение переменной k.

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


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

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

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