Построить матрицу по правилу - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста решить программу.
По матрице A = ||aij|| размером 10x10 построить матрицу B = ||bij|| того же размера, элемент bi которой равен минимальному элементу треугольника в A, определяемого элементом aij:
Буду очень благодарен за помощь в решении. Большое спасибо.
Решение задачи: «Построить матрицу по правилу»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int nRow = 9;
int nCol = 9; ;
int **b = malloc(nRow * sizeof(int*));
for (int i = 0; i < nRow; ++i)
*(b + i) = (int*) calloc(nCol, sizeof(int));
//тривиальная задача - диагональ i==j , i и j заданы, условие для верхнего треугольника:
// при заданном i имеем j>=i && j <=j заданного. Аналогично для нижнего.
int row = 1, col = nCol / 2 + 1;
for (int i = 0; i < nRow; ++i)
for (int j = 0; j < nCol; ++j) {
if (i >= row && j >= i && j <= col)
*(*(b + i) + j) = 1;
if (i <= nRow - 1 - row && j <= i && j >= nCol - col - 1)
*(*(b + i) + j) = 2;
}
for (int i = 0; i < nRow; ++i) {
for (int j = 0; j < nCol; ++j)
printf("%3d", b[i][j]);
puts("");
}
for (int i = 0; i < nRow; ++i)
free(b[i]);
free(b);
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
В этом коде:
- b - это двумерный массив (матрица), который был выделен динамически с помощью функции
malloc(). - nRow и nCol - это переменные, которые определяют размер матрицы.
- В цикле
forпроисходит заполнение матрицы значениями. Условие в скобках(i >= row && j >= i && j <= col)проверяет, что элемент находится в верхнем треугольнике матрицы. Если это так, то значение этого элемента устанавливается в 1. - Аналогично, условие в скобках
(i <= nRow - 1 - row && j <= i && j >= nCol - col - 1)проверяет, что элемент находится в нижнем треугольнике матрицы. Если это так, то значение этого элемента устанавливается в 2. - Затем матрица выводится на экран с помощью цикла
forи функцииprintf(). - После использования матрицы, она освобождается с помощью функции
free(). - В конце программы возвращается код успеха
EXIT_SUCCESS.