Разработать функцию,которая находит 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
, освобождающая память, выделенную под массив. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д