Multiplica dos matrices y genera una nueva con resultados

//****************************>
//-Victor De la Rocha
//-Algoritmia@groups.msn.com
//-www.myalgorithm.com
//-Jueves 28/OCT/04
//-Programa 8, Practica 10
//-Ciclos Vectores y Matrices
//-Programa que multiplica dos matrices
//****************************>
#include <stdio.h>
#include <conio.h>
//libreria con el prototipo de la funcion rand()
#include <stdlib.h>
void main(){
 //definicion de variables
 int filas,cols,c1,c2,c3,suma;
 int mat1[100][100],mat2[100][100],mat3[100][100];
 randomize();//inicializa el generados de numeros aleatoreos
 clrscr();//limpiamos pantalla
 
 //-------------dimension
 do{filas=rand()%5;}while(filas==0&&filas>=3);//damos numero aleatorio a la dimension del vector
 cols=filas;//les damos el mismo valor para que sea cuadratica
 //-------------
 
 //simulamos la entrada de valores
 printf("filas: %dn",filas);
 printf("columnas: %dnn",cols);
 
 //-------------asignacion
 for(c1=1;c1<=filas;c1++){//ciclamos la asignacion y salida de datos en pantalla
   for(c2=1;c2<=cols;c2++){
     mat2[c1][c2]=rand()%200;//asignamos valores aleatoreos
     mat1[c1][c2]=rand()%200;//asignamos valores aleatoreos
     printf("mat1[%d][%d]= %dn",c1,c2,mat1[c1][c2]);//salida en pantalla
     printf(" mat2[%d][%d]= %dn",c1,c2,mat2[c1][c2]);//salida en pantalla
    }//END cols
   printf("n");
  }//END filas
 //-------------
 
 for(c1=1;c1<cols;c1++){
   for(c2=1;c2<cols;c2++){
     suma=0;
     for(c3=1;c3<cols;c3++){
       suma=suma+(mat1[c3][c1]*mat2[c2][c3]);
      }
     mat3[c1][c2]=suma;
   }
  }
 
 for(c2=1;c2<=cols;c2++){
  for(c1=1;c1<=cols;c1++){
    printf("mat3[%d][%d]=%dn",c2,c1,mat3[c2][c1]);
   }
  }
 
 getch();//esperamos una tecla
}//END void main

filas: 4 columnas: 4 mat1[1][1]= 88 mat2[1][1]= 142 mat1[1][2]= 7 mat2[1][2]= 199 mat1[1][3]= 103 mat2[1][3]= 19 mat1[1][4]= 111 mat2[1][4]= 118 mat1[2][1]= 69 mat2[2][1]= 3 mat1[2][2]= 38 mat2[2][2]= 86 mat1[2][3]= 76 mat2[2][3]= 81 mat1[2][4]= 127 mat2[2][4]= 93 mat1[3][1]= 156 mat2[3][1]= 78 mat1[3][2]= 115 mat2[3][2]= 190 mat1[3][3]= 28 mat2[3][3]= 190 mat1[3][4]= 167 mat2[3][4]= 54 mat1[4][1]= 161 mat2[4][1]= 77 mat1[4][2]= 134 mat2[4][2]= 127 mat1[4][3]= 21 mat2[4][3]= 113 mat1[4][4]= 60 mat2[4][4]= 155 mat3[1][1]=29191 mat3[1][2]=18834 mat3[1][3]=49614 mat3[1][4]=0 mat3[2][1]=10741 mat3[2][2]=12604 mat3[2][3]=29616 mat3[2][4]=0 mat3[3][1]=30282 mat3[3][2]=91137 mat3[3][3]=27794 mat3[3][4]=0 mat3[4][1]=0 mat3[4][2]=0 mat3[4][3]=0 mat3[4][4]=0

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)