В матрице вещественных чисел X(n*n) найти максимальный и минимальный элементы - C (СИ)
Формулировка задачи:
В матрице вещественных чисел X(n*n) найти максимальный и минимальный элементы.
Поменять местами элементы строки с максимальным значением и элементы столбца с
минимальным значением.
Дано условие нужно написать программу. Большая часть программы готова ее нужно дописать а именно чтобы менялись столбцы после строк.
Листинг программы
- #include <stdlib.h>
- #include <time.h>
- #include <stdio.h>
- #include <conio.h>
- #define N 20
- void PrintArr(int a[][N],int n,int m) //функция для печати массива
- {
- int i,j;
- for (i=0; i<n; i++)
- {
- for (j=0; j<m; j++)
- {
- printf ("%d\t", a[i][j]);
- }
- printf("\n \n");
- }
- }
- int main(void)
- {
- int A[N][N];
- int j, i, n, m, min, max;
- int max_str=0,min_str=0;
- do
- {
- printf ("\nVvedite kol-vo strok v massive A: ");
- scanf ("%d", &n);
- }
- while (n>=N || n<=2);
- do
- {
- printf ("\nVvedite kol-vo stolbcov v massive A: ");
- scanf ("%d", &m);
- }
- while (m>=N || m<=2);
- A[0][0]=-50+rand()%100; min=A[0][0], max=A[0][0]; //выбираем какой-нибудь элемент матрицы и максимальным и минимальным значением
- for (i=0; i<n; i++)
- {
- for (j=0; j<m; j++)
- {
- A[i][j]=-50+rand()%100; // "на ходу" заполняем массив
- if (A[i][j]>max){ max=A[i][j],max_str=i; continue; } // ищем максимальный элемент, если нашли - запоминаем строку
- if (A[i][j]<min) min=A[i][j],min_str=i; // ищем минимальный элемент, если нашли - запоминаем строку
- }
- }
- printf ("\n\n Ishodniy massiv: \n\n"); PrintArr(A,n,m);
- for (j=0;j<m;j++){ // производим обмен строк
- A[min_str][j]+=A[max_str][j];
- A[max_str][j]=A[min_str][j]-A[max_str][j];
- A[min_str][j]-=A[max_str][j];
- }
- printf ("\n\n Poluchennyi massiv: \n\n"); PrintArr(A,n,m); // печатаем получившийся массив
- return 0;
- }
Решение задачи: «В матрице вещественных чисел X(n*n) найти максимальный и минимальный элементы»
textual
Листинг программы
- for (i=0; i<n; i++)
- {
- for (j=0; j<m; j++)
- {
- if (A[i][j]>max){ max=A[i][j],max_stolb=j; continue; } // ищем максимальный элемент, если нашли - запоминаем столбец
- if (A[i][j]<min) min=A[i][j],min_stolb=j; // ищем минимальный элемент, если нашли - запоминаем столбец }
- }
- for (j=0;j<m;j++){ // производим обмен столбцов
- A[j][min_stolb]+=A[j][max_stolb];
- A[j][max_stolb]=A[j][min_stolb]-A[j][max_stolb];
- A[j][min_stolb]-=A[j][max_stolb];
- }
Объяснение кода листинга программы
- Начинается с двух вложенных циклов, первый из которых идет от 0 до n-1, а второй от 0 до m-1. Второй цикл выполняется при каждой итерации первого.
- Внутри второго цикла проверяется, является ли текущий элемент матрицы A[i][j] больше максимального найденного до этого элемента. Если это так, то max обновляется до значения A[i][j] и min обновляется до значения A[i][j]. Также запоминается номер столбца, в котором был найден минимальный элемент.
- После завершения первого цикла, во втором цикле происходит обмен столбцов матрицы A. Значение столбца, соответствующего минимальному элементу, перемещается в столбец, соответствующий максимальному элементу, и наоборот.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д