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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 7
#define M 7
int main()
{
    int A[N][N], B[N][N], i, j, k, m, minRow, minCol, maxRow, maxCol;
    srand(time(NULL));
    for(i = 0; i < N; i++, putchar('\n'))
        for(j = 0; j < M; j++)
            printf("%3d", A[i][j] = rand() % 27 + 1);
    putchar('\n');
    for(i = 0; i < N; i++, putchar('\n'))
        for(j = 0; j < M; j++){
            if(i != j){
                if(i > j)
                    printf("%5d", B[i][j] = B[j][i]);
                else{
                    minCol = minRow = maxCol = maxRow = i;
                    for(k = i; k <= j; k++){
                        for(m = i; m <= j; m++){
                            if(A[k][m] < A[minRow][minCol]){
                                minRow = k;
                                minCol = m;
                            }
                            if(A[k][m] > A[maxRow][maxCol]){
                                maxRow = k;
                                maxCol = m;
                            }
                        }
                    }
                    printf("%5d", B[i][j] = A[minRow][minCol] * A[maxRow][maxCol]);
                }
            }
            else
                printf("%5d",B[i][j] = A[i][j]);
        }
    return 0;
}

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

  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
Похожие ответы