Найти в массиве 2 максимальных элемента - C (СИ)

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

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

Заполнить массив из 10 элементов случайными числами в интервале(-10 ...10) и найти в нем 2 максимальных элемента

Решение задачи: «Найти в массиве 2 максимальных элемента»

textual
Листинг программы
#include <stdio.h>
 
void max2(int *Arr, int n, int *m1, int *m2)
{
     int i,flg;
     flg=0;
     m1=Arr[0];
     for (i=1; i<n; i++)
       if (Arr[i] > *m1)
       {
           *m2=*m1;
           *m1=Arr[i];
           flg=-1;
       }
       else
          if (flg==0)
          {
             *m2=Arr[i];
             flg=-1;
          }   
          else
            if (Arr[i]>*m2) *m2=Arr[i];
}                                                        
 
int main(int argc, char *argv[])
{
    int Arr[10]={6,-8,5,32,8,9,12,0,7,11};
    int q1,q2;
    
    max2(Arr,10,q1,q2);
    
    printf("%d  %d\n",q1,q2);
    
}

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

В данном коде реализована функция max2, которая выполняет следующие действия:

  1. Принимает на вход массив Arr типа int и его размер n.
  2. Инициализирует два указателя m1 и m2 значением первого элемента массива Arr.
  3. Переменная flg инициализируется нулем. Она используется для контроля нахождения максимального элемента.
  4. Если текущий элемент массива Arr[i] больше значения m1, то выполняются следующие действия:
    • Значение m2 присваивается значение m1.
    • Значение m1 присваивается значение Arr[i].
    • Переменная flg принимает значение -1.
  5. Если текущий элемент массива Arr[i] меньше или равен значению m1, то выполняются следующие действия:
    • Если flg равно нулю, то выполняются следующие действия:
      • Значение m2 присваивается значение Arr[i].
      • Переменная flg принимает значение -1.
    • Если flg равно -1, то выполняются следующие действия:
      • Если Arr[i] больше значения m2, то значение m2 присваивается значение Arr[i].
  6. Возвращает два максимальных элемента массива Arr. В функции main создается массив Arr размера 10 и инициализируется значениями. Затем вызывается функция max2, передавая в нее массив Arr и его размер. После этого выводятся два максимальных элемента массива на экран.

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

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