Ir ao conteúdo
  • Cadastre-se

C questao de matrizes em C


Lobo Euforico

Posts recomendados

olá irmãos programadores,hj é meu primeiro post nesse fórum,espero que n seja ultimo pfv me ajudem a melhorar hehhe,seguinte galera faço faculdade de ciencia da computaçao e estou com questao que estou tendo problema, a questao pede que uma matriz[5][5] onde nas diagonal vou colocar 1 e o resto preencher com zero poderiam dizer no que meu codigo esta errado.

 

 

#include <stdio.h>
int main (){
int matriz[5][5],linha,coluna,aux=5;

    for(linha=0;linha<5;linha++){
      for(coluna=aux;coluna>0;coluna--){

         if(coluna==aux){
          matriz[linha][coluna]=1;
         }else
         matriz[linha][coluna]=0;
      aux--;
      }
    }
    for(linha=0;linha<5;linha++){
      for(coluna=aux;coluna>0;coluna--){
        printf("%d\n",matriz[linha][coluna]);
        aux--;
      }
   }
}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Você está no caminho. Tente sem a variável aux, comece o "for" da coluna em "0" - igual o "for" da linha -  e mantenha seu "if (linha == coluna)". Deve funcionar já.

 

O problema do seu código é que você está começando a coluna por 5, mas sua matriz 5x5 tem como índice máximo [4][4] - não esqueça que começamos a partir do 0 -, então você está preenchendo posição da matriz que não existe e parando antes do índice 0.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Lobo Euforico    essa variável aux está te atrapalhando , melhor começar os loop de zero e ir até enquanto for menor que 5 e use outra variável começando com valor de 4 para colocar os 1 na outra diagonal, então depois do primeiro loop diminua o valor dessa variável, para que ela posicione no local certo da próxima linha e na hora de imprimir a matriz é melhor usar dois loop começando de zero também e depois do primeiro loop  pule uma linha .

Link para o comentário
Compartilhar em outros sites

@Chrissy Costanza @devair1010  obg vocês dois por terem respondidos tentei modificar algumas coisas mas o codigo so fica colocando 0 nas matriz olhem o codigo pfv

 

int main (){
int matriz[5][5],linha,coluna,aux=4;

     for(linha=0;linha<5;linha++){
        for(coluna=0;coluna<5;coluna++){
            if(coluna==aux){
             matriz[linha][coluna]=1;
             aux--;
            }
            if(coluna!=aux){
             matriz[linha][coluna]=0;
            }
        }
     }
  for(linha=0;linha<5;linha++){
        for(coluna=0;coluna<5;coluna++){
         printf("%d",matriz[linha][coluna]);
        }
  printf("\n");

  }
return 0;
}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Lobo Euforico   você ainda está usando a variável aux,  não a use e coloque mais uma variável por exemplo p do tipo inteiro com o valor 4 e na hora de comparar coloque assim :

if(coluna==linha){
    matriz[linha][coluna]=1;
}
matriz[linha][p]=1;  

esse p é para fazer a outra diagonal, então depois do for coluna coloque p - -

e coloque essas variáveis lá em cima antes da main, pois lá elas serão zeradas automaticamente, não necessitando que você zere a matriz se a linha for diferente da coluna.

int matriz[5][5],linha,coluna,p=4;

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!