|
|
bonjour a tous
j'ai réalisé grace a un algorithme un programme pour mon école.
Il n'est pas terminé, cependant je suis bloqué.
Ce programme est écrit en turbo pascal, il affiche un menu :
Vous pouvez :
a - Afficher un triangle de 4 x 4 étoiles
b - Afficher un rectangle de 3 x 10 dollars
q - Quitter le programme
Ensuite il affiche :"Entrer votre choix :"
En appuyant sur "a" puis entrer, il affiche un triange, en appuyant sur "b" puis entrer il affiche un rectangle et en appuyant sur "q" pui entrer il quitte le programme.
J'ai fais en sorte qu'après avoir affiché un triangle ou un rectangle il apparait à l'écran :"Appuyer sur une touche pour revenir au menu".
Cepandant en appuyant sur une touche le programme efface la page, réaffiche le menu (comme je lui ai demandé) mais inscrit la lettre (comme choix de l'utilisateur, après "Entrer votre choix :") sur lequel a tapé l'utilisateur pour revenir au menu.
En résumé, le programme prend en compte la lettre (tapée pour revenir au menu) comme choix de l'utilisateur.
Y aurait il moyen de faire en sorte que le programme ne prenne pas en compte cette lettre ?
voici mon programme en turbo pascal :
program TP1_menu;
uses wincrt,strings;
var choix:Char;
(********** variables globales **************)
(************************************************************)
procedure ouvreFenetre;
begin
Strcopy(WindowTitle,'Titre : TP1 menu principal');
screensize.x:=96;
screensize.y:=200;
windowsize.x:=800;
windowsize.y:=600;
InitWinCRT;
end;
(************************************************************)
procedure fermeFenetre;
begin
donewincrt;
end;
(************************************************************)
(* dessine un triangle de cotés 4x4 étoiles
(******)
procedure triangle4x4etoiles;
begin
writeln('*');
writeln('**');
writeln('***');
writeln('****');
end;
(************************************************************)
(* dessine un rectangle creux de 3 x 10 dollars
(******)
procedure rectangle3x10Dollars;
begin
writeln('$$$$$$$$$$');
writeln('$ $');
writeln('$$$$$$$$$$');
end;
(************************************************************)
(* affiche le menu principal du programme
(******)
procedure AfficheMenu;
begin
writeln('Vous pouvez :');
writeln('a - Afficher un triangle de 4 x 4 étoiles');
writeln('b - Afficher un rectangle de 3 x 10 dollars');
writeln('q - Quitter le programme');
end;
(************************************************************)
(* exécute le choix de l'utilisateur
(******)
procedure SaisirChoix;
begin
write('Entrer votre choix : ');
readln (choix);
end;
(************************************************************)
(* affiche le choix saisie
(******)
procedure ChoisirLettre;
begin
if choix='a'
then triangle4x4etoiles;
if choix='b'
then rectangle3x10Dollars;
end;
(************************************************************)
(* réaffiche le menu en appuyant sur une touche
(******)
procedure NouveauChoix;
begin
if (choix='a') or (choix='b')
then
begin
writeln;
write('Appuyer sur une touche pour revenir au menu');
repeat (*rien*) until keypressed;
clrscr;
end;
end;
(************************************************************)
(* programme principal
(******)
begin
ouvreFenetre;
repeat
NouveauChoix;
AfficheMenu;
SaisirChoix;
ChoisirLettre;
until choix='q';
fermeFenetre;
end.
Merci de résoudre mon problème.
-->Message édité par maxer11 le 15/02/2008 15:56:07<--
|