3
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
int linha=0, coluna=0, i, j, l, m;
int matriz_A[linha][coluna], matriz_B[linha][coluna], matriz_C[linha]
[coluna];
char escolha = '0';
printf("\n Qual operação com matrizes você quer fazer? ");
printf("\n (1) Adição");
printf("\n (2) Subtração");
printf("\n (3) Multiplicação \n");
scanf("%c%*[^\n]", &escolha);
if(escolha =='1')
{
printf("\n Informe quantas linhas terá a matriz: ");
scanf("%i", &linha);
printf("\n Informe quantas colunas terá a matriz: ");
scanf("%i", &coluna);
printf("\n Informe os valores da matriz A: \n");
for(i=0; i<linha; i++)
{
for(j=0; j<coluna; j++)
{
scanf("%d", &matriz_A[i][j]);
}
}
printf("\n Informe os valores da matriz B: \n");
for(l=0; l<linha; l++)
{
for(m=0; m<coluna; m++)
{
scanf("%d", &matriz_B[l][m]);
}
}
printf("\n Abaixo temos a matriz A \n");
for(i=0; i<linha; i++)
{
for(j=0; j<coluna; j++)
{
printf(" %d ", matriz_B[i][j]);
}
printf("\n");
}
}
return 0;
}
Below the output when I put in the matrix A 2x2, the values 1234:
3 4
3 4
Why the program always prints and repeats only the last 2 numbers I type independent of the matrix order?
I noticed that this is fixed by changing the initialization value of the variables line and spine for any value greater than 0. But if I am assigning a value for both scanf()
wasn’t that supposed to be fixed? Whenever I try to initialize both with no value they pick up memory junk.
Note that when you declare your matrices the row and column variables are zeroed. Declare them after reading these variables (which will not work in older compiler versions) or make dynamic memory allocation.
– anonimo