Problème [TurboPascal]

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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
--
Vincent.T

1 réponse

  1. sam3000 Messages postés 1226 Statut Membre 144
     
    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
    1. Utilisateur anonyme
       
      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