Поменять местами строки матрицы с максимальным и минимальным элементами - C (СИ)

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

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

Всем доброго времени суток. Вот задание:

"Дана матрица действительных чисел размером 12х8. Поменять местами строки с максимальным и минимальным элементами"

Вот что я сделал. Здесь только вывод на экран матрицы. А дальше пошли проблемы... Если можно, с подробными объяснениями.
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
 
int main()
{
int A[20][20];
int j, i, N, M, min, max;
do
{ printf ("\nVvedite kol-vo strok v massive A: ");
scanf ("%d", &N);}
while (!(N<=20) && (N>=2));
do
{ printf ("\nVvedite kol-vo stolbcov v massive A: ");
scanf ("%d", &M);}
while (!(M<=20) && (M>=2));
printf ("\n\n Ishodniy massiv: \n\n"); 
for (i=0; i<N; i++) 
{
for (j=0; j<M; j++)
{
A[i][j]=-50+rand()%100;
printf ("%d\t", A[i][j]);
}
printf("\n \n");
} 
system ("PAUSE");
}

Решение задачи: «Поменять местами строки матрицы с максимальным и минимальным элементами»

textual
Листинг программы
#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;  
}

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

  1. Включаем необходимые заголовочные файлы
  2. Определяем размерность матрицы NxN с помощью #define
  3. Создаем функцию для печати матрицы
  4. Вводим количество строк и столбцов матрицы с помощью scanf
  5. Инициализируем первую ячейку матрицы A[0][0] случайным числом, и находим минимальное и максимальное значение в матрице
  6. Заполняем матрицу A случайными числами
  7. Находим строку с максимальным и минимальным значением в матрице
  8. Обмениваем строки местами
  9. Печатаем получившуюся матрицу
  10. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

6   голосов , оценка 4.333 из 5
Похожие ответы