aide !!!!!!!!! - Algo - Programmation
Marsh Posté le 13-02-2006 à 15:35:54
olivier318 a écrit : |
L'algo ne marche pas parce qu'il n'a pas de jambes
Plus sérieusement :
1. Change le titre pour le rendre plus explicite.
2. Explique un peu ce qui ne "marche pas"
Marsh Posté le 13-02-2006 à 16:10:35
belle blague .
cette algo doit permetre à l'utilisateur de supprimé des valeur de ce tab ,l'utilisateur dois donnez tout dabord combien de val il souhéte supprimer de ce tab , ensuite il doit introduire leurs indice (position).
Marsh Posté le 13-02-2006 à 16:18:53
ca ne marche que si le nombre d'indice est 1 . càd: que si l'utilisateur souhaite supprimé une seul valeur selement !!!
le probléme est dans cette partie (je ne sais pas exactement ou):
Code :
|
Marsh Posté le 13-02-2006 à 16:22:49
Parce-que tu as supprimé une valeur dans ton tableau et que tu recopies les valeurs d'un autre qui lui n'a pas bougé?
Marsh Posté le 13-02-2006 à 16:28:06
Tu remplis V à-partir de T. Si tu supprimes une valeur dans V, V devient différent de T, donc à la valeur supprimée suivante les indices sont foireux.
Marsh Posté le 13-02-2006 à 16:28:42
Bref, tu es censé le faire avec un seul tableau, à mon humble avis.
Marsh Posté le 13-02-2006 à 16:30:27
j'ai essayer avec cette algo :
Code :
|
mes c'est toujours le même problemme
aidez mois svp
Marsh Posté le 13-02-2006 à 16:33:34
ça c'est pas un algo, c'est du code C.
Et j'ai franchement la flemme d'essayer de comprendre ce que tu essaies d'y faire, ou pourquoi tu y utilises deux tableaux.
Marsh Posté le 13-02-2006 à 17:04:21
je n'ai trouvé aucune sollution en utilisant 1 seul tab ,
coment je doit procéder ?
Marsh Posté le 13-02-2006 à 17:06:32
euh, t'as essayé?
C'est la solution la plus "naturelle", à priori...
Marsh Posté le 14-02-2006 à 15:18:50
olivier318 a écrit : ca ne marche que si le nombre d'indice est 1 . càd: que si l'utilisateur souhaite supprimé une seul valeur selement !!!
|
Normal. en fait, tu dois obtenir en résultat la suppression du dernier élément demandé :
On a un tableau t[0,1,2,3,4], n=5
On veut supprimer 2 valeurs, le 2 puis le 3.
* Premier passage : s=2.
v[0]=t[0]
v[1]=t[1]
v[2]=t[3]
v[3]=t[4]
v=[0,1,3,4]
* Deuxième passage : s=3
v[0]=t[0]
v[1]=t[1]
v[2]=t[2]
v[3]=t[4]
v=[0,1,2,4]
Comme tu utilises 2 tableaux, et que ton tableau de référence (t[]) n'est pas modifié, ton algo te donne ça :
Code :
|
Tu ne cumules pas les suppressions, alors forcément...
-----
[Edit] En utilisant un seul tableau, c'est plus simple : Pour chaque valeur à supprimer, tu prends ton tableau et tu enlèves la valeur à supprimer...
Marsh Posté le 14-02-2006 à 15:19:35
Merci de venir confirmer ce que je disais hier.
Marsh Posté le 21-02-2006 à 16:38:27
PS: si tu codes ton algo en C, pense à utiliser la fonction memmove().
En travaillant sur le même tableau, tu peux bouger la fin du tableau en écrasant le milieu, genre:
Code :
|
En travaillant sur une copie du tableau, tu peut utiliser de la même façon deux fois la fonction memcpy(): tu copie le début jusqua indice_suppr-1, puis la fin de indice_suppr+longueur_suppr à longueur_tab.
La taille du tableau résultat est longueur_tab-longueur_suppr.
L avantage de ces fonctions est que les micro processeurs possèdent des instructions spéciales de déplacement/copie de blocs mémoire qui sont plus rapides qu une boucle ordinaire.
Marsh Posté le 21-02-2006 à 16:47:27
Aussi:
Si tu connais par avance les indices à supprimer par ordre croissant, tu peux optimiser ton algo en changeant longueur_suppr lorsque deux indices sont cote à cote, et en ne déplaçant/copiant que des blocs mémoires intermédiares entre les indices à supprimer.
Marsh Posté le 13-02-2006 à 14:42:16
cette algo doit permetre à l'utilisateur de supprimé des valeur de ce tab , en introduisant leurs indise (position) .
mais ca ne marche pas _POURQUOI???_