Поменять местами максимальный и минимальный элементы массива - C (СИ)
Формулировка задачи:
Ошибка тут скорее всего не одна))реализовывал программу через глобальные переменные,теперь требуется без них.Помогите разобраться,заранее благодарен.
Программа делает вот что : Находит мин.элемент и макс.элемент и меняет их местами
#include <stdio.h> void VvodMas(int aa[],int *nn) { int i; scanf("%d",nn); for (i = 0;i < *nn;i++) { scanf ("%d",&aa[i]); } } int NaitiMin(int aa[],int nn,int ind_min_a) { int i; int min = aa[0]; ind_min_a = 0; for(i = 1;i < nn;i++) { if (aa[i] < min) { min = aa[i]; ind_min_a = i; } } return ind_min_a; } int NaitiMax(int aa[],int nn,int ind_max_a) { int i; int max = aa[0]; ind_max_a = 0; for(i = 1;i < nn;i++) { if (aa[i] > max) { max = aa[i]; ind_max_a = i; } } return ind_max_a; } int Peremeshenie(int aa[]) { int ind_min; int ind_max; int tmp; tmp = aa[ind_min]; aa[ind_min] = aa[ind_max]; aa[ind_max]=tmp; return tmp; } void VivodMas(int aa[],int nn) { int i; for(i = 0;i < nn;i++) { printf("%d",&aa[i]); } } void main() { int a[10]; int n; int ind_min; int ind_max; VvodMas(a,&n); NaitiMin(a,n); NaitiMax(a,n); Peremeshenie(a); VivodMas(a,n); }
Решение задачи: «Поменять местами максимальный и минимальный элементы массива»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> void VvodMas(int aa[], int nn) { int i; for (i = 0; i < nn ;i++) { printf("a[%d] = ", i); scanf ("%d",&aa[i]); } } int NaitiMin(int aa[],int nn) { int i, ind_min_a; int min = aa[0]; ind_min_a = 0; for(i = 1;i < nn;i++) { if (aa[i] < min) { min = aa[i]; ind_min_a = i; } } return ind_min_a; } int NaitiMax(int aa[],int nn) { int i, ind_max_a; int max = aa[0]; ind_max_a = 0; for(i = 1;i < nn;i++) { if (aa[i] > max) { max = aa[i]; ind_max_a = i; } } return ind_max_a; } void Peremeshenie(int aa[], int ind_min, int ind_max) { int tmp; tmp = aa[ind_min]; aa[ind_min] = aa[ind_max]; aa[ind_max]=tmp; } void VivodMas(int aa[],int nn) { int i; for(i = 0;i < nn;i++) { printf("%d ",aa[i]); } printf("\n"); } void main() { int *a; int n; //размерность массива do { printf("n = "); scanf("%d",&n); } while (n < 0 || n > 10); a = (int *)malloc(n * sizeof(int)); int ind_min; int ind_max; VvodMas(a, n); printf("Massiv: \n"); VivodMas(a,n); ind_min = NaitiMin(a,n); printf("ind_min = %d\n",ind_min); ind_max = NaitiMax(a,n); printf("ind_max = %d\n",ind_max); Peremeshenie(a,ind_min,ind_max); printf("Massiv: \n"); VivodMas(a,n); free(a); getch(); }
Объяснение кода листинга программы
- Ввод массива с помощью функции VvodMas. Эта функция считывает значения массива с помощью функции scanf.
- Поиск минимального элемента массива с помощью функции NaitiMin. Эта функция сравнивает каждый элемент массива с текущим минимальным значением и обновляет его, если найден элемент меньше текущего минимального значения. Функция возвращает индекс минимального элемента.
- Поиск максимального элемента массива с помощью функции NaitiMax. Эта функция работает аналогично функции NaitiMin, но сравнивает каждый элемент массива с текущим максимальным значением и обновляет его, если найден элемент больше текущего максимального значения. Функция возвращает индекс максимального элемента.
- Функция Peremeshenie меняет местами максимальный и минимальный элементы массива. Она делает это путем копирования значения минимального элемента в переменную tmp, затем копирования значения максимального элемента в позицию минимального элемента и, наконец, копирования значения tmp (которое является исходным минимальным значением) в позицию максимального элемента.
- Вывод массива с помощью функции VivodMas. Эта функция проходит по каждому элементу массива и выводит его значение с помощью функции printf.
- Основная функция main сначала запрашивает размер массива у пользователя и проверяет, что он находится в допустимом диапазоне. Затем она выделяет память для массива с помощью функции malloc. После ввода массива и вывода его на экран, функция main вызывает функцию NaitiMin для поиска индекса минимального элемента и функцию NaitiMax для поиска индекса максимального элемента. Затем она вызывает функцию Peremeshenie для обмена местами максимального и минимального элементов. После этого она снова выводит массив на экран и освобождает выделенную память с помощью функции free. Наконец, она вызывает функцию getch для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д