Insertion

Résolu/Fermé
Anna - Modifié par Anna le 8/12/2016 à 21:48
 Anna - 12 déc. 2016 à 20:33
Bonjour,

soit l'exercice suivant:

Etant donné un tableau A de n nombres triés par ordre croissant. Ecrire un algorithme qui permet de lire un réel R et l’insérer dans sa bonne position. Le résultat sera un deuxième tableau B de longueur (n+1) et qui est également trié par ordre croissant.

Pour le faire est ce que je dois utiliser 2 compteurs ou bien un seul compteur est suffisant pour le parcours, comme suit :


Procédure Insertion(A : Tab1; R : Entier; Var B : Tab2)
Var
i : Entier
Début
i <-- 1
TantQue (A[i] <= R) et (i <= n) Faire
B[i]<-- A[i]
i<-- i + 1
FinTQ
B[i] <-- R
i<-- i + 1
TantQue (i <= n) Faire
B[i]<-- A[i]
i<-- i + 1
FinTQ
Fin

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 déc. 2016 à 21:52
Bonjour,

Quel rapport entre ton exercice et ton algorithme ?

Sinon pour le parcours un seul compteur devrait suffir, en revanche tu auras besoin d'au moins deux autres variables pour stocker le résultat.
0
Merci pour votre réponse et désolé pour la confusion ..
l'exercice est:
Ecrire un algorithme qui permet de lire un réel R et l’insérer dans sa bonne position. Le résultat sera un deuxième tableau B de longueur (n+1) et qui est également trié par ordre croissant.
est ce que la correction ci-dessus est correcte ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 déc. 2016 à 22:11
Ok, et non, l'algo ci-dessus n'est pas correct.

La dernière boucle est fausse car elle ne prends pas en compte l'insertion de R dans B qui devrait tout décaler d'une position.
0
après l'insertion de R le compteur a été incrémenté i<-- i+1 donc la dernière boucle va commencer de la nouvelle i pour terminer le reste du tableau, si non, est ce que je dois utiliser un 2ème compteur pour le tableau B ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 déc. 2016 à 22:26
Imaginons que i=5 lorsque tu fais B[5] <-- R, c'est à dire que tu as fait B[4] <-- A[4]
Si après tu incrémentes à nouveau i, tu vas faire B[6]<-- A[6]... où est passé A[5] ?
0
Et si je le modifie comme suit ?


Procédure Insertion(A : Tab1; R : Entier; Var B : Tab2)
Var
i,j : Entier
Début
i <-- 1
TantQue (A[i] <= R) et (i <= n) Faire
B[i]<-- A[i]
i<-- i + 1
FinTQ
B[i] <-- R
j<-- i + 1
TantQue (j <= n) Faire
B[j]<-- A[i]
j<-- j+1
i<-- i + 1
FinTQ
Fin



0
Je m'excuse, mais au niveau de l'énoncé de l'exercice,(
Etant donné un tableau A de n nombres triés par ordre croissant. Ecrire un algorithme qui permet de lire un réel R et l’insérer dans sa bonne position. Le résultat sera un deuxième tableau B de longueur (n+1) et qui est également trié par ordre croissant.)

il me demande un algorithme et pas une procédure, aussi la taille du 2ème tableau est différent de la 1er, ça veut dire, qu'il y a encore des fautes au niveau de ma correction.
Donc,svp, est ce que ça devient correcte de la façon suivante :


Algorithme Insertion
Constante
n=10
m=11
Types
Tab1= tableau[1..n] de Entier
Tab2= tableau[1..m] de Entier

Variables
A: Tab1
B: Tab2
i,j,R: Entier
Debut

Ecrire (" saisir un entier:")
Lire (R)
i <-- 1
TantQue (A[i] <= R) et (i <= n) Faire
B[i]<-- A[i]
i<-- i + 1
FinTQ
B[i] <-- R
i<-- i + 1
TantQue (i <= m) Faire
B[i+1]<-- A[i]
i<-- i+1
FinTQ
Fin


S'il y a encore des fautes, qui peut me les indiquer svp et merci d'avance.
0