#include int main(int argc, char **argv) { FILE *fm1, *fm2; int A[80][80], B[80][80], C[80][80]; int col[80]; int m = 0, n = 0, p = 0, q = 0; int i, j, c; int atual = 0; char ch; /* abrir os arquivos */ fm1 = fopen("matriz1.txt", "rt"); if (!fm1) { printf("nao deu pra abrir matriz1\n"); return 1; } fm2 = fopen("matriz2.txt", "rt"); if (!fm2) { printf("nao deu pra abrir matriz2\n"); return 1; } /* calcular o número de linhas e colunas no arquivo */ atual = 0; char linha[80]; while (fgets(linha, 79, fm1)) { n++; m = 0; i = 0; while (ch = linha[i++]) { if (ch == ' ' || ch == '\t') atual = 0; else { if (atual == 0) m++; /* achamos uma coluna */ atual = 1; } } } /* calcular o número de linhas e colunas no arquivo */ atual = 0; linha[0] = '\0'; while (fgets(linha, 79, fm2)) { p++; q = 0; i = 0; while (ch = linha[i++]) { if (ch == ' ' || ch == '\t') atual = 0; else { if (atual == 0) q++; /* achamos uma coluna */ atual = 1; } } } if (p != n) { fprintf(stderr, "algo deu errado %d != %d\n", p, n); return 1; } fseek(fm1, 0L, SEEK_SET); fseek(fm2, 0L, SEEK_SET); for (i = 0; i < m; i++) for (j = 0; j < n; j++) fscanf(fm1, "%d", &A[i][j]); for (i = 0; i < p; i++) for (j = 0; j < q; j++) fscanf(fm1, "%d", &B[i][j]); fclose(fm1); fclose(fm2); for (i =0 ; i < m; i++) { for (c = 0; c < q; c++) { for( j = 0; j < n; j++) { col[j] = A[i][j] * B[j][c]; } for (j = 1; j < n; j++) col[j] = col[j]+col[j-1]; C[i][c] = col[j-1]; } } FILE *fres; fres = fopen("produto.txt", "wt+"); if (!fres) { fprintf(stderr, "nao consegui abrir produto.txt\n"); return 1; } for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { fprintf(fres, "%d ", C[i][j]); } fprintf(fres, "\n"); } fclose(fres); return 0; }