Problème lanagage C

magix-mush Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
magix-mush Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je débute dans la programmation et j'essaye d'apprendre le langage C sur un site étape par étape. Mais là, je bloque sur les conditions et les booléens.
En fait, je voudrais que l'utilisateur entre son age et que suivant sa réponse, ca lui indique si il est majeur ou mineur (Je sais que c'est débile, mais il faut bien commencer!)!

Voilà, ce que j'ai essayé de faire:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int age = 0;
int majeur = 0;
majeur = age >= 18;
printf("entrez votre age?");
scanf("%d", &age);
if(majeur)
{
printf ("vous etes majeur !");
}
else
{
printf ("vous etes mineur !");
}
return 0;
}


Le problème est que je peux mettre n'importe quel àge, mais ca m'indique toujours "vous êtes mineur!", Pouvez-vous m'aider à le corriger?
Merci!!!

2 réponses

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Quelques erreurs de jeunesse:
int majeur = 0;
majeur = age >= 18;

L'initialisation de majeur est inutile si on la modifie avant de l'avoir utilisé. Il vaudrait mieux mettre:
int majeur = age >= 18;
Que signifie cette expression ? On peut l'écrire (sachant que '>=' est plus prioritaire que '='):
majeur = (age >= 18);
(age >= 18) est une expression logique qui vaut 'faux' puisque age = 0.
if(majeur)
Le test est toujours faux puisque 'majeur' est faux, donc il est normal de toujours exécuter la partie 'else'.
Qu'aurait-il fallu faire ?
Donner à 'majeur' la valeur '18' et surtout faire le test sur l'âge, par exemple:
if (age >= majeur)
On se rend alors compte que l'on peut faire le test plus directement:
if (age >= 18)
Bonne réflexion.
0
magix-mush Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok, merci pour ta réponse,d'après ce qui était expliqué sur le site, j'avais compris qu'on pouvais mettre "if (majeur)", et que majeur correspondait à la valeur "vrai", donc ca m'aurait répondu "vous etes majeur!" si j'avais mis un nombre supérieur à 18!
0