http://cypascal.blogspot.com.es/2012/07/suma-de-matrices-en-c-arrays.html
Este programa es útil para ver como funcionan los arrays en C.
Aquí les dejo el código del programa multiplicador de matrices:
#include <stdio.h>
int const Tam=101;
void PideDatos(int Dim[][3], float Mat1[][Tam], float Mat2[][Tam]);
void EscribeDatos(int Dim[][3], float Mat[][Tam], int au);
void Mult(int Dim[][3], float Mat1[][Tam], float Mat2[][Tam], float Mat3[][Tam]);
int main(void)
{
int C, Dimension[4][3];
float Matriz1[Tam][Tam], Matriz2[Tam][Tam], Matriz3[Tam][Tam];
PideDatos(Dimension,Matriz1,Matriz2);
printf("\nCalcula MULTIPLICACION: \n\n");
EscribeDatos(Dimension,Matriz1,1);
EscribeDatos(Dimension,Matriz2,2);
Mult(Dimension,Matriz1,Matriz2,Matriz3);
printf("\n\n\nLa matriz resultante es: \n");
EscribeDatos(Dimension,Matriz3,3);
scanf("%d");
return(0);
}
void PideDatos(int Dim[][3], float Mat1[][Tam], float Mat2[][Tam])
{
int A,B,i;
printf("\n\n ||CALCULA EL PRODUCTO DE MATRICES M1*M2||");
//Matriz 1
printf("\n\n\n Introduce el numero de filas de la matriz 1:");
scanf("%d", &Dim[1][1]);
printf("\n\n\n Introduce el numero de columnas de la matriz 1:");
scanf("%d", &Dim[1][2]);
printf("\n\n INTRODUCIR CADA COMPONENTE DE LA MATRIZ 1:");
for(A=1;A<= Dim[1][1];A++) for(B=1;B<= Dim[1][2];B++){
printf("\n Termino M1(%d,%d):",A,B); scanf("%f",&Mat1[A][B]);}
//Matriz 2
printf("\n\n\n Introduce el numero de filas de la matriz 2:");
scanf("%d", &Dim[2][1]);
printf("\n\n\n Introduce el numero de columnas de la matriz 2:");
scanf("%d", &Dim[2][2]);
printf("\n\n INTRODUCIR CADA COMPONENTE DE LA MATRIZ 2:");
for(A=1;A<= Dim[2][1];A++) for(B=1;B<=Dim[2][2];B++){
printf("\n Termino M2(%d,%d):",A,B); scanf("%f",&Mat2[A][B]);}
}
void EscribeDatos(int Dim[][3], float Mat[][Tam], int aux)
{
int A,B;
if (aux == 1)
printf("\n\n M1: \n");
else if (aux == 2)
printf("\n\n M2: \n");
else
printf("\n\n Resultado: \n");
for(A=1;A<=Dim[aux][1];A++){
for(B=1;B<=(Dim[aux][2]);B++)
printf("%7.2f",Mat[A][B]);
printf("\n");
}
}
void Mult(int Dim[][3], float Mat1[][Tam], float Mat2[][Tam], float Mat3[][Tam])
{
int A, B, aux;
if (Dim[1][2]==Dim[2][1])
{
Dim[3][1] = Dim[1][1];
Dim[3][2] = Dim[2][2];
for (A = 1; A<= Dim[1][1]; A++){
for (B = 1; B<= Dim[2][2]; B++){
Mat3[A][B] = 0;
for (aux = 1; aux <= Dim[1][2]; aux++)
Mat3[A][B] = Mat3[A][B] + Mat1[A][aux]*Mat2[aux][B];
}
}
}
else
printf("\n\n Las matrices no se puden muiltiplicar \n");
}
Salu10, espero que les sea útil.
Buenas tardes,
ResponderEliminarGracias por compartir, creo que tienes un pequeño error en el código, en la función PideDatos tu pones la variable Dim y dices que la segunda dimensión del arreglo es de 3, pero del main tu le mandas un arreglo donde la segunda dimensión es de 2, esto dará un error de compilación, o por lo menos en g++ te dará un error de compilación.
Buenos días, lo primero de todo, bienvenido al Blog. o tengo más que darte la razón, al inicializar la variable "Dimensión" dentro del main, sería adecuado poner:
Eliminarint Dimension[4][3];
De modo, que concuerde con los tamaños establecidos dentro de las funciones. Corrijo los errores y edito.
Muchas gracias por la observación Jesús.
Decir además, que si se utilizan matrices del tamaño [4][3], es para poder trabajar con los indices [3][2], ya que en C está el indice [0][0] en arrays multidimensionales, haciendo más cómoda la escritura del código.
EliminarSteel bracelet with iron cross necklace - TITanium
ResponderEliminarTITanium Cross Necklace titanium sheet - Steel bracelet. Includes titanium teeth dog one hypoallergenic titanium earrings sterling cross-necked cross necklace. Made black titanium ring in titanium strength TITanium gold.
d754k7jkfwx869 penis sleeves,sex doll,dildos,penis pumps,masturbators,dog dildos,male sex toys,cheap sex toys,realistic dildo t889p9cgblh232
ResponderEliminar