bonsoir
Je dois libérer une case et insérer un élément dans un tableau
est ce que mon algo alors pourrait être :
lexique
tabElem(tableau [1..100]de?) : tableau dans lequel on doit rajouter les éléments
k : index de l'élément à supprimer dans le tableau
i :indice de parcours du tableau
début
pour i de k à 99
faire tab(i) ← tab(i+1)
FinPour
tab(k)←élément
Fin
j'ai un gros doute sur la fin de l'algo
Bonjour,
Ton algo ne marche pas !
Dans ta boucle, tu écrases la kième valeur du tableau par la valeur du (k+1)ième rang
Et en sortie de boucle tu mets la nouvelle valeur au kième rang ! tu as perdu la valeur du (k+1)ième rang !
Que faut-il vraiment faire ?
- Supprimer la kième valeur du tableau et introduire une nouvelle valeur dans ce tableau à la fin du tableau ?
ou
- Supprimer la kième valeur du tableau et la remplacer par une nouvelle valeur ?
Bonjour,
si ton tableau contient 100 éléments au départ, il doit pouvoir en contenir 101 pour insérer un élément supplémentaire
les éléments à partir de k sont décalés de 1 en commençant par la fin:
100 va dans 101, 99 va dans 100, ... et k va dans k+1
début
pour i de 100 à k
tab(i+1) <-- tab(i)
finpour
tab(k) <-- élément à insérer
fin
je dois conserver mon tableau de 100 éléments donc puis je faire
début
pour i de 99 à k
tab(i+1) <-- tab(i)
finpour
tab(k) <-- élément à insérer
fin
Bonjour,
oui tu peux le faire, mais tu va perdre un élément
le 100e va être écrasé par le 99e
et le 100e va nulle part
forcément on ne peut pas mettre 101 éléments dans un tableau de 100 !
je suppose que c'est un tableau trié, soit tu va perdre le plus grand (tri croissant) soit tu va perdre le plus petit (tri décroissant.
Re,
c'est bien ce que j'avais pensé
tu veux insérer un élément dans un tableau trié en ordre croissant et en ne gardant que les 100 premiers (par exemple un top 100)
remarque que le "pour i de 99 à k" l'indice i est décrémenté à chaque boucle (à la fin) je ne sais pas comment on l'écrit en pseudo langage.
en Basic ça donnerait:
For i = 99 to k step -1
Tableau(i+1) = Tableau(i)
Next i
Tableau(k) = NouveauElement
le mieux c'est d'essayer !
avec un pseudo langage comment faire ?
en essayant de le faire tourner à la main
comme avec 100 ce sera assez long, on essaye avec seulement 10 éléments, si c'est bon avec avec 10 ce sera bon avec 100
voilà le tableau de 10 éléments au départ:
10 20 30 40 50 60 70 80 90 100
je dois insérer la valeur 35 en 4éme position, (donc k=4)
avec i=9:
10 20 30 40 50 60 70 80 90 90
avec i=8:
10 20 30 40 50 60 70 80 80 90
avec i=7:
10 20 30 40 50 60 70 70 80 90
je te laisse continuer ...
je dois insérer la valeur 35 en 4éme position, (donc k=4)
avec i=9:
10 20 30 40 50 60 70 80 90 90
avec i=8:
10 20 30 40 50 60 70 80 80 90
avec i=7:
10 20 30 40 50 60 70 70 80 90
avec i=6:
10 20 30 40 50 60 60 70 80 90
avec i=5:
10 20 30 40 50 50 60 70 80 90
avec i=4:
10 20 30 40 40 50 60 70 80 90
avec i=3
10 20 30 35 40 50 60 70 80 90
presque ça, à part un petit lapsus
i s'arrête à 4 (valeur de k)
à la fin de la boucle, on se retrouve avec:
10 20 30 40 40 50 60 70 80 90
puis, on insère la valeur 35 en position 4
10 20 30 35 40 50 60 70 80 90
je pense que c'est le résultat cherché
et toi qu'en penses tu ?
donc ton algo fonctionne.
et c'est toi même qui l'a testé toute seule.
si tu sais pas si un algo est bon ou pas, tu vois ce qui te te reste à faire.
bonne soirée.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :