Hace muuucho que no publico nada, de hecho olvide publicar las fechas de los últimos dos Grandes Premios de la F1 (Brazil y Abu Dhabi) pero no importa, ganó Jenson Button en pilotos y Brawn GP en constructores, como sea, si alguno de ustedes llega a llevar Programación en C++ y les piden un programa que calcule la matriz inversa de una matriz entera 3X3 pues yo comparto el código de uno, espero les sirva y también espero que suba la popularidad del blog (en realidad no, pero bueno, hay que tener esperanza...)
#include
#include
#include
void main(void)
{
int c1=0,i=0,j=0,mat[3][3],col=2,reng=4,detx[3],z=1,z1=2,det=0,adj[3][3],s=1,v,v1=1,v2=2,v3=2,z2;
float inv[3][3],idet;
clrscr();
gotoxy(2,2);
printf("Este programa calcula la inversa de una matriz 3X3");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
gotoxy(2,reng);
printf("Introduce la entrada (%d,%d) de la matriz: ",i+1,j+1);
scanf("%d",&mat[i][j]);
reng++;
}
}
gotoxy(2,14);
printf("Tu matriz es:");
c1=0;
i=0;
j=0;
reng=16;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
gotoxy(col,reng);
printf("%d",mat[i][j]);
col+=3;
}
reng++;
col=2;
}
////determinante
for(c1=0;c1<3;c1++)
{
if(c1==0)
{
z=1;
z1=2;
}
if(c1==1)
{
z=2;
z1=0;
}
if(c1==2)
{
z=0;
z1=1;
}
detx[c1]=mat[0][c1]*((mat[1][z]*mat[2][z1])-(mat[1][z1]*mat[2][z]));
}
c1=0;
for(c1=0;c1<3;c1++)
det=det+detx[c1];
gotoxy(2,20);
printf("El determinante de tu matriz es: %d",det);
/////inversa
if(det==0)
{
gotoxy(2,21);
printf("Tu matriz no es invertible");
}
else
{
gotoxy(2,21);
printf("Tu matriz es invertible, presiona Enter para obtener la inversa");
getch();
////adjunta
clrscr();
i=0;
j=0;
for(i=0;i<3;i++)
{
v=1;
if(i==0)
{
v1=1;
v2=2;
v3=2;
}
if(i==1)
v1=0;
if(i==2)
v3=1;
for(j=0;j<3;j++)
{
if(j==0)
v=1;
else
v=0;
if(j==2)
v2=1;
else
v2=2;
adj[i][j]=s*((mat[v][v1]*mat[v2][v3])-(mat[v][v3]*mat[v2][v1]));
s=-s;
}
}
gotoxy(2,2);
printf("Tu Matriz es: ");
i=0;
j=0;
col=2;
reng=4;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
gotoxy(col,reng);
printf("%d",mat[i][j]);
col+=3;
}
reng++;
col=2;
}
gotoxy(2,9);
printf("La matriz adjunta es:");
col=2;
reng=11;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
gotoxy(col,reng);
printf("%d",adj[i][j]);
col+=5;
}
reng+=2;
col=2;
}
idet=pow(det,-1);
i=0;
j=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
inv[i][j]=(idet)*(adj[i][j]);
}
gotoxy(25,9);
printf("La matriz inversa es:");
col=25;
reng=11;
i=0;
j=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
gotoxy(col,reng);
printf("%.4f",inv[i][j]);
col+=10;
}
reng+=2;
col=25;
}
}
getch();
}
//espero les sirva y comenten por gran justicia!!
//y si, hemos tenido peores meses
//por cierto, las librerías no se ven, son stdio, conio y math
2 comentarios:
como puede subir la popularidad de este blog si no tienen gente con chispa y ademas el programa no incluye confactores o no aplica para numeros complejos
Tu carota nos confirma que no tenemos gente con chispa.
Publicar un comentario