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
| Type |
| Tab = tableau de 15 entiers |
| 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
| Objet | Type/nature |
| n | entier |
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
| Objet | Type/nature |
| i | entier |
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
| Objet | Type/nature |
| i | entier |
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)