Condition en C

johan -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour , j'aimerais savoir si celà s'écrit en C :

if ( a != 'a' || a != 'e' || a != 'i' )

merci

10 réponses

  1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Salut,

    Oui mais ça n'a pas beaucoup d'interêt puisque cette condition sera toujours vraie....
    1
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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.
    1
  3. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Wep, je suppose que tu voulais utiliser des && (et logique) et non pas des || (ou logique)
    1
  4. johan
     
    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) ...
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. johan
     
    tiens bizarre çà ne marche pas , regardez ce code :

    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
    0
    1. wiwimagique Messages postés 481 Statut Membre 108
       
      else if ( a != 'a' && a != 'e' && a != 'i' ) 

      0
  7. GallyNet Messages postés 437 Statut Membre 387
     
    Essaye voir avec ca :

    if ( a == 'a' )
    putchar('4');
    else if ( a == 'e' )
    putchar('3');
    else if ( a == 'i' )
    putchar('1');
    else
    putchar(a);
    0
  8. Misdrhaal Messages postés 49 Statut Membre 16
     
    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..
    0
  9. Misdrhaal Messages postés 49 Statut Membre 16
     
    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
    0
  10. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    bref tout le monde te dit que ton test est mauvais, tu peux nous croire.
    Ou alors si tu es si sur de toi ça ert à rien de demander de l'aide.
    Essai le conseil de killian et wiwimagique. Juste pour voir. Je pense que déjà ça ira mieux.
    0