Возведение матрицы в квадрат
Мне нужно умножить массив на самого себя,при этом используя функцию.Я начинающий программист, поэтому не понимаю что не так.
при запуске выдает массив,но почему то пустой
#include <stdio.h>
int main()
{
const int n = 5;
int arr[n][n];
int arr1[n][n];
for(int i = 0; i < n; i++) // столбец
{
for(int j = 0; j < n; j++) //строка
{
arr[i][j] = j + 2;
printf("%d\n", arr1[i][j]);
}
}
return 0;
}
void matrix(int n)
{
int arr[n][n];
int arr1[n][n];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
arr1[i][j] = 0;
for(int l = 0; l < n; l++)
{
arr1[i][j] += arr[i][l] * arr[l][i];
return arr1[i][j];
}
}
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вот, несколько переделанная ваша программа...
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define n 5
void square(int a[n][n])
{
int r[n][n];
for(int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
{
r[i][j] = 0;
for(int k = 0; k < n; ++k)
r[i][j] += a[i][k]*a[k][j];
}
for(int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
a[i][j] = r[i][j];
}
int main()
{
int arr[n][n];
for(int i = 0; i < n; i++) // столбец
{
for(int j = 0; j < n; j++) //строка
{
arr[i][j] = j + 2;
printf("%3d ", arr[i][j]);
}
puts("");
}
puts("\n");
square(arr);
for(int i = 0; i < n; i++) // столбец
{
for(int j = 0; j < n; j++) //строка
{
printf("%3d ", arr[i][j]);
}
puts("");
}
}