Versión Completa : Cómo multiplicar una matriz en C
carlos_200022
junio 2, 2004, 11:44
Hola , una consulta Cómo multiplicar una matriz de 4x4 en C
y Cómo calcular su determinante.
Gracias Carlos...
Alexeyev
junio 3, 2004, 08:40
solo debes de pedir los datos con ciclos for, uno con j y otro con i o con las variables que quieras, a estas variables a la hora de multiplicar solo le pones los indices entre corchetes y haces la multiplicacion recuerda, que primero multiplicas y despues sumas por que es una matriz y los resultados los sacas de igual forma con ciclos for.
ZeN<edsadr>
junio 3, 2004, 02:59
haga el pseudocódigo y aqui le ayudamos a pasarlo a c ... ok?
!!•°• N€T-Wi-Fi •°•!!
junio 3, 2004, 03:49
con unos ciclos anidados te ayudaran mas
carlos_200022
junio 3, 2004, 10:41
Aqui esta más o menos el codigo , pero para que genere numeros aleatorios cómo lo hagó,y me muestre la matriz por pantalla y luego el resultado todo en la misma pantalla...!
#include <stdio.h>
void mult_matrices(int a[][3], int b[][3], int result[][3]);
void print_matrix(int a[][3]);
void main(void)
{
int p[3][3] = { {1, 3, -4}, {1, 1, -2}, {-1, -2, 5} };
int q[3][3] = { {8, 3, 0}, {3, 10, 2}, {0, 2, 6} };
int r[3][3];
mult_matrices(p, q, r);
print_matrix(r);
}
void mult_matrices(int a[][3], int b[][3], int result[][3])
{
int i, j, k;
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
for(k=0; k<3; k++)
{
result[i][j] = a[i][k] + b[k][j];
}
}
}
}
void print_matrix(int a[][3])
{
int i, j;
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
}
(!) carlos, procura utilizar las etiquetas "code" en tu mensaje para hacer el código fuente diferenciable (e indentado).
!!•°• N€T-Wi-Fi •°•!!
junio 4, 2004, 03:59
pues para tus numeros aleatorios estudiate el randomize compadre.. o aplicate unos ciclos anidados y tu mismo pide los datos desde la ejecucion del programa
carlos_200022
junio 4, 2004, 09:10
Tienes razon ahora me salio
Stdlib.h
randizome();
matriz[i][j]=random(9)+1;
Gracias
andres00515
junio 6, 2004, 05:02
no se si le sirva pero mire:
#include <conio.h>
#include <iostream.h>
void main (void){
int tablero[4][4];
int n,m;
clrscr();
cout<<"\nEscriba los numeros de la matriz separados por espacios de\nfilas acolumnas\n"<<endl;
for(n=0;n<=2;n++){
for(m=0;m<=2;m++){
cin>>tablero[n][m];
}
}
for(n=0;n<=2;n++){
if(tablero[n][n]==0){
tablero[n][n]=j;}
else{
if(tablero[n+1][n+1]==0){
tablero[n+1][n+1]=j;}
}
}
cout<<"\nLa matriz de salida es:\n"<<endl;
for(n=0;n<=2;n++){
cout<<"\n\n";
for(m=0;m<=2;m++){
cout<<" "<<tablero[n][m];
}
}
getch();
}
despues de leidos los datos valen wuevo ponerlo a multiplicar solo es definir el determinante para 1 e ir avansado por ciclos y ya, es algebra lineal facil.
tambien puede utilizar el algoritmo de Winograd para multiplicar matrices...
Busque en google por el algoritmo.. este es mejor que multiplicar a la antigua columna por columna... y mejora el desempeno considerablemente.
wilmar arias
junio 7, 2004, 07:32
el que nucesite ese codigo escriba que yo se lo mando por mail
sta_bike_will@hotmail.com
gudenn
junio 8, 2004, 12:55
puedes encontra el algoritmo de Winograd en ........
http://wgpi.tsc.uvigo.es/~jvazquez/memoria/node28.html
vBulletin®, Copyright ©2000-2008, Jelsoft Enterprises Ltd.