Разработать функцию,которая находит 2 наибольших элемента массива - C (СИ)
Формулировка задачи:
Помогите пожалуйста)))
Разработать функцию,которая находит 2 наибольших элемента массива
Решение задачи: «Разработать функцию,которая находит 2 наибольших элемента массива»
textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
int main () {
int n;
printf ("n\n");
scanf ("%i",&n);
int max;
int max2;
int j=0;
int* mas = (int*)malloc(n*(sizeof(int)));
for (int i=0; i<n; i++) {
scanf ("%i",&mas[i]);
}
max = mas[0];
max2 = mas[0];
for (int i=0; i<n; i++) {
if (mas[i] > max) {
max = mas[i];
j=i;
}
} // находим самый большой, запоминаем индекс j
if (max == mas[0]) {
max2 = mas[1]; // для того, чтобы первый и второй максимальный элементы не совпадали
}
for (int i=0; i<n; i++) {
if ((i != j)) { // чтобы не брать еще раз максимальный элемент
if ((mas[i] >= max2) && (mas[i] <= max)) {
max2 = mas[i];
}
}
}
printf ("%i %i",max,max2);
getch();
return 0;
free(mas);
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
n- количество элементов в массиве (input);max- первый максимальный элемент;max2- второй максимальный элемент;j- индекс первого максимального элемента;mas- указатель на начало массива.
- Запрашивается значение
nи сохраняется в переменнойn. - Выделяется память под массив
masс помощьюmalloc. - Заполняется массив
masс помощьюscanf. - Первый максимальный элемент и второй максимальный элемент инициализируются значением первого элемента массива.
- Происходит поиск первого максимального элемента, его индекса.
- Если первый максимальный элемент не совпадает со вторым, то второй максимальный элемент присваивается значению первого элемента, следующему за первым максимальным.
- Происходит поиск второго максимального элемента, начиная с элементов, которые меньше первого максимального элемента и больше или равны второму максимальному.
- Выводятся значения первого и второго максимального элемента.
- Вводится символ для подтверждения выполнения программы.
- Выполняется функция
free, освобождающая память, выделенную под массив. - Программа завершается.