ianclever
(usa Arch Linux)
Enviado em 30/05/2013 - 22:03h
pronto feito!
ta aí:
#include <stdio.h>
int cont, cont2,n,matrizp[200][200], matrizt[200][200] ,matrizi[200][200] ,matrizin[200][200], matriza[200][200],matrizb[200][200];
void lermatrizprincipal()
{
int i,j;
printf("\nDigite o tamanho 'n'(no máximo 200) de uma matriz quadrada n x n: \n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\nDigite o número da posição %d,%d : ",i,j);
scanf("%d",&matrizp[i][j]);
}
}
}
void transportar()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
matrizt[i][j]=matrizp[j][i];
}
}
}
void lerinversa()
{
int i,j;
printf("\nInforme os números de uma matriz para \n\npodermos conferir se é inversa da primeira\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\nDigite o numero da posição %d,%d: ",i,j);
scanf("%d",&matrizin[i][j]);
}
}
}
void gerar_m_identidade()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i==j)
{
matrizi[i][j]=1;
}
else
{
matrizi[i][j]=0;
}
}
}
}
void conferir_inversa()
{
int a,b,c;
cont=0;
cont2=0;
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
for(c=0;c<n;c++)
{
matriza[a][b]+=matrizp[a][b]*matrizin[c][b];
matrizb[a][b]+=matrizin[a][b]*matrizp[c][b];
}
}
}
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
if(matriza[a][b]!=matrizb[a][b])
{
cont++;
}
}
}
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
if(matriza[a][b]!=matrizi[a][b])
{
cont2++;
}
}
}
}
void imprimirprincipal()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if((j==0)&&(i!=1))
{
printf("\n\t");
printf("|");
}
else
{
if((j==0)&&(i==1))
{
printf("\n A=\t");
printf("|");
}
}
printf(" %d ",matrizp[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n ");
}
void imprimirtransposta()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if((j==0)&&(i!=1))
{
printf("\n\t");
printf("|");
}
else
{
if((j==0)&&(i==1))
{
printf("\n T=\t");
printf("|");
}
}
printf(" %d ",matrizt[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n ");
}
void imprimirinversa()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizp[i][j]);
if((j==n-1))
{
printf("|");
}
}
}
printf("\n\n ><\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizin[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n __");
printf("\n __\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matriza[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n_____________________________________________________________\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizin[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n ><\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizp[i][j]);
if((j==n-1))
{
printf("|");
}
}
}
printf("\n\n __");
printf("\n __\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizb[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n______________________________________________________________\n");
if(cont!=0)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matriza[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n --/--");
printf("\n -/---\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizb[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n --/--");
printf("\n -/---\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizi[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\nNÃO É INVERSA!");
printf("\n______________________________________________________________\n");
}
else
{
if(cont==0)
{
if(cont2==0)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matriza[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n ----");
printf("\n ----\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizb[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n ----");
printf("\n ----\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizi[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\nÉ INVERSA!");
printf("\n______________________________________________________________\n");
}
else
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matriza[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n ----");
printf("\n ----\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizb[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\n --/--");
printf("\n -/---\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==0)
{
printf("\n |");
}
printf(" %d",matrizi[i][j]);
if(j==n-1)
{
printf("|");
}
}
}
printf("\n\nNÃO É INVERSA!");
printf("\n______________________________________________________________\n");
}
}
}
}
void menu()
{
int opc;
lermatrizprincipal();
system("clear");
do
{
printf("\n\n");
printf("\n|>>>>>>>>>>>>>>- MENU -<<<<<<<<<<<<<<<<<<|");
printf("\n|> <|");
printf("\n|> 1)Imprimir matriz transposta; <|");
printf("\n|> 2)Descobrir se matriz é inversa ; <|");
printf("\n|> 3)Limpar a tela; <|");
printf("\n|> 4)Sair; <|");
printf("\n|> <|");
printf("\n|>>>>>>>>>>>>>>- MENU -<<<<<<<<<<<<<<<<<<|");
printf("\n\nDigite uma opção: ");
scanf("%d",&opc);
__fpurge(stdin);
switch(opc)
{
case 1:
{
system("clear");
transportar();
printf("\n\n");
imprimirprincipal();
printf("\n\n");
imprimirtransposta();
break;
}
case 2:
{
system("clear");
lerinversa();
gerar_m_identidade();
conferir_inversa();
imprimirinversa();
}
break;
case 3:
system("clear");
break;
case 4:
break;
}
}while(opc!=4);
}
main()
{
menu();
}