2010-10-04 4 views
1

Je possède ce var:Pourquoi ce code ne fonctionne pas en Pascal?

var 
UserInput : array [1..3] of string; 

J'essaie de définir plusieurs valeurs, à la fois.

readln(UserInput[1], UserInput[2], UserInput[3]); 

Lorsque le code est exécuté, toutes les entrées sont stockées dans UserInput [1]

Ex.: 
Input: 10 1.5 18 

Result: 
UserInput[1] = 10 1.5 18 
UserInput[2] = 0 
UserInput[3] = 0 

Que dois-je faire?

Répondre

4

définissent comme flotteur ou int non sous forme de chaîne:

Var 
    myVar : Integer; 
    myArray : Array[1..5] of Integer; 

Begin 
myArray[2] := 25; 
myVar := myArray[2]; 
End. 
+0

Ok ça marche. Mais comment puis-je empêcher les mauvaises entrées? –

+0

J'utilisais val(), mais cette instruction échoue, puisque UserInput [1] n'est plus une chaîne –

+0

A ce niveau, il n'y a que $ I +/- et IOError pour vérifier les erreurs. Pour une gestion des erreurs plus élaborée, vous devrez le lire en tant que chaîne et effectuer votre propre traitement. C'est facile, ça dépend du compilateur. Delphi et FPC ont d'assez bonnes installations pour cela. –

3

readln lit tout le texte, il ne sait pas que vous vouliez dire "10 1.5 18" être trois choses différentes. Pour vos yeux humains, ce sont trois chiffres, mais pour l'ordinateur, c'est juste une chaîne de neuf caractères.

Mon Pascal est très rouillé, mais si vous définissez UserInput être de type float, alors readln devrait interpréter le texte comme un nombre, comme prévu. Ou, si readln lit uniquement des chaînes, vous devrez écrire plus de code pour le convertir en nombre.

Questions connexes