В матрице вещественных чисел X(n*n) найти максимальный и минимальный элементы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В матрице вещественных чисел X(n*n) найти максимальный и минимальный элементы. Поменять местами элементы строки с максимальным значением и элементы столбца с минимальным значением. Дано условие нужно написать программу. Большая часть программы готова ее нужно дописать а именно чтобы менялись столбцы после строк.
Листинг программы
  1. #include <stdlib.h>
  2. #include <time.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5.  
  6. #define N 20
  7. void PrintArr(int a[][N],int n,int m) //функция для печати массива
  8. {
  9. int i,j;
  10. for (i=0; i<n; i++)
  11. {
  12. for (j=0; j<m; j++)
  13. {
  14. printf ("%d\t", a[i][j]);
  15. }
  16. printf("\n \n");
  17. }
  18. }
  19. int main(void)
  20. {
  21. int A[N][N];
  22. int j, i, n, m, min, max;
  23. int max_str=0,min_str=0;
  24. do
  25. {
  26. printf ("\nVvedite kol-vo strok v massive A: ");
  27. scanf ("%d", &n);
  28. }
  29. while (n>=N || n<=2);
  30. do
  31. {
  32. printf ("\nVvedite kol-vo stolbcov v massive A: ");
  33. scanf ("%d", &m);
  34. }
  35. while (m>=N || m<=2);
  36. A[0][0]=-50+rand()%100; min=A[0][0], max=A[0][0]; //выбираем какой-нибудь элемент матрицы и максимальным и минимальным значением
  37. for (i=0; i<n; i++)
  38. {
  39. for (j=0; j<m; j++)
  40. {
  41. A[i][j]=-50+rand()%100; // "на ходу" заполняем массив
  42. if (A[i][j]>max){ max=A[i][j],max_str=i; continue; } // ищем максимальный элемент, если нашли - запоминаем строку
  43. if (A[i][j]<min) min=A[i][j],min_str=i; // ищем минимальный элемент, если нашли - запоминаем строку
  44. }
  45. }
  46. printf ("\n\n Ishodniy massiv: \n\n"); PrintArr(A,n,m);
  47. for (j=0;j<m;j++){ // производим обмен строк
  48. A[min_str][j]+=A[max_str][j];
  49. A[max_str][j]=A[min_str][j]-A[max_str][j];
  50. A[min_str][j]-=A[max_str][j];
  51. }
  52. printf ("\n\n Poluchennyi massiv: \n\n"); PrintArr(A,n,m); // печатаем получившийся массив
  53. return 0;
  54. }

Решение задачи: «В матрице вещественных чисел X(n*n) найти максимальный и минимальный элементы»

textual
Листинг программы
  1. for (i=0; i<n; i++)
  2.    {
  3.         for (j=0; j<m; j++)
  4.          {
  5.             if (A[i][j]>max){ max=A[i][j],max_stolb=j; continue; } // ищем максимальный элемент, если нашли - запоминаем столбец
  6.             if (A[i][j]<min) min=A[i][j],min_stolb=j;  // ищем минимальный элемент, если нашли - запоминаем столбец         }
  7.    }  
  8.  
  9.       for (j=0;j<m;j++){             // производим  обмен столбцов
  10.          A[j][min_stolb]+=A[j][max_stolb];
  11.          A[j][max_stolb]=A[j][min_stolb]-A[j][max_stolb];
  12.          A[j][min_stolb]-=A[j][max_stolb];
  13.         }

Объяснение кода листинга программы

  1. Начинается с двух вложенных циклов, первый из которых идет от 0 до n-1, а второй от 0 до m-1. Второй цикл выполняется при каждой итерации первого.
  2. Внутри второго цикла проверяется, является ли текущий элемент матрицы A[i][j] больше максимального найденного до этого элемента. Если это так, то max обновляется до значения A[i][j] и min обновляется до значения A[i][j]. Также запоминается номер столбца, в котором был найден минимальный элемент.
  3. После завершения первого цикла, во втором цикле происходит обмен столбцов матрицы A. Значение столбца, соответствующего минимальному элементу, перемещается в столбец, соответствующий максимальному элементу, и наоборот.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы