Найти наибольший и наименьший элементы массива и поменять их местами - C (СИ)
Формулировка задачи:
Ввести массив вещественных чисел размером п, п вводиться с клавиатуры. Найти его наибольший и наименьший элементы и поменять их местами. Найти сумму и произведение всех элементов массива.
Решение задачи: «Найти наибольший и наименьший элементы массива и поменять их местами»
textual
Листинг программы
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "RU");
int n;
printf("Введите размер массива\n");
scanf("%d", &n);
double arr[n];
printf("Введите массив\n");
for(int i=0; i<n; i++){
scanf("%lf", &arr[i]);}
int posMax = 0, posMin = 0;
double max = arr[0], min = arr[0];
for(int i=0; i<n; i++){
if(max < arr[i]){
max = arr[i];
posMax = i;}
if(min > arr[i]){
min = arr[i];
posMin = i;}
}
printf("Максимум %lf; Минимум %lf\n", max, min);
printf("Поменяем их местами\n");
arr[posMax] = min;
arr[posMin] = max;
for(int i=0; i<n; i++){
printf("%lf ", arr[i]);}
printf("\n");
printf("Сумма элементов массива ");
max = 0;
for(int i=0; i<n; i++){
max += arr[i];}
printf("%lf\n", max);
printf("Произведение элементов массива ");
max = 1;
for(int i=0; i<n; i++){
max *= arr[i];}
printf("%lf\n", max);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- *int main(int argc, char argv[])** - это функция main программы, она запускается при запуске программы.
- setlocale(LC_ALL,
RU) - это установка локали на русский язык для вывода сообщений. - int n; - это переменная для хранения размера массива.
- printf(
Введите размер массива\n); - это сообщение для пользователя, чтобы он ввел размер массива. - scanf(
%d, &n); - это чтение размера массива из ввода пользователя. - double arr[n]; - это объявление массива arr размером n.
- printf(
Введите массив\n); - это сообщение для пользователя, чтобы он ввел массив. - for(int i=0; i<n; i++){ - это цикл для прохода по всем элементам массива.
- scanf(
%lf, &arr[i]); - это чтение элемента массива из ввода пользователя. - int posMax = 0, posMin = 0; - это переменные для хранения позиции максимального и минимального элементов массива.
- double max = arr[0], min = arr[0]; - это переменные для хранения начального значения максимального и минимального элементов массива.
- for(int i=0; i<n; i++){ - это цикл для поиска максимального и минимального элементов массива.
- if(max < arr[i]){ - это условие для проверки, является ли текущий элемент больше текущего максимального элемента.
- max = arr[i]; - это обновление значения максимального элемента.
- posMax = i; - это обновление значения позиции максимального элемента.
- if(min > arr[i]){ - это условие для проверки, является ли текущий элемент меньше текущего минимального элемента.
- min = arr[i]; - это обновление значения минимального элемента.
- posMin = i; - это обновление значения позиции минимального элемента.
- printf(
Максимум %lf; Минимум %lf\n, max, min); - это вывод значений максимального и минимального элементов массива. - printf(
Поменяем их местами\n); - это сообщение для пользователя о том, что элементы будут переставлены. - arr[posMax] = min; - это перестановка максимального и минимального элементов.
- arr[posMin] = max; - это перестановка максимального и минимального элементов.
- for(int i=0; i<n; i++){ - это цикл для вывода всех элементов массива.
- printf(
%lf, arr[i]); - это вывод значения элемента массива. - printf(
\n); - это завершение вывода. - printf(
Сумма элементов массива); - это вывод суммы элементов массива. - max = 0; - это обновление начального значения суммы.
- for(int i=0; i<n; i++){ - это цикл для прохода по всем элементам массива.
- max += arr[i]; - это обновление значения суммы.
- printf(
%lf\n, max); - это вывод значения суммы. - printf(
Произведение элементов массива); - это вывод произведения элементов массива. - max = 1; - это обновление начального значения произведения.
- for(int i=0; i<n; i++){ - это цикл для прохода по всем элементам массива.
- *max = arr[i];** - это обновление значения произведения.
- printf(
%lf\n, max); - это вывод значения произведения. - return 0; - это выход из функции main программы.