Получить новую матрицу из исходной - C (СИ)

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

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

Получить матрицу В (nxn), в которой элемент Bij определяется как произведение наибольшего и наименьшего элемента исходной матрицы из области, определяемой индексами i и j следующим образом:

Решение задачи: «Получить новую матрицу из исходной»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define N 7
  5. #define M 7
  6. int main()
  7. {
  8.     int A[N][N], B[N][N], i, j, k, m, minRow, minCol, maxRow, maxCol;
  9.     srand(time(NULL));
  10.     for(i = 0; i < N; i++, putchar('\n'))
  11.         for(j = 0; j < M; j++)
  12.             printf("%3d", A[i][j] = rand() % 27 + 1);
  13.     putchar('\n');
  14.     for(i = 0; i < N; i++, putchar('\n'))
  15.         for(j = 0; j < M; j++){
  16.             if(i != j){
  17.                 if(i > j)
  18.                     printf("%5d", B[i][j] = B[j][i]);
  19.                 else{
  20.                     minCol = minRow = maxCol = maxRow = i;
  21.                     for(k = i; k <= j; k++){
  22.                         for(m = i; m <= j; m++){
  23.                             if(A[k][m] < A[minRow][minCol]){
  24.                                 minRow = k;
  25.                                 minCol = m;
  26.                             }
  27.                             if(A[k][m] > A[maxRow][maxCol]){
  28.                                 maxRow = k;
  29.                                 maxCol = m;
  30.                             }
  31.                         }
  32.                     }
  33.                     printf("%5d", B[i][j] = A[minRow][minCol] * A[maxRow][maxCol]);
  34.                 }
  35.             }
  36.             else
  37.                 printf("%5d",B[i][j] = A[i][j]);
  38.         }
  39.     return 0;
  40. }

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

  1. Включаются необходимые заголовочные файлы для работы с функциями ввода-вывода, генерацией случайных чисел и временем.
  2. Определяются значения N и M, которые представляют собой размеры матрицы.
  3. В основной функции int main() инициализируются матрицы A и B, а также переменные i, j, k, m, minRow, minCol, maxRow, maxCol.
  4. С помощью функции srand(time(NULL)) инициализируется генератор случайных чисел текущим временем.
  5. С помощью двух вложенных циклов заполняется матрица A случайными числами от 1 до 27.
  6. С помощью функции printf выводится на экран содержимое матрицы A.
  7. С помощью двух вложенных циклов происходит сравнение элементов матрицы A и если элемент A[i][j] не равен элементу A[j][i], то выполняется блок кода, который находит минимальный и максимальный элементы в текущей строке и столбце матрицы A и сохраняет их в переменные minRow, minCol, maxRow, maxCol.
  8. С помощью функции printf выводится на экран содержимое матрицы B, которое представляет собой произведение минимального и максимального элементов в текущей строке и столбце матрицы A.
  9. Возвращается значение 0, что означает успешное завершение работы программы.

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


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

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

14   голосов , оценка 4 из 5

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

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

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