Problème [TurboPascal]

Résolu/Fermé
Utilisateur anonyme - 22 mai 2005 à 09:30
 Utilisateur anonyme - 7 juin 2005 à 18:40
Bonjour,
Sous TurboPascal 7, je déclare une variable de type intervalle :
var nom_variable:5..50;
Je lance le programme comportant readln(nom_variable);, j'entre une valeur; jusque là tout va bien. Mais si j'entre un nombre inférieur à 5 ou supérieur à 50, il n'y a pas de message d'erreur. Je clique sur debug|watch et j'entre le nom de la variable, il m'affiche bien ce que j'ai entré. Bref, c'est comme si 5..50 voulait dire integer.
Dans les cours de Pascal que j'ai lu sur Internet il ne devrait pas accepter un nombre hors de cette limite.
Comment faire ?
Merci pour votre réponse
A voir également:
  • Problème [TurboPascal]
  • Turbopascal - Télécharger - Édition & Programmation

1 réponse

sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
22 mai 2005 à 10:49
et bien, c'est vrai! une variable ayant comme un intervalle d'entiers est un entier, si tu veux obliger l'utilisateur à saisir un nombre entre 5 et 50 tu doit faire:

var
   ma_variable:integer;
begin
   repeat
      readln(ma_variable);
      if not (ma_variable in [5..50]) then
          writeln('le nombre doit etre entre 5 et 50!');
   until (ma_variable in [5..50]);
end.

c'est la structure itérative, qui valide l'entree de l'utilisateur!
0
Utilisateur anonyme
7 juin 2005 à 18:40
Salut,
Merci pour ta réponse.
Pour que les valeurs des variables à intervalle soient limitées, il faut ajouter la directive de compilation {$R+}.
0