Tableau et test logique
Froyorst
Messages postés
23
Statut
Membre
-
Phil_1857 Messages postés 1883 Date d'inscription Statut Membre Dernière intervention -
Phil_1857 Messages postés 1883 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'aimerais faire une boucle qui vérifie une condition pour chaque élément du tableau.
Jusque la ça semble simple
Mon code suit donc la structure suivante :
ça semble facile, mais mon "compilateur" ne l'accepte pas. Sur la ligne if (Dil_Vial[Numero_Vial] == 2) j'ai une erreur
error 1002 : syntax error before symbol '=='
error 1002 : syntax error before symbol ')'
error 1002 : syntax error before symbol ')'
error 1002 : syntax error before symbol 'Unspecified token'
error 1002 : syntax error before symbol 'Unspecified token'
error 1002 : syntax error before symbol ';'
J'ai réussi à contourner via le code suivant :
Donc il apparait clairement que mon soucis est la manière dont je donne le tableau dans ma fonction if.
Le truc c'est que j’apprends sur le tas. J'ai contourné mon problème mais j'ai l'impression de passer à coté de quelque chose.
Comment faire pour éviter la petite pirouette supplémentaire ?
Merci de vos réponsesfox 83.0
J'aimerais faire une boucle qui vérifie une condition pour chaque élément du tableau.
Jusque la ça semble simple
Mon code suit donc la structure suivante :
if (Dil_Vial[Numero_Vial] == 2)
{
if (Numero_Rotation == 0 || 2 || 4 || 7)
{
SeqRemoveAt(ML_STAR.Dil_Maintenance,Sequence_Suppr)
}
}
ça semble facile, mais mon "compilateur" ne l'accepte pas. Sur la ligne if (Dil_Vial[Numero_Vial] == 2) j'ai une erreur
error 1002 : syntax error before symbol '=='
error 1002 : syntax error before symbol ')'
error 1002 : syntax error before symbol ')'
error 1002 : syntax error before symbol 'Unspecified token'
error 1002 : syntax error before symbol 'Unspecified token'
error 1002 : syntax error before symbol ';'
J'ai réussi à contourner via le code suivant :
i = Dil_Vial[Numero_Vial];
if (i == 2)
{
if (Numero_Rotation == 0 || 2 || 4 || 7)
{
SeqRemoveAt(ML_STAR.Dil_Maintenance,Sequence_Suppr);
}
}
Donc il apparait clairement que mon soucis est la manière dont je donne le tableau dans ma fonction if.
Le truc c'est que j’apprends sur le tas. J'ai contourné mon problème mais j'ai l'impression de passer à coté de quelque chose.
Comment faire pour éviter la petite pirouette supplémentaire ?
Merci de vos réponsesfox 83.0
5 réponses
-
Bonjour Froyorst,
Je me trompe peut-être, mais ton test, ce ne serait pas plutôt:
if (Numero_Rotation == 0 || Numero_Rotation == 2 || Numero_Rotation == 4 || Numero_Rotation == 7)
???-
Salut,
Non je ne pense pas.
if (Numero_Rotation == 0 || 2 || 4 || 7)
n'est-il pas l'équivalent de
if (Numero_Rotation == 0 || Numero_Rotation == 2 || Numero_Rotation == 4 || Numero_Rotation == 7)
Mais de toute façon ce n'est pas ça le souci, c'est vraiment lié à la ligne
if (Dil_Vial[Numero_Vial] == 2)
-
-
Ok, je voulais m'en assurer, donc l'instruction ne signifie pas:
si Numero_Rotation égal 0 ou bien égal 2 ou bien égal 4 ou bien égal 7 ....
C'est n'est pas ça le souci (sans s à la fin), mais il fallait bien s'assurer qu'il n'y avait pas déjà un problème à ce niveau .. -
Salut,
Phil_1857 a raison de t'alerter sur ton codeif (Numero_Rotation == 0 || 2 || 4 || 7)
, qui ne fait pas ce que tu penses.
Cela ne déclenche pas d'erreur de compilation, mais fonctionne ainsi : la partie de droite0 || 2 || 4 || 7
est évaluée (à 1) et comparée à la partie de gauche (Numero_Rotation) et ce n'est pas ce que tu veux faire. Cette erreur n'est donc pas à l'origine de ton erreur de compilation, mais tu as intérêt à la corriger.
Il manque aussi un point virgule à la fin de ta ligne 5 dans le code qui te renvoie des erreurs. Cette erreur, en revanche, devrait renvoyer une erreur de syntaxe bloquant la compilation (point-virgule que tu as mis, par contre, dans le code qui est réputé "marcher").
Pour le reste, on n'a probablement pas assez d'éléments pour hasarder d'autres réponses.
Dal -
Bonjour Dal,
Effectivement, et c'est valable dans tous les langages de programmation
Je voulais être sûr que Froyorst faisait ça en toute conscience
Mais même maintenant, on n'en est pas encore sûr ...-
En lisant https://forums.commentcamarche.net/forum/affich-36958667-tableau-et-test-logique#2 je n'ai pas de doutes que Froyorst ne veut pas faire cela :-)
C'est une erreur, même si elle ne génère pas de blocage à la compilation.
Ce qui devrait générer une erreur à la compilation, par contre, est l'absence de ; à la fin de la ligne appelant SeqRemoveAt()
Ensuite, on ne sait pas ce que sont des différents objets ou leurs types. Il pourrait y avoir d'autres erreurs.
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
oui , c'est vrai que ce serait se compliquer, dans ce cas-là mieux vaudrait faire
if (Numero_Rotation == 1) :-)