This repository has been archived on 2019-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
s4-c/TP1/E11.c

90 lines
2 KiB
C
Raw Normal View History

2016-01-27 10:06:00 +01:00
/* Opération sur des matrices */
#include <stdio.h>
int main() {
int M, N;
printf("Entrez les dimensions en M des matrices : ");
scanf("%d", &M);
printf("Entrez les dimensions en N des matrices : ");
scanf("%d", &N);
if (M < 1 || M > 50 || N < 1 || N > 50) {
printf("M et N doivent être compris entre 1 et 50\n");
return 2;
}
int A[50][50];
int B[50][50];
int m, n;
for (n = 0; n < N; n++) {
for (m = 0; m < M; m++) {
printf("Entrez la valeur de la matrice A aux coordonnées (%d, %d) : ", m, n);
scanf("%d", &A[m][n]);
}
}
for (n = 0; n < N; n++) {
for (m = 0; m < M; m++) {
printf("Entrez la valeur de la matrice B aux coordonnées (%d, %d) : ", m, n);
scanf("%d", &B[m][n]);
}
}
int choix;
printf("Tapez 0 pour calculer A+B ; 1 pour calculer A×B : ");
scanf("%d", &choix);
int T[50][50];
printf("\n");
if (!choix) {
printf("A+B");
for (n = 0; n < N; n++) {
for (m = 0; m < M; m++) {
T[m][n] = A[m][n] + B[m][n];
}
}
} else {
int i, S;
if (M != N) {
printf("La largeur de A doit être égale à la hauteur de B");
return 2;
}
printf("A×B");
for (n = 0; n < N; n++) {
for (m = 0; m < M; m++) {
S = 0;
for (i = 0; i < M; i++) {
S += A[i][n] * B[m][i];
}
T[m][n] = S;
}
}
}
for (m = 0; m < M; m++) {
printf("");
printf("%3d", m);
}
for (n = 0; n < N; n++) {
// Dessine une ligne
printf("\n───");
for (m = 0; m < M; m++) {
printf("┼───");
}
printf("\n");
printf("%3d", n);
for (m = 0; m < M; m++) {
printf("");
printf("%3d", T[m][n]);
}
}
printf("\n");
return 0;
}