Решите задачу на языке Си с клавиатуры введите массив действительных чисел (максимальный размер - 30 позиций). Определите значение и порядковые номера двух крупнейших элементов введенного массива. Поиск двух крупнейших элементов массива осуществляется в одном общем цикле.
#include <stdio.h> int main() { double arr[30]; int n, i; double max1, max2; printf("Введите количество элементов массива (не более 30): "); scanf("%d", &n); if (n <= 0 || n > 30) { printf("Ошибка: недопустимое количество элементов массива\n"); return 1; } printf("Введите элементы массива:\n"); for (i = 0; i < n; i++) { scanf("%lf", &arr[i]); } max1 = arr[0]; max2 = arr[1]; if (max2 > max1) { double temp = max1; max1 = max2; max2 = temp; } for (i = 2; i < n; i++) { if (arr[i] > max1) { max2 = max1; max1 = arr[i]; } else if (arr[i] > max2) { max2 = arr[i]; } } printf("Два наибольших элемента:\n"); printf("1. %lf\n", max1); printf("2. %lf\n", max2); return 0; }
Пример работы программы:
Введите количество элементов массива (не более 30): 5 Введите элементы массива: 10.5 20.7 15.2 18.3 12.6 Два наибольших элемента: 1. 20.700000 2. 18.300000
int main() {
double arr[30];
int n, i;
double max1, max2;
printf("Введите количество элементов массива (не более 30): ");
scanf("%d", &n);
if (n <= 0 || n > 30) {
printf("Ошибка: недопустимое количество элементов массива\n");
return 1;
}
printf("Введите элементы массива:\n");
for (i = 0; i < n; i++) {
scanf("%lf", &arr[i]);
}
max1 = arr[0];
max2 = arr[1];
if (max2 > max1) {
double temp = max1;
max1 = max2;
max2 = temp;
}
for (i = 2; i < n; i++) {
if (arr[i] > max1) {
max2 = max1;
max1 = arr[i];
} else if (arr[i] > max2) {
max2 = arr[i];
}
}
printf("Два наибольших элемента:\n");
printf("1. %lf\n", max1);
printf("2. %lf\n", max2);
return 0;
}
Пример работы программы:
Введите количество элементов массива (не более 30): 5Введите элементы массива:
10.5
20.7
15.2
18.3
12.6
Два наибольших элемента:
1. 20.700000
2. 18.300000