diff --git a/Exercícios/22/mult_matriz.c b/Exercícios/22/mult_matriz.c index 864ce18..e5acc00 100644 --- a/Exercícios/22/mult_matriz.c +++ b/Exercícios/22/mult_matriz.c @@ -9,14 +9,14 @@ int main () { for (i = 0; i < 2; i++) { printf("Digite, separadas por espaço, as dimenções em linhas e colunas da %dª matriz: ", i + 1); - if (!(scanf("%d %d", &lin[i], &col[i])) || lin[i] == 0 || col[i] == 0) { + if (!(scanf("%d %d", &lin[i], &col[i])) || lin[i] <= 0 || col[i] <= 0) { printf("Valor inválido\n"); return 1; } } if (col[0] != lin[1]) { - printf("Matrizes de tamanho incorreto: a largura da 1ª matriz (%d) é diferente da altura da segunda (%d). Estas matrizes não podem ser multiplicadas entre si.)\n", col[0], lin[1]); + printf("Matrizes de tamanho incorreto: a largura da 1ª matriz (%d) é diferente da altura da 2ª (%d). Estas matrizes não podem ser multiplicadas entre si.)\n", col[0], lin[1]); return 1; } @@ -26,10 +26,9 @@ int main () { for (j = 0; j < lin[i]; j++) matrices[i][j] = malloc (col[i] * sizeof(matrices[i][j])); - printf("Digite, separados por espaço ou quebra de linha, os %d valores a serem depositados na %d matriz:\n", lin[i] * col[i], i + 1); - for (j = 0; j < lin[i]; j++) - for (k = 0; k < col[i]; k++) - scanf(" %f", &matrices[i][j][k]); + printf("Digite, separados por espaço ou quebra de linha, os %d valores a serem depositados na %dª matriz:\n", lin[i] * col[i], i + 1); + for (j = 0; j < lin[i] * col[i]; j++) + scanf(" %f", &matrices[i][j / col[i]][j % col[i]]); } matrices[2] = malloc (lin[0] * sizeof(matrices[2])); @@ -37,9 +36,8 @@ int main () { matrices[2][i] = malloc (col[1] * sizeof(matrices[2][i])); for (j = 0; j < col[1]; j++) { matrices[2][i][j] = 0; - for (k = 0; k < col[0]; k++) { + for (k = 0; k < col[0]; k++) matrices[2][i][j] += matrices[0][i][k] * matrices[1][k][j]; - } number = matrices[2][i][j]; length = 0; @@ -54,8 +52,12 @@ int main () { printf("Resultado:\n"); for (i = 0; i < lin[0]; i++) { - for (j = 0; j < col[1]; j++) - printf("%*.2f ", max_length, matrices[2][i][j]); + for (j = 0; j < col[1]; j++){ + if (matrices[2][i][j] < 0) + printf("%*.2f ", max_length, matrices[2][i][j]); + else + printf(" %*.2f ", max_length, matrices[2][i][j]); + } printf("\n"); } return 0;