Найти количество локальных минимумов массива - C (СИ)
Формулировка задачи:
Дан массив размера N. Найти количество его локальных минимумов (локальный минимум - элемент, меньший двух своих ближайших соседей)
#include <stdio.h> int main (void) { int a[10],i,k; void EnterArr (int x[10],char n) { int i; printf ("\nEnterArr\n"); for (i=0;i<10;i++) { printf ("Enter %c[%i]=",n,i); scanf ("%i",&x[i]); } } void PrintArr (int x[10],char n) { int i; printf ("\n\n Array %c \n",n); for (i=0;i<10;i++) { printf ("%5i",x[i]); } printf ("\n\n"); } EnterArr (a,'a'); k=0; for ( i=1; i<10; i++) if ((a[i]<a[i+1])&&(a[i]<a[i-1])) k++; PrintArr (a,'a'); printf ("kol-vo lokalniich minimumov =%i",k); return 0; }
Не знаю правильно это или нет, но мне кажется вся беда была в возвращении Нуля. Нужно возвращать k. Так ли это?
Решение задачи: «Найти количество локальных минимумов массива»
textual
Листинг программы
#include <stdio.h> void EnterArr (int x[10],char n) { int i; printf ("\nEnterArr\n"); for (i=0;i<10;i++) { printf ("Enter %c[%i]=",n,i); scanf ("%i",&x[i]); } } void PrintArr (int x[10],char n) { int i; printf ("\n\n Array %c \n",n); for (i=0;i<10;i++) { printf ("%5i",x[i]); } printf ("\n\n"); } int main (void) { int a[10],i,k; EnterArr (a,'a'); k=0; for ( i=1; i<10; i++) if ((a[i]<a[i+1])&&(a[i]<a[i-1])) k++; PrintArr (a,'a'); printf ("kol-vo lokalniich minimumov =%i",k); return 0; }
Объяснение кода листинга программы
В этом коде на языке C выполняется следующая последовательность действий:
- Ввод массива с помощью функции EnterArr. Функция EnterArr принимает два аргумента: массив x размером 10 и символ n. С помощью цикла for и функции scanf в массив x считываются 10 чисел, введенных пользователем.
- Вывод массива с помощью функции PrintArr. Функция PrintArr принимает два аргумента: массив x и символ n. С помощью цикла for и функции printf выводится на экран массив x.
- Поиск локальных минимумов в массиве в функции main. В основной функции main создается массив a размером 10 и инициализируется нулями. Затем вызывается функция EnterArr для ввода чисел в массив a. Далее, с помощью цикла for и условий if, проверяется каждый элемент массива на предмет того, является ли он локальным минимумом (меньше следующего и предыдущего элементов). Если условие выполняется, к переменной k прибавляется единица. Затем вызывается функция PrintArr для вывода массива a на экран. Наконец, выводится сообщение с количеством найденных локальных минимумов, равным переменной k. Список действий:
- Ввод массива
- Вывод массива
- Поиск локальных минимумов
- Вывод сообщения с количеством локальных минимумов
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д