Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Syntaxe de if

Quand il y a plusieures conditions ...

Sujet résolu
    7 décembre 2005 à 22:18:41

    Bonjour,
    J'ai essayé de faire un petit code vite-fait en C,
    voici ce que ca donne :

    srand((int)time(NULL)); // J'ai piqué ca sur un autre topic
     
    A3 = rand()%(10);
    if (A3 == A1 OR A3 == A2)
         {
         while (A3 == A1 OR A3 == A2)
               {
               A3 = rand()%(10);
               }
         }


    A1 et A2 sont générés auparavant de la meme facon que A3 (avec un rand).
    La procédure est simple :
    A1 généré de 1 a 9.
    A2 généré de 1 a 9, si A2 = A1 alors on refait un rand
    A3 généré de 1 a 9, si A3 = A1 ou A3 = A2 alors on refait un rand.

    J'ai plusieures questions, :)
    D'abord est-ce que c'est possible d'optimiser un peu tout ca (je veux dire d'éviter d'avoir un if et un while a la suite) pour obtenir le meme résultat ? :p
    La compilation de ce code (j'ai pas tout mit hein ya une suite) me dit qu'il y a une erreur de syntaxe "avant le OR". Je suis habitué au code PHP donc je me demande si c'est la meme syntaxe ou si je dois rajouter un truc pour que le if marche :)
    Vala merci merci.

    (PS désolé j'ai la flemme d'attendre les prochains cours de M@t ou ca sera expliqué :p)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      7 décembre 2005 à 22:27:15

      Ici tu n'as pas besoin du if. Le while test automatiquement ce que tu veux tester.

      De plus, le "OR" se traduit par ||

      Enfin comme tu n'as qu'une seule instruction qui fait varier le test à chaque fois tu peux la mettre dans la condition du while.
      • Partager sur Facebook
      • Partager sur Twitter
        7 décembre 2005 à 22:49:04

        or existe dans iso646.h mais personne n'utilise ça c'est prévu à la base pour ceux qui n'ont accès qu'à un nombre limité de caractères.
        • Partager sur Facebook
        • Partager sur Twitter
          7 décembre 2005 à 22:53:04

          rz0, je commence à me demander si tu es normal ;)
          • Partager sur Facebook
          • Partager sur Twitter
            7 décembre 2005 à 22:57:21

            rZo est un ordinateur 96 bits avec une base de donné ilimité :p
            • Partager sur Facebook
            • Partager sur Twitter
              8 décembre 2005 à 7:30:04

              Merci merci :p je vais tester tout ca :)

              EDIT: au début A3 = 0 donc si je met seulement le while A3 ne sera pas égal a A1 ou A2 donc ca continuera sans rien faire non ?

              EDIT² : en tous cas ca marche le ||, merci beaucoup ;)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                8 décembre 2005 à 7:42:54

                rz0> Ca serait suicidaire de te demander ce que tu as lu, alors : qu'est-ce que tu N'as PAS lu comme documentation sur le C ?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 décembre 2005 à 11:56:29

                  Effectivement apres un tout petit temps de réfléxion on peut utiliser le while uniquement mais il faut rajouter une condition :
                  srand((int)time(NULL)); // J'ai piqué ca sur un autre topic
                   
                  A3 = rand()%(10);
                  while (A3 == A1 || A3 == A2 || A3 == 0)
                        {
                        A3 = rand()%(9) + 1;
                        }

                  Voila c'est le code apres correction,
                  j'ai changé donc les OR par des ||
                  j'ai enlevé le if inutile (en rajoutant la condition dans le while, A3 ne doit pas etre égal a 0 donc la boucle s'effectue au moins une fois)
                  j'ai modifié le rand, je voulais un nombre entre 1 et 9 et il me sortait des nombres entre 0 et 9 avec le modulo 10 :) (ce qui paraissait logique :p )
                  Voila voila mon code est corrigé merci a tous je vais tenter de finir le programme :)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [C] Syntaxe de if

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown