#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void matrixRandomFill(int size, int size2, int matrix[size][size2]) {
srand(time(NULL));
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size2; j++ ) {
matrix[i][j] = rand() % 9;
}
}
}
void matrixSum(int size, int size2, int matrix1[size][size2], int matrix2[size] [size2], int matrixSum[size][size2]) {
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size2; j++ ) {
matrixSum[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
}
void matrixSubstract(int size, int size2, int matrix1[size][size2], int matrix2[size] [size2], int matrixSubstract[size][size2]) {
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size2; j++ ) {
matrixSubstract[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
}
void matrixMultiply(int size, int size2, int matrix1[size][size2], int matrix2[size] [size2], int matrixMultiply[size][size2]) {
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size2; j++ ) {
matrixMultiply[i][j] = matrix1[i][j] * matrix2[i][j];
}
}
}
void matrixPrint(int size, int size2, int matrix[size][size2]) {
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size2; j++ ) {
printf("%2d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int size;
printf("Enter matrix size NxN: ");
scanf("%d", &size);
int matrix1[size][size];
int matrix2[size][size];
int matrixSum[size][size];
int matrixSubstract[size][size];
int matrixMultiply[size][size];
matrixRandomFill(size, size, matrix1);
matrixRandomFill(size, size, matrix2);
printf("Printing first matrix:\n");
matrixPrint(size, size, matrix1);
printf("--------------------------------------\n");
printf("Printing second matrix:\n");
matrixPrint(size, size, matrix2);
printf("--------------------------------------\n");
printf("Printing matrix1 + matrix2:\n");
matrixPrint(size, size, matrixSum);
printf("--------------------------------------\n");
printf("Printing matrix1 - matrix2:\n");
matrixPrint(size, size, matrixSubstract);
printf("--------------------------------------\n");
printf("Printing matrix1 * matrix2:\n");
matrixPrint(size, size, matrixMultiply);
printf("--------------------------------------\n");
return 0;
}
関数は正常に見えますが、私は次のようなものを取得し続けます:printing matrix1 + matrix2: 0 0 0 0 0 0 0 0 0
また
マトリックス 1 の印刷 - マトリックス 2: -1761243347 32767 -1761341440 32767 0 0 0 0 0
ある種のセグメンテーション違反のように見えますが、どこで間違いを犯したのかわかりません。