• Sábado 14 de Diciembre de 2024, 19:25

Autor Tema:  Multiplicacion De Matrices Usando Punt. A Estruct.  (Leído 1150 veces)

amedinadiaz

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Multiplicacion De Matrices Usando Punt. A Estruct.
« en: Miércoles 11 de Febrero de 2004, 14:42 »
0
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
He visto cosas que vosotros no creeriais...
Todos esos momentos...se perderan en el tiempo...
como lagrimas en la lluvia...

Por no comprarme la dichosa camara digital!!