Triage d'un tableau VB/C

mattflyer Messages postés 63 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 29 novembre 2005 - 17 févr. 2005 à 16:23
mattflyer Messages postés 63 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 29 novembre 2005 - 17 févr. 2005 à 22:50
Bonjour à tous, petite question
Voici un code pour trier un tableau. Ce code a été testé et tourne parfaitement. Il est écrit en C;

for (j=1; j<=4; j++)
{
t=tab[j];
i=j;

while ( (i>0) && (tab[i-1] ) )
{
tab[i]=tab[i-1];
tab[i-1]=t;
i=i-1
}
}
tab[j] est un tableau comportement 4 cases . J'ai traduit ce code en language VB, cela donne

for j=1 to 4
t=tabl(j)
i=j

while ( (i>0) and (tabl(i-1) ) )
tabl(i)=tabl(i-1)
tabl(i-1)=t
i=i-1
wend
next j

D'après la traduction est-elle correcte ? Si oui, pourquoi, en C, le code marche et pas en VB ?

merci de vos réponses.. @bientôt
mattflyer

Programmation: Que c'est simple de faire compliquer !!

5 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
17 févr. 2005 à 16:48
while ( (i>0) && (tab[i-1] ) )




while ( (i>0) and (tabl(i-1) ) )




Ces deux instructions (en rouge) renvoient-elles un booléen en C et en VB ?





A moins que tu n'aies oublié de placer un élément de comparaison (ce qui me paraît indipensable) du style tab[i-1]>tab[i].





En C, la condition tab[i-1] (drôle de condition, mais s'en est une)
renverra False si elle vaut 0 (0 = FALSE) et True dans les autres cas.
Donc ta boucle tournera.











Précision : tes tableaux ont bien 5 cases. Mais la case d'indice 0 te
sert de 'poubelle' pour éjecter l'élément le plus petit du tableau.




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
22max Messages postés 72 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mars 2007
17 févr. 2005 à 16:49
dans ta boucle while, tu dis tant que i est superieur a 0 et tant que tableau(i-1) mais tu n'indique pas la condition !


22Max

Le 22 juin 2004, un grand monsieur du monde de l'informatique nous a quitté. L'américain Bob Bemer, qui est l'inventeur du code ASCII créé en 1961 est décédé à l'âge de 84 ans des suites d'un cancer.
0
mattflyer Messages postés 63 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 29 novembre 2005
17 févr. 2005 à 17:57
oups pardon ! j'ai oublié (quel idiot !)

>> il faut comprendre (non deviner lol ! )
while ( (i>0) && (tab[i-1]>t) )

excusez-moi...

Programmation: Que c'est simple de faire compliquer !!
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
17 févr. 2005 à 21:30
Et maintenant ? As-tu toujours un problème avec tes boucles ?




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mattflyer Messages postés 63 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 29 novembre 2005
17 févr. 2005 à 22:50
oui toujours..

Programmation: Que c'est simple de faire compliquer !!
0
Rejoignez-nous