Ver Mensaje Individual
  #9 (permalink)  
Antiguo 28/03/2012, 19:13
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 10 meses
Puntos: 94
Respuesta: Dividir una cadena en 2 matrices

Hola! en este momento no te puedo ayudar con el codigo... pero si no me equivoco multiplicar dos matrices tiene propiedades, fijate si las encontras xq no me acuerdo cuales eran.
Igual t dejo un codigo que hic hace un par de meses; un poco dificil de entenderlo pero bueno te lo dejo igual
Código C:
Ver original
  1. int esProducto(int j,int m);
  2.  
  3. int ** matrizProducto(int mat1[][COLUMNA_M],int mat2[][COLUMNA_M],int iFila,int jCol,int mFila,int nCol)
  4.  
  5. {
  6.   int x;
  7.   int i=0,j; /* indices para la matriz 1 */
  8.   int m,n=0; /* indices para la matriz 2 */
  9.   //int auxMat[iFila][nCol];
  10.   int cant=0; /* acumulador */
  11.   int num=0;
  12.  
  13.   int **auxMat=NULL; /* declaro un puntero a puntero que es la matriz resultante del producto */
  14.   /* la matriz aux va a ser de dimension iFila*nCol */
  15.   auxMat=(int **)malloc(sizeof(int)*nCol); /* le asigno la cantidad de columnas (nCol) */
  16.   for(x=0;x<nCol;x++)
  17.     auxMat[x]=(int *)malloc(sizeof(int)*iFila); /* a cada columna le asigno iFilas */
  18.   int s=0,p=0; /* indices para la matriz auxiliar */
  19.  
  20.   if(esProducto(jCol,mFila)) /* si se puede multiplicar entra al if */
  21.   {
  22.    
  23.     while(cant!=(iFila*nCol)) { /* mientra no sea fin del producto */
  24.       for(j=0,m=0;j<jCol;j++,m++) /* mat1 avanza en columna y mat2 avanza en fila */
  25.       {
  26.     num+=mat1[i][j]*mat2[m][n]; /* suma de la multiplicacion fila*columna */
  27.       }
  28.       auxMat[s][p++]=num; /* guardo el producto en auxMat */
  29.       num=0; /* seteo num para el prox producto */
  30.       n++; /* mat2 cambia de columna */
  31.       if(n==nCol) /* salto de fila en mat1 y auxMat*/
  32.       {
  33.     i++; /* mat1 cambia de columna */
  34.     /* seteo los indices */
  35.     n=0;
  36.     p=0;
  37.     s=1;
  38.       }
  39.       cant++;
  40.     } /* fin del while */
  41.   return auxMat;
  42.   } /* fin del if */
  43.  
  44.   else
  45.     return NULL;
  46. }
  47.  
  48. int esProducto(int j,int m)
  49. {
  50.   return j==m;
  51. }

Te sigo ayudando mañana, Saludos