Codage juste ms pas de sens

Signaler
Messages postés
73
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
21 octobre 2010
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
Bonjour,



C'est encore moi!!!!! Voila, j'ai réalisé un TD seul et j'y suis arrivé!!! Mais, mon codage est juste mais le sens n'y pas.

Lorsque j'exécute ce programme, dans "Donnes moi ton age", le programme devrait ne rien mettre car c'est à l'utilisateur de le faire et beh, ce con, il me met 18.

Comment corriger ce petit soucis ?
merci encore
@++
JPh

Mon code

#include <cstdlib>
#include
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
 int age=18;
   
              printf("Donnes moi ton age stp : %d",age);
              scanf("%d",&age);
              if(age>18)
              {
              printf("Tu es majeur!\n");
              if (age<18)
              {
                         printf("Tu es mineur mon gars!\n");
                         }
                         }
    system("PAUSE");
    return EXIT_SUCCESS;
}

J-Ph

4 réponses

Messages postés
338
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
9 juillet 2011
2
  printf("Donnes moi ton age stp : %d",age);
ca donne : Donnes moi ton age stp : 18
ta variable age contient 18 WOW ca fonctionne et oui !!

if(age>18)
              {
              printf("Tu es majeur!\n");
              if (age<18)
              {
                         printf("Tu es mineur mon gars!\n");
                         }
                         }

il peux pas être à la sois >18 et en meme temps < 18 on aurais du voir

              if(age>18)
              {
              printf("Tu es majeur!\n");
              }
              if (age<18)
              {
                         printf("Tu es mineur mon gars!\n");
                         }

encora la pas tres beau
un if else serais bon mais la autre problème et oui ton programme si tu mets 18 ans et bien tu ne sera ni majeur ni mineur !!!
tu utilises aucune fonction contenu dans tu peux enlever #include
Messages postés
12
Date d'inscription
dimanche 20 juillet 2008
Statut
Membre
Dernière intervention
10 avril 2010

slt bah tu c'est pas tres beau ce que t'a fait la quand meme, mais ce n'est qu'un début, je vais te corriger..

voila ton code ( celui que t'a fait):

#include <cstdlib>
#include   <= == ça ne sert absolument a rien !!!tu n'utilise aucune fonction dans iostream
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
 int age=18;
   
              printf("Donnes moi ton age stp : %d",age); <=== tu affiche ta variable a la quelle tu compare ?!
              scanf("%d",&age);
              if(age>18)
              {
              printf("Tu es majeur!\n");
              if (age<18) < === tu te repète , tu devrais mettre  if.... else
              {
                         printf("Tu es mineur mon gars!\n");
                         }
                         }
    system("PAUSE");
    return EXIT_SUCCESS;
}

bon alors voila ce que jte propose :

#include <stdio.h>

#define limite 18    //definition de la limite d'age

int main()
{

int age;     //definition de la variabe que l'utilisateur entre

printf("donne moi ton age stp : ");
scanf("%d",&age);    // lecture de l'age que l'utilisateur entre

if (age<limite)  // ici on teste la valeur entré par l'utilisateur et celle qui est posée comme limite
               {  
               printf("DEGAGE TU EST MINEUR !!\n");
               }
               else {
                       printf("BIENVENUE vous etes majeur\n");
                       }
   
    system("PAUSE");
}
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
C'est pas encore très bon comme manière de coder.
Que ce passe t-il si l'utilisateur entre un caractère au lieu d'un entier?
Plantage assuré.

Il faut toujours que la variable "age" soit un char. On test donc si c'est un chiffre ou pas, puis on le convertit en int si c'est un entier et sinon on redemande à l'utilisateur d'entrer une nouvelle valeur si la valeur saisi est incorrecte.

A+
Mon site internet :  http://ImAnalyse.free.fr   : http://ImAnalyse.free.fr
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
"Que ce passe t-il si l'utilisateur entre un caractère au lieu d'un entier?
Plantage assuré."
Non, pas de plantage.
Si un caractère est entré, scanf l'ignorera et conservera la valeur de age comme elle était avant l'appel. Il faut donc simplement initialiser age à disons, -1 avant l'appel puis tester si c'est toujours cette valeur après. Si oui -> erreur.

Cependant, scanf acceptera des trucs dans le genre:
12abc34
Il ne conservera que les premiers caractères "12".

"Il faut toujours que la variable "age" soit un char."
J'imagine que tu parles d'un tableau. Alors oui, si on veut faire un test sur l'ensemble de la chaine pour éviter les "12abc34".

C++ (@++)<!--