Vérification d'une chaîne

Résolu
stevenleferran Messages postés 32 Date d'inscription vendredi 14 août 2009 Statut Membre Dernière intervention 15 août 2009 - 24 mai 2006 à 10:35
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 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;
...

Merci d'avance

Steven LE FERRAN - CLFrance

3 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
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;

voilà

@+
Cirec
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
24 mai 2006 à 11:37
salut,

essayes ça:

while .....

For x=1 to 13 DO

BEGIN

y:=n[x]

if (y<'0') or (y>'9')

then begin

showmessage('il y a une erreur dans la saisie');

break;//ici on sort de la boucle for

end;

end;


@+

jlen
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
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;
0
Rejoignez-nous