Ir para conteúdo
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");

}

Compartilhar este post


Link para o post
Compartilhar em outros 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");
} 

Compartilhar este post


Link para o post
Compartilhar em outros 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]);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.