Tableau et test logique

Fermé
Froyorst Messages postés 22 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 2 avril 2023 - Modifié le 23 nov. 2020 à 11:02
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 23 nov. 2020 à 17:44
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 :

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
A voir également:

5 réponses

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
23 nov. 2020 à 10:10
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)


???
0
Froyorst Messages postés 22 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 2 avril 2023
Modifié le 23 nov. 2020 à 11:33
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)
0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
23 nov. 2020 à 11:00
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 ..
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 23 nov. 2020 à 13:14
Salut,

Phil_1857 a raison de t'alerter sur ton code
if (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 droite
0 || 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
0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 23 nov. 2020 à 13:17
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 ...
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 23 nov. 2020 à 15:32
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.
0

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

Posez votre question
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 23 nov. 2020 à 17:45
oui , c'est vrai que ce serait se compliquer, dans ce cas-là mieux vaudrait faire

if (Numero_Rotation == 1) :-)
0