Tengo el siguiente programa que os dejo (esta en ingles):
#include <stdio.h>
#include <stdlib.h>
struct matrix
{
int row;
int col;
float** data;
};
void allocate(struct matrix *p1)
{
int row, col;
p1->data=(float**)(malloc(p1->row*sizeof(float*)));
for (row=0; row<p1->row; row++)
p1->data[row]=(float*)(malloc(p1->col*sizeof(float)));
printf("Enter matrix data:\n");
for(row=0; row<p1->row; row++)
for(col=0; col<p1->col; col++)
scanf("%f", &p1->data[row][col]);
for(row=0; row<p1->row; row++)
{
for(col=0; col<p1->col; col++)
printf("%.2f ", p1->data[row][col]);
printf("\n");
}
}
//void de_allocate(struct matrix *p1)
//{
// int row, col;
// for(row=0; row<p1->row; row++)
// for(col=0; col<p1->col; col++)
// free(p1->data[row][col]);
// free(p1->data);
}
void add_matrix(struct matrix* pA, struct matrix* pB)
{
int row, col;
if((pA->row==pB->row)&&(pA->col==pB->col))
{
for(row=0; row<pA->row; row++)
{
for(col=0; col<pA->col; col++)
printf(" %.2f", pA->data[row][col]+ pB->data[row][col]);
printf("\n");
}
}
else
printf("Error. Matrices must have the same number of rows and cols.\n");
}
void sub_matrix(struct matrix* pA, struct matrix* pB)
{
int row, col;
if((pA->row==pB->row)&&(pA->col==pB->col))
{
for(row=0; row<pA->row; row++)
{
for(col=0; col<pA->col; col++)
printf(" %.2f", pA->data[row][col]- pB->data[row][col]);
printf("\n");
}
}
else
printf("Error. Matrices must have the same number of rows and cols.\n");
}
int main(void)
{
struct matrix A,B;
int menu=0;
printf("Matrix Calculator 1.0\n");
printf("---------------------\n");
printf("\n");
printf("1 - Enter matrices A & B\n");
printf("2 - Add matrices\n");
printf("3 - Subtract matrices\n");
printf("4 - Multiply matrices\n");
printf("5 - Quit program\n");
while(menu!=5)
{
printf("\n");
printf("Option:");
scanf("%d", &menu);
printf("\n");
switch(menu)
{
case 1:
// free(&A);
printf("Number of rows in A:");
scanf("%d", &A.row);
printf("Number of columns in A:");
scanf("%d", &A.col);
allocate(&A);
printf("\n");
printf("Number of rows in B:");
scanf("%d", &B.row);
printf("Number of columns in B:");
scanf("%d", &B.col);
allocate(&B);
break;
case 2:
printf("A + B=\n");
add_matrix(&A, &B);
break;
case 3:
printf("A - B=\n");
sub_matrix(&A, &B);
break;
case 4:
printf("ddd\n");
break;
case 5:
return 0;
break;
default:
printf("Not a valid input. Try again.\n");
break;
}
}
return 0;
}
Se trata de una calculadora de matrices que suma, resta y multiplica. Tengo hechos todos los casos menos el de multiplicar, que no tengo ni idea de como hacerlo. Alguno podria echarme una ayudita?? En los requisitios me dice que tiene que ser una funcion que use punteros a estructuras o estructuras como en el caso de la suma y la resta. POR FAVOR ES MUY IMPORTANTE Y URGENTE, me juego mucha nota. Estaria eternamente agradecido de cualquier ayuda.
Antonio