Exercice langage C corrigé un programme qui affiche un tableau rectangulaire U de nombres flottants

Il s’agit de réaliser une sorte d’ancêtre (très éloigné) d’un tableur comme Excel.

En première analyse on peut penser que ce problème va nous obliger à parcourir intégralement les lignes et les colonnes d’un tableau rectangulaire (ou matrice) en additionnant les coefficients. En réalité il n’y en a aucun besoin, puisque le tableau est construit de proche en proche, en ne changeant qu’un coefficient à la fois et à partir d’une matrice entièrement faire de zéros.

Il suffira, à chaque lecture d’un coefficient, de mettre à jour la somme de la ligne correspondante, celle de la colonne et la somme générale. Cela ne demande aucun parcours.

Voici notre programme, en supposant que 3 lignes et 4 colonnes sont souhaitées :

#include 

#define NL 3
#define NC 4

float t[NL + 1][NC + 1], x;
int i, j, k;

main() {
    for (i = 0; i <= NL; i++)
        for (j = 0; j <= NC; j++)
            t[i][j] = 0;

    for (;;) {
                        /* affichage du tableau */
        for (i = 0; i < NL; i++) {
            for (j = 0; j < NC; j++)
                printf("%8.2f ", t[i][j]);
            printf("|%8.2f\n", t[i][NC]);
        }
        for (j = 0; j < NC; j++)
            printf("---------");
        printf("+--------\n");
        for (j = 0; j < NC; j++)
            printf("%8.2f ", t[NL][j]);
        printf("|%8.2f\n", t[NL][NC]);

                        /* lecture d'un coefficient */
        printf("\ni j x ? ");
        scanf("%d", &i);
        if (i < 0)
            break;
        scanf("%d%f", &j, &x);

                        /* mise à jour du tableau et des sommes */
        t[i][NC]  = t[i][NC]  - t[i][j] + x;
        t[NL][j]  = t[NL][j]  - t[i][j] + x; 
        t[NL][NC] = t[NL][NC] - t[i][j] + x; 
        t[i][j] = x;
    }

    printf("Au revoir...");
}

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *