Найти непрерывную цепочку положительных элементов в масиве - 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;
}
Объяснение кода листинга программы
- Объявлены переменные:
- int* array;
- int size;
- int i;
- int counter = 0;
- int max = 0;
- int position = 0;
- Считывается значение размера массива с помощью функции scanf().
- Выполняется проверка на корректность размера массива (больше 0).
- Выделяется память под массив с помощью функции malloc().
- В цикле с помощью функции scanf() считываются значения элементов массива.
- Проверяется условие, если элемент больше 0, то увеличивается счетчик counter.
- Если значение счетчика больше максимального значения, то обновляются значения max и position.
- Если элемент меньше или равен 0, то сбрасывается значение счетчика counter.
- В цикле выводятся элементы массива, начиная с позиции position-max и до position.
- Если размер массива некорректен, то выводится сообщение об ошибке.
- Возвращается 0, что означает успешное завершение программы.