IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Pair et Impair


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut Pair et Impair
    Bonsoir,

    J'ai un exercice qui me pose problème et j'aurais espéré que quelqu'un puisse m'aider.
    Tout d'abord je suis débutant dans l'utilisation du langage C donc si vous êtes amené à me répondre, essayez de ne pas être trop dur avec moi svp

    Donc l'exercice que je cherche à résoudre est le suivant : on me demande de créer un programme capable, à partir d'un nombre quelconque que je tape, de le définir comme étant pair ou impair.
    J'ai essayé plusieurs choses mais rien ne marche. Voici la dernière chose que j'ai tenté et qui me semblait bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //pair.c
    #include<stdio.h>
    int main () {
    int x;
    printf("Entrez une valeur : ");
    scanf("%d", &x);
    if (x % 2 = 0)
    printf("Le nombre entier est pair.\n", x);
    else
    printf("Le nombre entier est impair.\n", x);
    return (0);
    }
    Quand je rentre ça, le terminal affiche ceci :

    pair.c: In function ‘main’:
    pair.c:8:8: erreur: lvalue required as left operand of assignment
    Je comprends pas ce qu'il essaye de me dire.

    Quelqu'un pourrait me venir en aide svp ?

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 90
    Par défaut
    Bonsoir,

    Essai comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void) 
    {
      int x;
      printf("Entrez une valeur : ");
      scanf("%d", &x);
     
      if (x % 2 == 0)
        printf("Le nombre entier %d est pair.\n", x);
      else
        printf("Le nombre entier %d est impair.\n", x);
     
      return EXIT_SUCCESS;
    }
    Ta principale erreur vient de : '(x % 2 = 0)'. Pour comparer, il faut utiliser '==' et non pas '=' qui est une affectation.

  3. #3
    Membre très actif

    Femme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    591
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 591
    Par défaut
    Une autre version n’utilisant pas l’opérateur modulo qui prend beaucoup de cycles (dépendant de l'architecture CPU):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
     
    static inline bool is_odd(int x){return (x & 1) != 0;}
     
    int main (void) 
    {
      int x;
      printf("Entrez une valeur : ");
      scanf("%d", &x);
     
      if (is_odd(x))
        printf("Le nombre entier %d est impair.\n", x);
      else
        printf("Le nombre entier %d est pair.\n", x);
     
      return EXIT_SUCCESS;
    }

  4. #4
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Citation Envoyé par Manudeparis Voir le message
    Bonsoir,
    Quand je rentre ça, le terminal affiche ceci :
    pair.c: In function ‘main’:
    pair.c:8:8: erreur: lvalue required as left operand of assignment
    Bonjour,

    C'est qu'à la ligne 8 tu essayes de faire "x % 2 = 0", donc d'attribuer à X modulo 2 la valeur 0. Comme la fait remarquer kimikou, en C l'égalité est représenté par '=='. D'où ton test if (x % 2 == 0).

    Il y a un autre moyen de tester qu'un nombre est pair ou impaire, c'est de vérifier que le bit n°0 de l'entier est égale à '1' ou pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      if (x&1)
        printf("Le nombre entier %d est impair.\n", x);
      else
        printf("Le nombre entier %d est pair.\n", x);
    Comme un nombre entier est composé en puissance de 2, il suffit de tester le bit 0 qui correspond à 2^0 = 1.




    ... autre simplification (attention à ne pas prendre exemple )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Si x est impair, on affiche la chaine "impair", sinon "pair"
    printf("Le nombre entier %d est %s.\n", x, (x&1)?"impair":"pair") ;

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Ah ok d'accord merci pour toutes vos réponses
    Par contre, l'utilisation de include avec stdlib, qu'est ce que cela fait de plus que stdio.h ne fait pas ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Citation Envoyé par Manudeparis Voir le message
    Ah ok d'accord merci pour toutes vos réponses
    Par contre, l'utilisation de include avec stdlib, qu'est ce que cela fait de plus que stdio.h ne fait pas ?
    Les prototypes des fonctions standards, classés par fichiers : http://www.utas.edu.au/infosys/info/...C/CStdLib.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impression pages paires et impaires
    Par ely dans le forum Access
    Réponses: 1
    Dernier message: 26/01/2006, 09h44
  2. récupérer que les lignes paires ou impairs d'une proc ,?
    Par c_moi_c_moi dans le forum Oracle
    Réponses: 5
    Dernier message: 16/11/2005, 18h03
  3. problème de suite pair et impair
    Par florane dans le forum C
    Réponses: 13
    Dernier message: 18/10/2005, 13h51
  4. VB Comment savoir si un chiffre est pair ou impair ?
    Par PRACH dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/09/2005, 18h02
  5. Réponses: 4
    Dernier message: 30/06/2002, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo