C++ VALIDATION

Fermé
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 - 16 févr. 2010 à 20:23
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 17 févr. 2010 à 11:45
Bonjour,

je voudrais savoir comment je peut valider une valeur en c++

int b:

cin>>b;

if (b >= 0){

cout<< "allo";

}else {

cout <<"salut";
}

voila mon probleme quand je met un entier c correct s'affiche allo mais quand je met un caractere s'affiche aussi allo(jai pas le droit dutiliser la stl) merci pour laide

5 réponses

k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9
16 févr. 2010 à 20:31
en fait lorsque je rentre une lettre sa donne toujours comme si jaurais rentrer zero
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9
16 févr. 2010 à 20:56
quelqu'un pourrais maider
0
pour traiter les caractère vous devriez déclarer un char


char b;// possibilité de traiter les int et les caractère
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9
16 févr. 2010 à 21:46
ca veut dire qu'il va falloir que je me fasse un tableau de char si le nombre est 12323213123123 la taille de mon tableau nauras pas de fin
0
je peux vous dire la cause:

Caractère (char)

Le type char  permet de stocker la valeur ASCII d'un caractère, c'est-à-dire un nombre entier !

Par défaut les nombres sont signés, cela signifie qu'ils comportent un signe. Pour stocker l'information concernant le signe (en binaire), les ordinateurs utilisent le complément à deux. Une donnée de type char est donc signée, cela ne signifie bien sûr pas que la lettre possède un signe mais tout simplement que dans la mémoire la valeur codant le caractère peut être négative...

Si jamais on désire par exemple stocker la lettre B (son code ASCII est 66), on pourra définir cette donnée soit par le nombre 66, soit en notant 'B' où les apostrophes simples signifient code ascii de...


cdlt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 1 328
17 févr. 2010 à 11:45
La solution, c'est plutôt que de capturer un entier, de capture du texte et de faire le traitement après.
char d[10];
cin>>d;
int i=0;
while (d[i]!='\0')
   {
    if (d[i]<'0' || d[i]>'9') cout<<"erreur \n";
    i++;
    }
// passage de chaine à nombre.
int b;
sscanf(d,"%d",&b); // vérifier l'utilisation de cette fonction, car je l'utilise peu
Et là tu es sur que tu as un nombre. Enfin, là je ne traite pas l'erreur, je te laisse le soin de le faire ;-)
0