Ir ao conteúdo
  • Cadastre-se

Matrizes


Mateus Nunes

Posts recomendados

Pessoal, alguém sabe como ficaria a condição para verificar se a diagonal principal da matriz é igual a secundária??

O que eu fiz não está correto. O problema está no final, acredito....

Obrigado!

#include <stdio.h>
#include <locale.h>
#define nlin 2
#define ncol 2
main()
{
int mat[nlin][ncol],col,lin,diag_p[nlin],diag_s[nlin],k=0,aux=0;

setlocale(LC_ALL,"portuguese");


printf("Informe %d valores: ",nlin*ncol);
for(lin=0;lin<=nlin-1;lin++)
{
for(col=0;col<=ncol-1;col++)
    {
    scanf("%d",&mat[lin][col]);
    }
}

system("pause");
system("cls");

printf("Valores armazenados na matriz:\n\n");
for(lin=0;lin<=nlin-1;lin++)
{
for(col=0;col<=ncol-1;col++)
    {
    printf("%d\t",mat[lin][col]);
    }
printf("\n");
}

//DIAGONAL PRINCIPAL
for(lin=0;lin<=nlin-1;lin++)
{
for(col=0;col<=ncol-1;col++)
    {
    if(lin==col){diag_p[k]=mat[lin][col];k++;}
    }
}

printf("\nDiagonal Principal:\n\n");
for(k=0;k<=lin-1;k++)
{
printf("%d\t",diag_p[k]);
}

//DIAGONAL SECUNDÁRIA
k=0;
for(lin=0;lin<=nlin-1;lin++)
{
for(col=0;col<=ncol-1;col++)
    {
    if(lin==nlin-1-col){diag_s[k]=mat[lin][col];k++;}
    }
}

printf("\n\nDiagonal Secundária:\n\n");
for(k=0;k<=lin-1;k++)
{
printf("%d\t",diag_s[k]);
}

//TESTE
for(k=0;k<=lin-1;k++)
{
if(diag_p[k]==diag_s[k]){aux=1;}
}

if(aux=1){printf("\n\nAs diagonais são iguais!");}
else {printf("\n\nAs diagonais são diferentes!");}


printf("\n\n\nFim da Programação!!!!");
printf("\n\n\n\n");
}

 

Link para o comentário
Compartilhar em outros sites

 

@Mateus NunesBoa tarde,

A matriz é necessariamente uma Matriz (i ,j) 2x2?

Sim, então: Na condição de (diag. Principal ==  diag. Segundaria) é preciso que todos os elemento sejam iguais.

 

Prof. Mauro Britivaldo Matriz.jpg

47 minutos atrás, Mateus Nunes disse:

 

Cara, na verdade, eu só usei o define pra não entrar com tantos valores toda hora. Tu tá querendo dizer que para cada ordem, a condição muda?

Desculpa se eu não entendi....

 

De maneira alguma, ---Não, mesmo! Porém se o problemas estivesse em uma matriz quadrada  de ordem 2, o solução é simples.

 

A matriz é necessariamente uma Matriz (i ,j) quadrada?

Quero dizer que i será sempre igual a j.

Mauro Britivaldo Matriz(4x4).jpg

47 minutos atrás, Mateus Nunes disse:

Sim, matriz quadrada!

 

No esquema acima é possível determinarmos alguns noções, duas noções na verdade. Logo a seguir estão estas noções:

  • x = j = i, logo x é tanto a linha(i), quanto coluna(j): se x = 0, incrementamos x 1 a 1 descolaremos i, j simultaneamente, com isso teremos a diagonal principal.
  • No instante do começo do laço i = 1, j = 4, no segundo instante do laço i = 2, j = 3. logo notamos que para cada incremento de i, existe um decremento de j, com isso teremos a diagonal segundaria.

 

O código

//Mauro Britivaldo
#include <stdio.h>
int main( void )
{
  int Matrix[2][2] = {
          { 2, 2 },
          { 2, 3 }};

 int i,j,x;
  x = 0, i = 0, j = 1;

 for( ; x < 2 ;x++, i++, j-- )
 {
   printf( "%d == %d? %s\n",
          Matrix[x][x],   Matrix[i][j],
          Matrix[x][x] == Matrix[i][j]? "SIM":"NAO");
 }
 return 0;
 
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!