Вывести те элементы в наборе, которые меньше своего левого соседа, и количество K таких элементов - C (СИ)
Формулировка задачи:
Всем привет! Не могу никак понять, как сделать данные задания. Был бы очень благодарен за помощь.
1. Дано целое число N (> 1) и набор из N целых чисел. Вывести те элементы в наборе, которые меньше своего левого соседа, и количество K таких элементов.
Если кому не сложно, приписывайте коменты, чтобы я понимал что там делается, т.к. я ещё новичек к СИшке.
Решение задачи: «Вывести те элементы в наборе, которые меньше своего левого соседа, и количество K таких элементов»
textual
Листинг программы
#include <stdio.h> // puts, printf
#include <stdlib.h> // malloc, free
int main(void)
{
int n;
puts("Input n:");
scanf("%d", &n);
if( n <= 0 ) { return 1; }
int* array = malloc(sizeof(int) * n);
int i;
for( i = 0; i < n; ++i ) {
printf("Input element %d: ", i);
scanf("%d", &array[i]);
}
int k = 0;
puts("Elements:");
for( i = 1; i < n; ++i ) {
if( array[i] < array[i - 1] ) {
printf("%d ", array[i]);
++k;
}
}
printf("\nNumber of elements = %d\n", k);
free(array);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Пользователю предлагается ввести количество элементов в массиве (n).
- Если n меньше или равно нулю, программа завершается с кодом ошибки.
- В динамической памяти выделяется массив из n целых чисел.
- Пользователю предлагается ввести n целых чисел и сохраняются в массиве.
- Инициализируется счётчик элементов (k) меньше своих левых соседей.
- В цикле выводятся элементы массива, и если текущий элемент меньше своего левого соседа, то увеличивается счётчик k и выводится текущий элемент.
- Выводится количество элементов меньше своих левых соседей (k).
- Массив и переменные освобождаются от использования и программа завершается.