Найти в массиве 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, которая выполняет следующие действия:
- Принимает на вход массив
Arrтипаintи его размерn. - Инициализирует два указателя
m1иm2значением первого элемента массиваArr. - Переменная
flgинициализируется нулем. Она используется для контроля нахождения максимального элемента. - Если текущий элемент массива
Arr[i]больше значенияm1, то выполняются следующие действия:- Значение
m2присваивается значениеm1. - Значение
m1присваивается значениеArr[i]. - Переменная
flgпринимает значение -1.
- Значение
- Если текущий элемент массива
Arr[i]меньше или равен значениюm1, то выполняются следующие действия:- Если
flgравно нулю, то выполняются следующие действия:- Значение
m2присваивается значениеArr[i]. - Переменная
flgпринимает значение -1.
- Значение
- Если
flgравно -1, то выполняются следующие действия:- Если
Arr[i]больше значенияm2, то значениеm2присваивается значениеArr[i].
- Если
- Если
- Возвращает два максимальных элемента массива
Arr. В функцииmainсоздается массивArrразмера 10 и инициализируется значениями. Затем вызывается функцияmax2, передавая в нее массивArrи его размер. После этого выводятся два максимальных элемента массива на экран.