Corrigé C18.  Enoncé

Exercice 1 : virgule flottante.

Dans l'algorithme qui suit, Mot désigne une variable chaîne de caractères, W et D des variables entières. W désigne le nombre total de caractères de la constante et D le nombre de chiffres après le point décimal.

On utilise aussi les modules Erreur et Chiffre défini comme suit :

Chiffre (C) = vrai si C est un chiffre faux sinon.

Erreur
            TANTQUE C <>' ' ET C <>'$' :
                Mot := Mot + C ; LIRE(C)
            FINTANTQUE

C et Mot sont des variables globales pour ce module.

        LIRE(C)
        TANTQUE C <>' $' :
            Mot := '' ; W := 0; D := 0
            TANTQUE C= ' ' : LIRE(C) FINTANQUE
   
            SI C= '+' ou C= '-' :
                W := 1 ; Mot := Mot + C; LIRE(C)
            FSI

            TANTQUE Chiffre(C) :
                W := W + 1; Mot := Mot + C ; LIRE(C)
            FINTANTQUE

            SI C = '.' :
                W := W + 1 ; Mot := Mot + C ; LIRE(C)
                TANTQUE Chiffre(C) :
                    W := W + 1 ; D := D + 1; Mot := Mot + C;     LIRE(C)
                FINTANTQUE
            FSI

            SI C = 'E' :
                W := W + 1 ; Mot := Mot + C ; LIRE(C)
                SI C= '+' ou C= '-' :
                    W := W + 1 ; Mot := Mot + C; LIRE(C)
                FSI
   
                SI Chiffre(C) :
                    W := W + 1 ; Mot := Mot + C; LIRE(C)
                    SI Chiffre(C) :
                        W := W + 1 ; Mot := Mot + C; LIRE(C)
                        SI C = ' ' ou C = '$' :
                            ECRIRE ( Mot , W, D)
                        SINON Erreur FSI
                    SINON Erreur FSI
                SINON Erreur FSI
            SINON
                SI C <> '$' : Erreur FSI
        FIN



Exercice 2 : Classement

    ALGORITHME Moyenne
    VAR     Note : TABLEAU (1..30, 1..9) DE REEL
        Coef : TABLEAU(1 ..9) DE ENTIER
        T, M : TABLEAU(1 ..30) DE ENTIER
        Somcoef, I, J : ENTIER
        S : REEL
    DEBUT
        LIRE(Coef)
        LIRE(Note)
        Somcef := 0
        POUR I=1, 9
            Somcoef := Somcef + Coef(I)
        FINPOUR

        POUR I=1, 30
            S := 0
            POUR J=1, 9 :
                S := S + Note(I, J) * Coef(J)
            FINPOUR
            T(I) := S
            M(I) := S / Somcef
        FINPOUR
        Trier(M)
        ECRIRE(M)
    FIN