Найти количество локальных минимумов массива - 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 выполняется следующая последовательность действий:

  1. Ввод массива с помощью функции EnterArr. Функция EnterArr принимает два аргумента: массив x размером 10 и символ n. С помощью цикла for и функции scanf в массив x считываются 10 чисел, введенных пользователем.
  2. Вывод массива с помощью функции PrintArr. Функция PrintArr принимает два аргумента: массив x и символ n. С помощью цикла for и функции printf выводится на экран массив x.
  3. Поиск локальных минимумов в массиве в функции main. В основной функции main создается массив a размером 10 и инициализируется нулями. Затем вызывается функция EnterArr для ввода чисел в массив a. Далее, с помощью цикла for и условий if, проверяется каждый элемент массива на предмет того, является ли он локальным минимумом (меньше следующего и предыдущего элементов). Если условие выполняется, к переменной k прибавляется единица. Затем вызывается функция PrintArr для вывода массива a на экран. Наконец, выводится сообщение с количеством найденных локальных минимумов, равным переменной k. Список действий:
  4. Ввод массива
  5. Вывод массива
  6. Поиск локальных минимумов
  7. Вывод сообщения с количеством локальных минимумов

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


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

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

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