Codage juste ms pas de sens

jeanphilippe37 Messages postés 73 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 21 octobre 2010 - 1 août 2008 à 00:10
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 1 août 2008 à 17:15
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

gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
1 août 2008 à 00:41
  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
0
cs_hichem16 Messages postés 12 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 10 avril 2010
1 août 2008 à 01:21
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");
}
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
1 août 2008 à 14:18
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
1 août 2008 à 17: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++ (@++)<!--
0
Rejoignez-nous