compéhension d'un programme
2 participants
Page 1 sur 1
compéhension d'un programme
Bonsoir, je dois essayer de comprendre un programme en langage C mais pour moi cette partie du programme est incomprehensible et je dois également la modifier mais qu'elle affiche dans le cas ou par exemple nbR1>nbR2 il doit afficher O
merci d'avance !
- Code:
if( nbR1*nbR2 != 0 ) mal += (nbR1>nbR2)? nbR2 : nbR1;
if( nbJ1*nbJ2 != 0 ) mal += (nbJ1>nbJ2)? nbJ2 : nbJ1;
if( nbV1*nbV2 != 0 ) mal += (nbV1>nbV2)? nbV2 : nbV1;
if( nbB1*nbB2 != 0 ) mal += (nbB1>nbB2)? nbB2 : nbB1;
if( nbO1*nbO2 != 0 ) mal += (nbO1>nbO2)? nbO2 : nbO1;
merci d'avance !
Dernière édition par -ed- le Lun 1 Sep 2014 - 2:06, édité 2 fois (Raison : typos, présentation ...)
oreo95- Messages : 1
Date d'inscription : 20/01/2014
Re: compéhension d'un programme
Ce code est assez obscur et fait appel, dans un premier temps (partie la plus à droite de l'instruction), aux propriétés de l'opérateur ternaire ?:oreo95 a écrit:Bonsoir, je dois essayer de comprendre un programme en langage C mais pour moi cette partie du programme est incompréhensible et je dois également la modifier mais qu'elle affiche dans le cas ou par exemple nbR1>nbR2 il doit afficher O
- Code:
if( nbR1*nbR2 != 0 ) mal += (nbR1>nbR2)? nbR2 : nbR1;
if( nbJ1*nbJ2 != 0 ) mal += (nbJ1>nbJ2)? nbJ2 : nbJ1;
if( nbV1*nbV2 != 0 ) mal += (nbV1>nbV2)? nbV2 : nbV1;
if( nbB1*nbB2 != 0 ) mal += (nbB1>nbB2)? nbB2 : nbB1;
if( nbO1*nbO2 != 0 ) mal += (nbO1>nbO2)? nbO2 : nbO1;
Il se compose de 3 parties :
'évaluation' ? 'résultat si vrai' : 'résultat si faux'
'évaluation' est une expression binaire qui retourne 'résultat si faux' (l'expression est fausse) ou 'résultat si vrai' (l'expression est vraie).
Si on prend la première ligne,
(nbR1>nbR2) ? nbR2 : nbR1;
et qu'on retourne le résultat dans une variable (appelons la x pour le moment),
- Code:
x = (nbR1>nbR2) ? nbR2 : nbR1;
C'est donc une forme condensée de
- Code:
if (nbR1 > nbR2)
{
x = nbR2;
}
else
{
x = nbR1;
}
- Code:
if( nbR1*nbR2 != 0 ) mal += (nbR1>nbR2)? nbR2 : nbR1;
- Code:
if (nbR1*nbR2 != 0 )
mal += (nbR1>nbR2)? nbR2 : nbR1;
"Si le produit de nbR1 par nbR2 n'est pas égal à 0,
augmenter la valeur de 'mal' de la valeur de nbR2 si nbR1 est supérieure à la valeur de nbR2
sinon, augmentez la de la valeur de nbR1."
et c'est le même genre de raisonnement avec les 4 autres instructions ...
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum