Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

algo de tableau

Posté par
bufani
19-03-09 à 00:44

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

Posté par
Bourricot
re : algo de tableau 19-03-09 à 00:57

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 ?

Posté par
Daniel62
re : algo de tableau 19-03-09 à 02:48

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

Posté par
bufani
re : algo de tableau 19-03-09 à 09:17

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

Posté par
Daniel62
re : algo de tableau 19-03-09 à 13:55

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.

Posté par
bufani
re : algo de tableau 19-03-09 à 17:24

bonjour
c'est un tableau trié dans l'ordre croissant

Posté par
Daniel62
re : algo de tableau 19-03-09 à 18:02

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

Posté par
bufani
re : algo de tableau 19-03-09 à 18:08

donc mon algo fonctionne

Posté par
Daniel62
re : algo de tableau 19-03-09 à 18:31

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 ...

Posté par
bufani
re : algo de tableau 19-03-09 à 19:20

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

Posté par
Daniel62
re : algo de tableau 19-03-09 à 20:24

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 ?

Posté par
bufani
re : algo de tableau 19-03-09 à 20:39

oui je pense que c'est ça donc

tab(k) <-- élément à insérer

Posté par
Daniel62
re : algo de tableau 19-03-09 à 20:49

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.

Posté par
bufani
re : algo de tableau 19-03-09 à 21:02

merci beaucoup pour votre aide



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !