Condition en C

Bonjour , j'aimerais savoir si celà s'écrit en C :

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

merci

10 réponses

  1. Contributeur
    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.
    1. 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
      1. 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..
        1. Essaye voir avec ca :

          if ( a == 'a' )
          putchar('4');
          else if ( a == 'e' )
          putchar('3');
          else if ( a == 'i' )
          putchar('1');
          else
          putchar(a);
          1. 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
            1. else if ( a != 'a' && a != 'e' && a != 'i' ) 

          2. 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. Modérateur
              Wep, je suppose que tu voulais utiliser des && (et logique) et non pas des || (ou logique)
              1. Contributeur
                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. Modérateur
                  Salut,

                  Oui mais ça n'a pas beaucoup d'interêt puisque cette condition sera toujours vraie....