Найти непрерывную цепочку положительных элементов в масиве - C (СИ)

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

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

Помогите написать код. Дан массив X из N целых чисел. Нужно найти самую длинную непрерывную цепочку положительных элементов больше нуля в масиве X И вывести ее на экран.

Решение задачи: «Найти непрерывную цепочку положительных элементов в масиве»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int* array;
    int size, i;
    int counter = 0;
    int max = 0;
    int position = 0;
    
    scanf("%d", &size);
    
    if ( size > 0 ) {
        array = (int*) malloc (size*sizeof(int));
        
        for ( i = 0; i < size; i++ ) {
            scanf("%d", &array[i]);
            
            if ( array[i] > 0 ) {
                counter += 1;
                if ( max < counter ) {
                    max = counter;
                    position = i+1;
                }
            } else {
                counter = 0;
            }
        }
        
        for ( i = position-max; i < position; i++ ) {
            printf("%d ", array[i]);
        }
    } else {
        printf("Wrong size!\n");
    }
    
    return 0;
}

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

  1. Объявлены переменные:
    • int* array;
    • int size;
    • int i;
    • int counter = 0;
    • int max = 0;
    • int position = 0;
  2. Считывается значение размера массива с помощью функции scanf().
  3. Выполняется проверка на корректность размера массива (больше 0).
  4. Выделяется память под массив с помощью функции malloc().
  5. В цикле с помощью функции scanf() считываются значения элементов массива.
  6. Проверяется условие, если элемент больше 0, то увеличивается счетчик counter.
  7. Если значение счетчика больше максимального значения, то обновляются значения max и position.
  8. Если элемент меньше или равен 0, то сбрасывается значение счетчика counter.
  9. В цикле выводятся элементы массива, начиная с позиции position-max и до position.
  10. Если размер массива некорректен, то выводится сообщение об ошибке.
  11. Возвращается 0, что означает успешное завершение программы.

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


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

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

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