savoir si une variable est de type entier - C++ - Programmation
Marsh Posté le 20-10-2002 à 17:35:25
Taz@PPC a écrit a écrit : pourquoi faire? tu arrive a mettre dans n autre chsoe qu'un entier? utilise les balise cpp, stp |
si je saisie un caractere
ca pose un probleme
genre le symptome d'une boucle infinie
en fait ce que je veux c'est l"equivalent d'un is_integer en c
et non cpp
merci
Marsh Posté le 21-10-2002 à 04:56:03
Code :
|
Marsh Posté le 23-10-2002 à 10:37:32
utilise un do{} while(!scanf()) car il renvoie EOF si le type saisi est en desaccord avec le type demande voila sinon renvoi le nombre de caractere correctement saisi.
exemple :
int i;
int res;
scanf("%d",&i); si i = 1 alors res = 1
si i = 'c' alors res = EOF
Marsh Posté le 23-10-2002 à 10:40:13
nicolasm a écrit a écrit : scanf("%d",&i); si i = 1 alors res = 1 si i = 'c' alors res = EOF |
res = scanf...
sinon ça fait pas grand chose
Marsh Posté le 23-10-2002 à 10:41:23
nicolasm a écrit a écrit : utilise un do{} while(!scanf()) car il renvoie EOF si le type saisi est en desaccord avec le type demande voila sinon renvoi le nombre de caractere correctement saisi. exemple : int i; int res; scanf("%d",&i); si i = 1 alors res = 1 si i = 'c' alors res = EOF de plus utilise un long car les int sont codees en soit sur 2 soit sur 4 octets(depend des compilos) soit 31 bits pour la valeur et 1 pour le signe soit 15 pour la valeur + 1 pour le signe. |
Marsh Posté le 23-10-2002 à 14:36:52
Taz@PPC a écrit a écrit : qui te dis que EOF n'est pas égal à -1 ou à 0? il faut tester explicitement en comparant avec EOF |
En fait ca depend des compilos pour EOF mais il a juste a tester si ca renvoie le bon nombre d arguments
c est a dire 1 pour son cas soit
int x=0,toto;
while(x!=1)
x=scanf("%d",&toto); :-p
Marsh Posté le 15-12-2002 à 15:03:01
Code :
|
voilà une solution avec vidange du buffer d'entrée
ça peut se faire également avec la commande fflush(sdtin) mais qui n'est pas autorisée par la norme ANSI
Marsh Posté le 15-12-2002 à 15:54:54
tiens c marrant j ai le meme exo a faire sur la dichotomie !
tp 8 exo 6
Marsh Posté le 20-10-2002 à 17:31:29
voici mon code:
do
{
clrscr;
printf("Saisissez le nombre de tirages auxquels vous voulez proceder:\n(un nombre entier entre 1 et 99999)\n" );
scanf("%d",&n);
} while (n<=0 || n>99999
j'aimerai ajouter une condition du genre is_integer(n)
dans le cas où l'utilisateur saisie autrechose qu'un entier
merci
et je suis sous windows et clrscr ne fonctionne pas.
une idée ?
merci encore
Message édité par becvert le 20-10-2002 à 17:32:39