A voir également:
- Condition en C
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Condition optimale téléphone ✓ - Forum Mobile
- Excel champ calculé avec condition - Forum Excel
- Nbval avec condition - Forum Excel
10 réponses
oui, cela s'écri, mais c'est ridicule.
met if(1) ou mieu rien.
si a !='a' faux, ça veut dire a=='a' et donc que a!='e' est vrai. donc ton if est vérifié
si a!='a' vrai, ton if est vérifié. Donc quelque soit a ton if est vérifié.
à mon avis ça fait pas ce que tu voudrais ton truc.
met if(1) ou mieu rien.
si a !='a' faux, ça veut dire a=='a' et donc que a!='e' est vrai. donc ton if est vérifié
si a!='a' vrai, ton if est vérifié. Donc quelque soit a ton if est vérifié.
à mon avis ça fait pas ce que tu voudrais ton truc.
mais si çà a de l'ntérêt , car j'ai écrit un programme qui remplace les e par des 3 , les a par des 4 , et les i par des 1 , donc j'ai mes 3 if ( a == 'a')
putchar('4') ...., et à la fin j'ai donc else if if ( a != 'a' || a != 'e' || a != 'i' )
, putchar(a) ...
putchar('4') ...., et à la fin j'ai donc else if if ( a != 'a' || a != 'e' || a != 'i' )
, putchar(a) ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tiens bizarre çà ne marche pas , regardez ce code :
ce qui est etrange c'est que ce programme est censé me remplacer les lettres... , et aux lieux de çà , j'ai çà , supposons que j'écrive :
salut petit scarabbe
on m'affiche çà:
s4alut p3et1t sc4ar4ab3eb3e
je devrais avoir :
s4lut p3t1t sc4r4b33
int a; while ((a=getchar()) != EOF) { if ( a == 'a' ) putchar('4'); if ( a == 'e' ) putchar('3'); if ( a == 'i' ) putchar('1'); else if ( a != 'a' || a != 'e' || a != 'i' ) putchar(a);
ce qui est etrange c'est que ce programme est censé me remplacer les lettres... , et aux lieux de çà , j'ai çà , supposons que j'écrive :
salut petit scarabbe
on m'affiche çà:
s4alut p3et1t sc4ar4ab3eb3e
je devrais avoir :
s4lut p3t1t sc4r4b33
Essaye voir avec ca :
if ( a == 'a' ) putchar('4'); else if ( a == 'e' ) putchar('3'); else if ( a == 'i' ) putchar('1'); else putchar(a);
getchar : s
(position du getchar a)
putchar : '4' à la position du a (donc en position 2)
le a est alors en position 3.
tu refais un getchar a partir de a, donc il passe à l
et ainsi de suite
C'est pour ca que tes nombres apparaissent avant la lettre à remplacer...
Maintenant pourquoi tu ne remplaces pas?
A cause de tes if surement..
(position du getchar a)
putchar : '4' à la position du a (donc en position 2)
le a est alors en position 3.
tu refais un getchar a partir de a, donc il passe à l
et ainsi de suite
C'est pour ca que tes nombres apparaissent avant la lettre à remplacer...
Maintenant pourquoi tu ne remplaces pas?
A cause de tes if surement..
Je vais etre plus clair alors :
Premier iteration :
lecture du s : putchar(s) , le getchar est positionné sur a
lecture du a : putchar(4)
Jusque la pas de problèmes mais maintenant ca se complique à cause de test if et oui quand on te dit de mettre des && à la place des || il ya une raison^^
démonstration
if(a=='a') //c'est le cas (d'ou la présence de ton 4)
if(a=='e') //c'est pas le cas
if(a=='i') //c'est pas le cas
else if
(a!='a' )// c'est pas le cas
|| (a!='e')// C'est le cas puisqu'actuellement il vaut 'a'
|| (a!='i') // C'est le cas puisqu'actuellement il vaut 'a'
Le test est TOUJOURS vrai et ne sert donc à rien, puisqu'à partir du moment où a possède une valeur, il est différent des autres, donc tu auras toujours deux tests vrais...
Donc deux solutions :
elles ont été mises au dessus donc je ne vais pas répéter...
quelques regles de logique de base quand meme:
a || b (pense à l'addition binaire sur un bit, en remplacant faux par 0 et vrai par 1) 1+1 = 1 1+0 = 0+1 = 1 0+0=0
a || b(pense à la multiplication, en remplacant faux par 0 et vrai par 1)
!a (0 devient 1 et 1devient 0)
a XoR B (soit l'un soit l'autre mais pas les deux en meme temps qu'ils soient vrais ou faux)
Donc si tu regardes ton test :
un élément était toujours vrai donc l'ensemble de l'expression était forcément vraie (1+ (1ou0) +(1ou0) ) = 1
Premier iteration :
lecture du s : putchar(s) , le getchar est positionné sur a
lecture du a : putchar(4)
Jusque la pas de problèmes mais maintenant ca se complique à cause de test if et oui quand on te dit de mettre des && à la place des || il ya une raison^^
démonstration
if(a=='a') //c'est le cas (d'ou la présence de ton 4)
if(a=='e') //c'est pas le cas
if(a=='i') //c'est pas le cas
else if
(a!='a' )// c'est pas le cas
|| (a!='e')// C'est le cas puisqu'actuellement il vaut 'a'
|| (a!='i') // C'est le cas puisqu'actuellement il vaut 'a'
Le test est TOUJOURS vrai et ne sert donc à rien, puisqu'à partir du moment où a possède une valeur, il est différent des autres, donc tu auras toujours deux tests vrais...
Donc deux solutions :
elles ont été mises au dessus donc je ne vais pas répéter...
quelques regles de logique de base quand meme:
a || b (pense à l'addition binaire sur un bit, en remplacant faux par 0 et vrai par 1) 1+1 = 1 1+0 = 0+1 = 1 0+0=0
a || b(pense à la multiplication, en remplacant faux par 0 et vrai par 1)
!a (0 devient 1 et 1devient 0)
a XoR B (soit l'un soit l'autre mais pas les deux en meme temps qu'ils soient vrais ou faux)
Donc si tu regardes ton test :
un élément était toujours vrai donc l'ensemble de l'expression était forcément vraie (1+ (1ou0) +(1ou0) ) = 1