fork download
  1. #include <stdio.h>
  2.  
  3. void mostraMatriz(int tam, int mat[tam][tam]) {
  4. int i, j;
  5. for (i=0; i<tam; i++) {
  6. for (j=0; j<tam; j++) {
  7. printf("%i ", mat[i][j]);
  8. }
  9. printf("\n");
  10. }
  11. }
  12.  
  13. void transposta(int tam, int mA[tam][tam], int mT[tam][tam]) {
  14. int i, j;
  15. for (i=0; i<tam; i++) {
  16. for (j=0; j<tam; j++) {
  17. mT[i][j] = mA[j][i];
  18. }
  19. }
  20. }
  21.  
  22. void multiplica(int tam, int mA[tam][tam], int mB[tam][tam], int mR[tam][tam]) {
  23. int i, j, k, soma;
  24. for (i=0; i<tam; i++) {
  25. for (k=0; k<tam; k++) {
  26. soma = 0;
  27. for (j=0; j<tam; j++) {
  28. soma = soma + mA[i][j] * mB[j][k];
  29. }
  30. mR[i][k] = soma;
  31. }
  32. }
  33. }
  34.  
  35. int main(void) {
  36. int tam, i, j;
  37. scanf("%i", &tam);
  38. int mA[tam][tam], mB[tam][tam], mR[tam][tam], mT[tam][tam];
  39.  
  40. //ler matriz A e depois matriz B
  41. for (i=0; i<tam; i++) {
  42. for (j=0; j<tam; j++) {
  43. scanf("%i", &mA[i][j]);
  44. }
  45. }
  46.  
  47. for (i=0; i<tam; i++) {
  48. for (j=0; j<tam; j++) {
  49. scanf("%i", &mB[i][j]);
  50. }
  51. }
  52.  
  53. //transposta
  54. transposta(tam, mA, mT);
  55. //multiplica
  56. multiplica(tam, mA, mT, mR);
  57.  
  58. //compara matrizes
  59. int iguais = 1;
  60. for (i=0; i<tam; i++) {
  61. for (j=0; j<tam; j++) {
  62. if (mR[i][j] != mB[i][j]) {
  63. iguais = 0;
  64. printf("diferentes na posicao %i e %i\n", i, j);
  65. break; //faz para os FOR quando achar
  66. }
  67. }
  68. }
  69. if (iguais) {
  70. printf("correto\n");
  71. } else {
  72. printf("incorreto\n");
  73. }
  74.  
  75. //apenas para mostrar os valores das matrizes
  76. printf("Matriz A\n");
  77. mostraMatriz(tam, mA);
  78. printf("\nMatriz B\n");
  79. mostraMatriz(tam, mB);
  80. printf("\nMatrizA * MatrizA'\n");
  81. mostraMatriz(tam, mR);
  82. }
Success #stdin #stdout 0s 9432KB
stdin
3
1 2 3
4 5 6
7 8 9
14 32 50
32 77 122
50 122 194
stdout
correto
Matriz A
1 2 3 
4 5 6 
7 8 9 

Matriz B
14 32 50 
32 77 122 
50 122 194 

MatrizA * MatrizA'
14 32 50 
32 77 122 
50 122 194