Получить новую матрицу из исходной - 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с функциями ввода-вывода, генерацией случайных чисел и временем.
- Определяются значения N и M, которые представляют собой размеры матрицы.
- В основной функции int main() инициализируются матрицы A и B, а также переменные i, j, k, m, minRow, minCol, maxRow, maxCol.
- С помощью функции srand(time(NULL)) инициализируется генератор случайных чисел текущим временем.
- С помощью двух вложенных циклов заполняется матрица A случайными числами от 1 до 27.
- С помощью функции printf выводится на экран содержимое матрицы A.
- С помощью двух вложенных циклов происходит сравнение элементов матрицы A и если элемент A[i][j] не равен элементу A[j][i], то выполняется блок кода, который находит минимальный и максимальный элементы в текущей строке и столбце матрицы A и сохраняет их в переменные minRow, minCol, maxRow, maxCol.
- С помощью функции printf выводится на экран содержимое матрицы B, которое представляет собой произведение минимального и максимального элементов в текущей строке и столбце матрицы A.
- Возвращается значение 0, что означает успешное завершение работы программы.