Der folgende Code die falsche Antwort geben, ich eingeben:Warum gibt dieser Matrixadditionscode die falsche Antwort? wenn zum Beispiel
1st Matrix
1 2 3
4 5 6
7 8 9
2nd Matrix
2 2 2
2 2 2
2 2 2
Es gibt mir diese Matrix Summenausgang:
9 10 11
9 10 11
9 10 11
, die offensichtlich falsch ist! Ich kann nicht finden, warum?
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int r,c;
int ir,ic;
int matrix1[r][c];
int matrix2[r][c];
int finalmatrix[r][c];
printf("Insert number of rows of the matrixes (max 10): ");
scanf("%d", &r);
printf("Insert number of columns of the matrixes (max 10): ");
scanf("%d", &c);
while(r!=c)
{
printf("The number of rows and columns are not equal, retry:\n");
printf("Insert number of rows of the Matrix (max 10): ");
scanf("%d", &r);
printf("Insert number of columns of the Matrix (max 10): ");
scanf("%d", &c);
}
for(ir=1; ir<=r; ir++)
{
for(ic=1; ic<=c; ic++)
{
printf("Insert element row %d and column %d of the first matrix: ", ir, ic);
scanf("%d", &matrix1[ir][ic]);
}
}
for(ir=1; ir<=r; ir++)
{
for(ic=1; ic<=c; ic++)
{
printf("Insert element row %d and column %d of the second matrix: ", ir, ic);
scanf("%d", &matrix2[ir][ic]);
}
}
for(ir=1; ir<=r; ir++)
{
for(ic=1; ic<=c; ic++)
{
finalmatrix[ir][ic]=matrix1[ir][ic]+matrix2[ir][ic];
}
}
printf("The sum Matrix is:\n");
for(ir=1; ir<=r; ir++)
{
for(ic=1; ic<=c; ic++)
{
printf("%d ", finalmatrix[ir][ic]);
}
printf("\n");
}
return 0;
}
Sie matrix Deklaration geht mit undefinierten Werten in r & c; zumindest definieren einige Standard max Werte für sie, wie int r = 100, c = 100; noch besser wäre es, Matrizen dynamisch zuzuweisen – Flanker
danke ich habe jetzt beide Variablen initialisiert und es funktioniert: D –
** Immer ** Compiler Warnungen aktivieren! Jeder moderne Compiler wird eine Warnung vor solchen Situationen anzeigen. – Olaf