Corrigé C21. Enoncé

Exercice 1 : Interclassement de deux vecteurs

    ALGORITHME Interclasser
    VAR
        K, J1, J2, N1, N2 : ENTIER
        V1 : TABLEAU[1..N1] DE ENTIER
        V2 : TABLEAU[1..N2] DE ENTIER
        V3 : TABLEAU[1..N1+N2] DE ENTIER
    DEBUT
        LIRE(N1, N2)
        K := 0
        J1, J2 := 1
        TANTQUE J1 <= N1 ET J2 <= N2 :
            K := K + 1
            SI V1(J1) < V2(J2) :
                V3(K) := V1(J1)
                J1 := J1 + 1
            SINON
                V3(K) := V2(J2)
                J2 := J2 + 1
            FSI
        FINTANTQUE
        TANTQUE J1 <= N1 :
            K := K + 1
            V3(K) := V1(J1)
            J1 := J1 + 1
        FINTANTQUE
        TANTQUE J2 <= N2 :
            K := K + 1
            V3(K) := V2(J2)
            J2 := J2 + 1
        FINTANTQUE
    FIN


Exercice 2 : Permutation de 2 sous vecteurs

L'algorithme qui suit permute les sous vecteurs T(1..P) et T(P+1..N) pour P compris entre 1 et N

    ALGORITHME Permuter
    VAR
        P, N, I, J, N : ENTIER
        T : TABLEAU[1..N] DE ENTIER
        C : ENTIER
    DEBUT
        LIRE(P)
        SI P > N DIV 2 :
            POUR J := P + 1, N
                C := T(N)
                POUR I=N-1, 1, -1
                    T(I+1) := T(I)
                FINPOUR
                T(1) := C
            FINPOUR
        SINON
            POUR J := 1, P
                C := T(1)
                POUR I= 1, N-1
                    T(I) := T(I+1)
                FINPOUR
                T(N) := C
            FINPOUR
        FSI
    FIN

Exercice 3: Insertion par fonction

Recherche/insertion d'un élément

    ALGORITHME Inserer
    VAR
        I, M, L, K, Donnee : ENTIER
        Trouv : BOOLEEN
    DEBUT
        LIRE(K)
        N := 0
        POUR L = 1, K
            LIRE(Donnee)
            I := H(Donnée)
            Trouv, Vide := FAUX
            TANTQUE NON Trouv ET NON Vide :
                SI Occ(I) :
                    SI Val(I) = E
                        Trouv := VRAI
                    SINON
                        I := I+1;SI I>M : I := I-M FSI
                    FSI
                SINON
                    Vide := VRAI
                FSI
            FINTANTQUE
            SI NON Trouv :
                SI N = M-1 :
                    " Débordement "
                SINON
                    N := N + 1
                    Aff-Val(I, E)
                    Aff-Occ(I, Vrai)
                FSI
            SINON
                " Donnée existe "
            FSI
        FINPOUR
    FIN