Jump to content
marialuiza

Matriz em c

Recommended Posts

Matriz 10x10 não tá funcionando, alguém ajuda?


int main()


{

int m[10][10];

int i,j;

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

{

printf("Digite o valor: ");

scanf("%d", &m[j]);

}

}

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

{


printf("%d", &m[j]);

}

printf("\n");

}

system("pause");

}

Share this post


Link to post
Share on other sites

Ola maria luiza, o unico erro do seu esta nessa linha:

printf("%d", &m[j]);

A funcao printf ao contrario do scanf recebe um valor e nao um endereço de memoria, e m[j] é um valor ja &m[j] é um endereço. Akeles valores "estranhos" q sao mostrados, nao passam de uma representação em decimal dos endereços de memoria de cada variavel da matriz.

Só duas dicas antes de terminar, primeiro evite trabalhar com numeros constantes, oq nós chamamos de "numeros magicos", usar as macros de define para colocar os tamanhos é um otima pratica ;P e procure a opção "CODIGO" do forum, ela identa e facilita a leitura do seu codigo.

Espero ter ajudado, GLHF =D

#include <stdio.h>
#include <stdlib.h>

#define TAM 10

int main() 
{
 int m[TAM][TAM];
 int i,j;
  for(i=0;i<TAM;i++)
  {
      for(j=0;j<TAM;j++)
      {
          printf("Digite o valor: ");
          scanf("%d", &m[i][j]);
      }
  }
  for(i=0;i<TAM;i++)
  {
      for(j=0;j<TAM;j++)
      {
          printf("%d\n", m[i][j]);
      }
     printf("\n");
  }
  system("pause");
} 

Share this post


Link to post
Share on other sites
Em 09/11/2016 at 18:39, Nefisto disse:

Ola maria luiza, o unico erro do seu esta nessa linha:

printf("%d", &m[j]); 

Na verdade há duas linhas erradas e não apenas uma. Uma delas é essa que você diz. Por causa do caractere "e comercial" (&) a função printf irá mostrar o endereço de memória da matriz m e não o seu valor. Consequentemente irá aparecer um monte de números "estranhos" na hora de imprimir eles na tela bem como você diz. A outra linha errada é:

scanf("%d", &m[j]);

Faltam nessas duas linhas de código citadas o segundo índice da matriz m para que as 100 posições tenham seus valores lidos e depois armazenados nela. Como essa matriz é de 10 por 10 posições então não há como o programa armezenar e mostrar corretamente os 100 valores digitados se não for informado o segundo índice que corresponde as colunas da matriz sendo que o primeiro corresponde as linhas. Informar somente as linhas e não as colunas dá em resultados errados na hora de guardar e também mostrar os valores. Então respectivamente:

scanf("%d", &m[j]);

e

printf("%d", &m[j]);

Irá ficar:

scanf("%d", &m[i][j]);

e

printf("%d", m[i][j]);

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.