Saisir une chaîne uniquement par .........
MoNdEtYnOtEcK
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
MoNdEtYnOtEcK Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
MoNdEtYnOtEcK Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je veux remplir une chaîne de caractères uniquement par des chiffres et des lettre majuscules e l'intervalle [ 'A' .. 'F' ], je ne trouve pas le solution :'(
j'ai besoin d'aide et merciiiiii.
Je veux remplir une chaîne de caractères uniquement par des chiffres et des lettre majuscules e l'intervalle [ 'A' .. 'F' ], je ne trouve pas le solution :'(
j'ai besoin d'aide et merciiiiii.
A voir également:
- Saisir une chaîne uniquement par .........
- Comment saisir une adresse url - Guide
- Chaine tnt gratuite sur mobile - Guide
- Chaine radio - Télécharger - Médias et Actualité
- Plus de chaine tv - Guide
- Chaine musique bouygues - Accueil - Guide TV et vidéo
3 réponses
Salut MoNdEtYnOtEcK,
Ce que tu veux faire n'est pas clair.
Peux-tu préciser, stp.
Sinon, voilà des pistes.
1.
Est-ce que tu veux c'est : demander à l'utilisateur d'un programme en mode console de saisir au clavier une chaîne en n'acceptant sa saisie que s'il ne presse que des lettres majuscules et/ou des chiffres et la touche Enter ?
Si c'est bien cela, il faudrait utiliser ReadKey en n'acceptant la saisie d'un caractère que si la valeur du caractère (fonction ord) est comprise entre celles de A et Z et entre 0 et 9 (compris) https://www.freepascal.org/docs-html/rtl/crt/readkey.html en faisant un echo à l'écran, et en stockant la valeur dans une chaîne.
2.
Autrement, tu peux utiliser un readln et vérifier a posteriori, que les caractères de la chaîne saisie sont "acceptables".
A toi de jouer :-)
Bon courage,
Dal
Ce que tu veux faire n'est pas clair.
Peux-tu préciser, stp.
Sinon, voilà des pistes.
1.
Est-ce que tu veux c'est : demander à l'utilisateur d'un programme en mode console de saisir au clavier une chaîne en n'acceptant sa saisie que s'il ne presse que des lettres majuscules et/ou des chiffres et la touche Enter ?
Si c'est bien cela, il faudrait utiliser ReadKey en n'acceptant la saisie d'un caractère que si la valeur du caractère (fonction ord) est comprise entre celles de A et Z et entre 0 et 9 (compris) https://www.freepascal.org/docs-html/rtl/crt/readkey.html en faisant un echo à l'écran, et en stockant la valeur dans une chaîne.
2.
Autrement, tu peux utiliser un readln et vérifier a posteriori, que les caractères de la chaîne saisie sont "acceptables".
A toi de jouer :-)
Bon courage,
Dal
voici une fonction qui fait le test de saisie !
function verif(ch:string):boolean;
var
i:integer;
begin
i:=1;
while(upcase(ch[i]) in ['A'..'Z','0'..'9']) and (i<= length(ch)) do
inc(i); { i:=i+1;}
verif:=i>=length(ch);
end;
et voici la procédure saisie
procedure saisie(var ch:string);
begin
repeat
write('Taper une chaine: ');
readln(ch);
until(verif(ch));
end;
function verif(ch:string):boolean;
var
i:integer;
begin
i:=1;
while(upcase(ch[i]) in ['A'..'Z','0'..'9']) and (i<= length(ch)) do
inc(i); { i:=i+1;}
verif:=i>=length(ch);
end;
et voici la procédure saisie
procedure saisie(var ch:string);
begin
repeat
write('Taper une chaine: ');
readln(ch);
until(verif(ch));
end;
Salut tous le monde,
Merci pour toi Dal et xman, j'ai trouver la solution :D
=> Pour dal, mon besoin c'est exactement ta hypothèse 1.
=> Pour xman, c'est presque que-ce que je fait.
La solution :
Function verif ( ch : string ) : boolean ;
var
v : boolean ;
i : integer ;
begin
v := vrai ;
i := 1 ;
while ( i <= length(ch)) and ( v ) do
if (( not ( ch[i] in ['A'..'F','0'..'9'] )) = true ) then
v := faux
else
i := i + 1 ;
verif := v ;
end ;
begin
repeat
writeln ( " Taper une chaine : " ) ;
read ( ch ) ;
until ( verif ( ch ) ) ;
end.
Merci pour toi Dal et xman, j'ai trouver la solution :D
=> Pour dal, mon besoin c'est exactement ta hypothèse 1.
=> Pour xman, c'est presque que-ce que je fait.
La solution :
Function verif ( ch : string ) : boolean ;
var
v : boolean ;
i : integer ;
begin
v := vrai ;
i := 1 ;
while ( i <= length(ch)) and ( v ) do
if (( not ( ch[i] in ['A'..'F','0'..'9'] )) = true ) then
v := faux
else
i := i + 1 ;
verif := v ;
end ;
begin
repeat
writeln ( " Taper une chaine : " ) ;
read ( ch ) ;
until ( verif ( ch ) ) ;
end.
Si c'est l'hypothèse 1., alors cela serait plutôt :
Pour bien faire, il faudrait aussi gérer la touche "Backspace" pour permettre la suppression de texte saisi. Mais, c'est un peu compliqué.
Dal
program test; uses Crt; var ch : Char; st : String; begin ClrScr; write('Veuillez taper un nombre hexadécimal, ' + 'c''est à dire, une chaîne de caractères ' + 'composée uniquement par des chiffres et ' + 'des lettres majuscules dans l''intervalle ' + '[ ''A'' .. ''F'' ]]: '); st := ''; repeat ch := ReadKey; if (ch in ['A'..'F','0'..'9']) then begin st := st + ch; write(ch); end; until (ch = #13) and (st <> ''); writeln; writeln('Vous avez tapé : ' + st); ReadKey; end.
Pour bien faire, il faudrait aussi gérer la touche "Backspace" pour permettre la suppression de texte saisi. Mais, c'est un peu compliqué.
Dal