stevenleferran
Messages postés32Date d'inscriptionvendredi 14 août 2009StatutMembreDernière intervention15 août 2009
-
24 mai 2006 à 10:35
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
25 mai 2006 à 17:13
Bonjour,
j'ai un problème avec un morceau de code en Turbo Pascal.
Pourriez-vous m'aider?
Le programme rentre dans une boulce while puis dans la boucle for et vérifie
si le contenu de n est que des chiffres.
Et si ce n'est pas le cas, je souhaite que le programme affiche erreur... et sort de la boucle for puis recommence la boucle WHILE.
x : entier
y, n : chaîne
while .....
For x=1 to 13 DO
BEGIN
y:=n[x]
if (y<'0') or (y>'9')
then begin
writeln('il y a une erreur dans la saisie');
continue;
end;
end;
...
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 24 mai 2006 à 11:36
Salut,
N'ayant plus de TuboPascal sous la main pour tester, voici ce que j'aurais écris pour une recherche de ce genre :
Var X : Integer; // déclaration des variables
Y, N : String;
Begin N := '12d454787az2154h'; //initialisation des variables
Y := '';
For x: =1 to Length(N) DO// on parcourt la longueur de la chaine
IfNot (N[X] in ['0'..'9']) Then // si N[X] n'est pas dans l'interval ['0'..'9']
writeln('il y a une erreur dans la saisie '+ N[X] + ' n''est pas un entier') // on écrit un message d'erreur
Else // si non
Y := Y + N[X]; // on affecte le résultat à Y
WriteLn(N); // et pour finir on affiche l'original
WriteLn(Y); // et le "corrigé"
End;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 25 mai 2006 à 17:13
houla ...
pitite fonction :
fonction CheckNumStr(const S : string) : boolean;
var N : integer;
begin
result := false;
for N := 1 to length(S) do
if not (S[N] in #48..#57) then exit;
result := true;
end;
utilisation :
var S : string;
ST : boolean;
begin
repeat
GotoXY(0,0);
Write('Entrez un nombre : ');
ReadLn(S);
ST := CheckNumStr(S);
if not ST then begin
ClrScr;
GotoXY(0,0);
Writeln('Erreur, cette chaine ('+S+') ne represente pas un nombre...');
Writeln('Appuyez sur une touche pour continuer.');
repeat until keypressed;
end;
until ST;
// ... //
end;