Tableaux

Supprimer les doublons

Énoncé

Saisir N avec 1 ≤ N ≤ 100 et remplir un tableau T de N entiers. Copier ses valeurs dans un deuxième tableau U sans doublons, en conservant l’ordre de première apparition. Une procédure Supprimer renvoie U et sa taille utilisée ; Afficher présente le résultat.

Exemples et cas limites

Saisissez ces valeurs dans la console pour vérifier votre résultat :

Saisir N, puis les N entiers t[0] à t[N − 1], un par un. Les données de l’exemple sont un essai : choisissez vos propres valeurs dans le terminal.

Entrée
N = 5
t[0] = 8
t[1] = 3
t[2] = 5
t[3] = 3
t[4] = 1
Sortie attendue
8 3 5 1 
Entrée
N = 5
t[0] = 7
t[1] = 7
t[2] = -1
t[3] = 2
t[4] = -1
Sortie attendue
7 -1 2 
Entrée
N = 2
t[0] = 4
t[1] = 4
Sortie attendue
4 

Complétez les modules marqués par un commentaire dans le code de départ. Les modules déjà écrits permettent de saisir vos données. Exécutez les cas de test et comparez la sortie attendue, ou ouvrez directement l’onglet Correction.

Code algorithmique

supprimer_doublons.algo
1algorithme supprimer_doublons
2debut
3 saisir(n)
4 remplir(t, n)
5 supprimer(t, n, u, taille)
6 afficher(u, taille)
7fin
8
9procedure saisir(@n : entier)
10debut
11 repeter
12 ecrire("N = ")
13 lire(n)
14 jusqua 1 ≤ n ≤ 100
15fin
16
17procedure remplir(@t : tab, n : entier)
18debut
19 pour i de 0 à n - 1 faire
20 ecrire("t[" + convch(i) + "] = ")
21 lire(t[i])
22 fin_pour
23fin
24
25procedure supprimer(t : tab, n : entier, @u : tab, @taille : entier)
26debut
27 // compléter le traitement demandé dans l’énoncé.
28fin
29
30procedure afficher(t : tab, n : entier)
31debut
32 pour i de 0 à n - 1 faire
33 ecrire(t[i], " ")
34 fin_pour
35 ecrire_nl("")
36fin

Méthode

  1. Pour chaque valeur, chercher si elle est déjà dans le résultat.
  2. Ajouter seulement les valeurs nouvelles et augmenter la taille utilisée.
À retenir :

T et U ont une capacité de 100 entiers. Seules les cases de 0 à N − 1 de T et de 0 à taille − 1 de U sont utilisées.