Bonjour à tous (tes),
si quelqu'un a un algo (en pseudo-code ou en français vernaculaire de préférence) pour supprimer les doublons dans un tableau.
Je serais preneur.
Merci d'avance
Bonjour à tous (tes),
si quelqu'un a un algo (en pseudo-code ou en français vernaculaire de préférence) pour supprimer les doublons dans un tableau.
Je serais preneur.
Merci d'avance
Savoir pour comprendre et vice versa.
Bonjour,
Comment ferais-tu toi à la main si tu avais une liste de nombre écrite sur une feuille de papier au crayon en disposant d'un crayon et d'une gomme ?
Ne ferais-tu pas quelque chose comme :
«Je commence au début de la liste, je lis le nombre et de tous les nombres qui le suivent j'efface ceux qui ont la même valeur. S'il reste des nombres je passe au suivant et je recommence et s'il n'en reste pas c'est cool j'ai fini.»
En décrivant ce que tu ferais tu obtiens un «algo, en français vernaculaire qui plus est» directement, même s'il est dit naïf. Après tu le transformes en algo plus «classique» pour au final l'implémenter dans un langage quelconque.
Ensuite tu peux aussi te creuser la tête et te dire que si la liste est triée tu peux n'effacer que les doublons consécutifs … ou créer une autre liste en y ajoutant qu'une fois chaque valeur, ou …
Enfin au pire tu demandes à google …
Merci WhiteCrow, ça aide bien, je devrais m'en sortir.
Savoir pour comprendre et vice versa.
Avec des nombres c'est bon.
Mais je voudrais faire pareil avec des chaînes.
Et sans passer par les codes ASC (problèmes avec les accents).
Ne faire que par comparaisons.
Il va falloir plus que le conseil avisé de "WhiteCrow".
Merci d'avance.
Note: Ce n'est pas un devoir scolaire, j'ai passé l'âge.
Savoir pour comprendre et vice versa.
Avec des nombres, tu dis que c'est bon.
Montre comment tu fais avec des nombres (parce que comme dit par WhiteCrow, il y a plein de solutions, et la difficulté est de choisir un plan parmi tous les plans d'attaque).
Partant d'un truc qui marche avec des nombres, tu devrais pouvoir l'adapter à des chaines. Toutes les fonctions de comparaison (inférieur, inférieur ou égal etc ) marchent aussi bien avec des chaines qu'avec des nombres.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Hum, ça doit dépendre du langage, en Basic ancestral, on est obligés de passer par les code ASC pour faire du "<, =, >".
Mais il doit bien y avoir moyen de comparer les chaines entre elles telles quelles.
Mais comment ? That's the question.
J'en suis à trois tableaux provisoires (de transfert), j'hésite en mettre cinq de plus.
Note: je ne dispose que de string$ = et <> string$
Re-Note: Les chaines ne sont que des noms, ça ne devrait pas mouliner bien longtemps.
Savoir pour comprendre et vice versa.
En VisualBasic, la comparaison de chaines existe. Cf Comparaison de chaines
Mais tu parles de Basic Ancestral. Tu as un lien vers une documentation ?
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
@: tbc92:
Pour te dire combien je suis ancestral, quand j'ai cliqué sur ton lien, on m'a affiché en gros et gras que "Mon navigateur n'est plus compatible". WTF ?!
La comparaison de chaines, je l'ai (stringA$ = ou <> de stringB$).
J'en suis là:
Et ben ça marche pôô.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 a$="aa bb cc dd ee ff bb cc ee aa dd cc bb ee aa " '//Une chaine--- for x=1 to n '// Mise dans deux tableaux --- t$(x)=word$(a$,x): temp$(x)=t$(x) next x '//--------------- for x=n to 1 step-1 '//Stockage des index d'égalités for a=1 to n if t$(x)=temp$(a) then k(x)=x end if next a next x '//--------------- for x=1 to n '// Remplacement des cases indexées--- if k(x)=x then temp$(x)="/": goto [passa] def$(x)=t$(x) [passa] next x
Savoir pour comprendre et vice versa.
Le programme que tu proposes est incomplet. En ligne 3, je vois for x=1 to n .
et n n'apparaissait pas auparavant. Donc n vaut 0 dans le meilleur des cas.
Par ailleurs, il doit bien y avoir au début des lignes où tu déclares tes tableaux. Ici ces lignes manquent.
Donc je répète : Montre comment tu fais avec des nombres.
Et on ajustera pour des chaines.
Sinon, je propose ça, qui ne devrait pas être loin de fonctionner :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 a$="aa bb cc dd ee ff bb cc ee aa dd cc bb ee aa " '//Une chaine--- n=15 for x=1 to n '// Mise dans un seul tableau --- t$(x)=word$(a$,x): next x for i=1 to n ok_nouveau =1 for j = 1 to i-1 if t$(i) = t$(j) then ok_nouveau=0 next j if ok_nouveau = 1 then nb_dedoub = nb_dedoub+1 resu$(nb_dedoub) = t$(i) print(resu$(nb_dedoub) ) end if next i
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Après de petites adaptations de syntaxe au langage;
Et ben ça marche du feu de dios.
Bravo et merci
Je vais pouvoir me débarrasser des 40 lignes de ma procédure avec les codes ASC, un vrai caphanaüm (mais qui marchait, mais pas avec les accents)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 dim t$(500) a$="aa bb cc dd ee ff bb cc ee aa dd cc bb ee aa " '//Une chaine--- n=15 for x=1 to n '// Mise dans un seul tableau --- t$(x)=word$(a$,x) next x for i=1 to n nouveau =1 for j = 1 to i-1 if t$(i) = t$(j) then nouveau=0 next j if nouveau = 1 then dedoub = dedoub+1 resu$(dedoub) = t$(i) print(resu$(dedoub)) end if next i
Savoir pour comprendre et vice versa.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager