Controle de saisie, pascal
Résolu
madgyl
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
madgyl Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
madgyl Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila, j'ai un petit problème avec la procédure qui suit, alors si quelqu'un peut m'aider, merci dja! ;-)
En fait il s'agit de remplir une classe d'étudiants (fichier) avec un minimum de 5 et un maximum de 25.
g utilisé la fonction Ord (avec les codes ASCII) pour contrôler les saisies au clavier;
le problème maintenant est qu'il accepte toute les valeurs numériques, alors que moi je veux des chiffres dans l'intervalle [5..25]
Voila, j'ai un petit problème avec la procédure qui suit, alors si quelqu'un peut m'aider, merci dja! ;-)
En fait il s'agit de remplir une classe d'étudiants (fichier) avec un minimum de 5 et un maximum de 25.
g utilisé la fonction Ord (avec les codes ASCII) pour contrôler les saisies au clavier;
le problème maintenant est qu'il accepte toute les valeurs numériques, alors que moi je veux des chiffres dans l'intervalle [5..25]
{ ********************************************************************* } procedure effectif(eff: string); var t: boolean; ch: array[1..10] of char; i,y: byte; Begin repeat clrscr; writeln; write(' ','Donner l''effectif de la classe: '); t:= true; readln(eff); for i:= 1 to length(eff) do begin ch[i]:= eff[i]; y:= ord(ch[i]); if ((y < 48) or (y>57)) then t:= false; end; if t= false then begin writeln; textcolor( red+ blink); writeln(' ERREUR DE SAISIE '); textcolor(white); writeln(' Nos classes comprennent entre 5 et 25 etudiants '); writeln(' Saisissez des entiers svp! '); writeln(' Veuillez appuyer sur ENTRER pour resaisir l''effectif '); readln; end; until (t = true); End;
A voir également:
- Controle de saisie, pascal
- Turbo pascal - Télécharger - Édition & Programmation
- Saisie gestuelle iphone - Guide
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Saisie vocale whatsapp - Accueil - Messagerie instantanée
1 réponse
bonjour,
L'astuce pour controler la saisie de nombres en pascal, c'est de lire une chaine (et non un nombre) qu'on convertit ensuite en nombre si possible. Pour ça, on uitilise la procédure Val().
Val ( x, s, error ) ;
Procédure qui convertit la chaîne de caractère de nom s en un nombre (Integer ou Real) x et renvoie un code erreur error (de type integer) qui est égale à 0 si la conversion est possible.
Petit programme test:
Essaye d'entrer des lettres ou des nombres décimaux ou est entier hors intervalle.
A+.
L'astuce pour controler la saisie de nombres en pascal, c'est de lire une chaine (et non un nombre) qu'on convertit ensuite en nombre si possible. Pour ça, on uitilise la procédure Val().
Val ( x, s, error ) ;
Procédure qui convertit la chaîne de caractère de nom s en un nombre (Integer ou Real) x et renvoie un code erreur error (de type integer) qui est égale à 0 si la conversion est possible.
Petit programme test:
Program test; uses crt; Var ok : boolean; s : string; n : integer; err: integer; Begin ok:=false; repeat Writeln('Entrer un nombre entier compris entre 5 et 25'); readln(s); val(s,n,err); if ((err=0) and (n>=5) and (n<=25)) then ok:=true; until ok ; Writeln('Vous avez entré le nombre ', n); readln; END.
Essaye d'entrer des lettres ou des nombres décimaux ou est entier hors intervalle.
A+.
thanks ;-)