Получить новую матрицу того же размера по правилу - C (СИ)
Формулировка задачи:
Даны две действительные квадратные матрицы размером n =< 7. Получить новую матрицу того же размера путем добавления к элементам каждого столбца первой матрицы произведения элементов соответствующей строки второй матрицы.
Решение задачи: «Получить новую матрицу того же размера по правилу»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
#define N 5
void fill_matrix(int** A, bool zero = false)
{
for (int i = 0; i < N; i++)
{
A[i] = new int[N];
for (int j = 0; j < N; j++)
{
A[i][j] = (!zero) ? rand() % N + 1 : 0;
printf("%d ",A[i][j]);
}
printf("\n");
}
printf("\n");
}
int main(int argc, char* argv[])
{
int** A = new int*[N];
memset((void*)A, 0x00, sizeof(int*) * N);
int** B = new int*[N];
memset((void*)B, 0x00, sizeof(int*) * N);
int** C = new int*[N];
memset((void*)C, 0x00, sizeof(int*) * N);
fill_matrix(A); fill_matrix(B); fill_matrix(C, 1);
for (int q = 0; q < N; q++)
{
int mul = 1, i = 0;
while (i < N) mul*=B[q][i++];
for (int j = 0; j < N; j++)
C[j][q] = A[j][q] + mul;
}
for (int z1 = 0; z1 < N; z1++)
{
for (int z2 = 0; z2 < N; z2++)
printf("%d ",C[z1][z2]);
printf("\n");
}
_getch();
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется размер матрицы N
- Создается функция fill_matrix для заполнения матрицы A с использованием генератора случайных чисел
- В функции main создаются матрицы A, B и C динамически с помощью оператора new
- Функция fill_matrix вызывается для заполнения матрицы A, B и C
- В цикле перебираются элементы матрицы C, умножая их на соответствующие элементы матрицы B
- В цикле перебираются элементы матрицы C, выводя их на экран
- Вызывается функция _getch для приостановки выполнения программы до нажатия клавиши
- Программа возвращает 0, завершаясь