Fusionner deux tableaux avec python [Algo]

Ecrire un algorithme modulaire qui permet de remplir deux tableaux t1 et t2 avec respectivement n et m entiers, tel que 5<=n<=10 et 3<=m<=15 (les bornes sont des valeurs données lors de l’appel).
Pour chaque tableau, ses valeurs ne se répètent pas.
Afficher les deux tableaux T1 et T2, puis fusionner les dans T3 sans répétition et afficher le résultat final
Ecrire les modules suivants :
SaisieTaille : renvoyer la taille d’un seul tableau
AfficheTab : afficher un seul tableau.
VerifTab : verifier si une valeur existe dans un tableau ou non.
RemplirTab : remplir un seul tableau.
FusionTab : fusionner deux tableaux

Algorithme

#programme principal
Algorithme FusionTableaux
Debut
     SaisieTaille(5,10,a)
     SaisieTaille(3,15,b)
     RemplirTab(T1,a)
     RemplirTab(T2,b)
     AfficherTab(T1,a)
     AfficherTab(T2,b)
     FusionTab (t1,t2,a,b,c,t3)
     AfficherTab(T3,c)
Fin
T.D.N.T
Type
Tab = tableau de 15 entiers
T.D.O
Objet Type/nature
A
B
c
T1
T2
T3
RemplirTab
SaisieTaille
FusionTab
AfficheTab
Entier
Entier
Entier
Tab
Tab
Tab
Procédure
Procédure
Procédure
Procédure
Procédure SaisieTaille  (binf,bsup:entier,@ a : entier)
Début
   Répéter
     Ecrire ("Taille du tableau : ")
     Lire (a)
     Jusqu’à (a ᕮ [binf..bsup])
Fin
Procédure AfficheTab (v : tab, m : entier)
Début
    Pour i de 0 à m-1 faire
       Écrire(v[i])
    FinPour
Fin
ObjetType/nature
nentier
Fonction VerifTab(nb, n :entier,t:tab):booleen
Debut
   Exist← faux
   Si ( n ≠ 0) alors
       Pour i de 0 à n-1 faire
           Si t[i]=nb alors 
               Exist← vrai
           Finsi
       Fin pour
   Fin si
   Retourner exist
Fin
Procédure RemplirTab (@v : tab, b : entier)
Début
Pour i de 0 à b-1 faire
                   repeter
      Ecrire ("T[",i,"] = ")
      Lire(v[i])
                   Jusqu’à (verifTab(v[i], i ,v)=faux)
FinPour
Fin

ObjetType/nature
ientier
Procédure FusionTab (t1,t2 : tab, a,b : entier,@c:entier,@t3:tab)
Début
pour i de 0 à a-1 faire
                t3[i]←t1[i]
          Fin pour
          Pour j de 0 à b-1 faire
               Si (verifTab(t2[j],i+1,t[3])=faux) alors
                        i←i+1
                        t3[i]←t2[j]
               Fin si
          Fin pour
Fin
ObjetType/nature
ientier

code python

# Module pour saisir la taille d'un seul tableau
def saisieTaille(min, max):
    n = int(input("Donner la taille du tableau  "))
    while not(min <= n <= max):
        n = int(input("erreur, Donner la taille du tableau"))
    return n

# Module pour afficher un seul tableau
def afficheTab(tab,n):
    print("[ ", end="")
    for i in range(0,n):
        if i == n-1:
            print(tab[i], end=" ")
        else:
            print(tab[i], end=" | ")
    print("]")

# Module pour vérifier si une valeur existe dans un tableau
def verifTab(val, tab, n):
    test = False
    i = 0
    while i < n and not test:
        if tab[i] == val:
            test = True
        i = i+ 1
    return test

# Module pour remplir un seul tableau
def remplirTab(n, tab):
    for i in range(n):
        print("Donner la valeur de la case" ,i, "du tableau  ")
        val = int(input())
        while verifTab(val, tab, n) or not(val>=0):
            print("erreur, donner la valeur de la case" ,i, "du tableau ")
            val = int(input())
        tab[i] = val


# Module pour fusionner deux tableaux
def fusionTab(t1, n1, t2, n2, t3):
    for i in range(0, n1):
        t3[i] = t1[i]
    for j in range(0,n2):
        if not verifTab(t2[j], t3, i):
            i=i+1
            t3[i] = t2[j]
    return i+1

# Programme principal
from numpy import array
n = saisieTaille(5, 10)
t1 = array([int()]*n)

m = saisieTaille(3, 15)
t2 = array([int()]*m)

remplirTab(n, t1)
remplirTab(m, t2)

print("T1 = ", end="")
afficheTab(t1, n)
print("T2 = ", end="")
afficheTab(t2, m)

t3 = array([int()]*(n+m))
n3 = fusionTab(t1, n, t2, m, t3)
print("T3 = ", end="")
afficheTab(t3, n3)

Leave a Reply

Your email address will not be published. Required fields are marked *