Mauvaise exécution

YacineDehmous Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Uly410 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   -
J'ai un petit problème avec une partie d'un programme que j'écris, la compilation et l'exécution se font normalement, mais dés-qu'on choisit 1 ou 2 pour introduire le nom ou le prénom, le programme ne demande pas d'introduire le nom ou le prénom contrairement à l'age, merci de contribuer à la solution :)!
PS: j'ai aussi le même problème quand je l'écris en utilisant l'instruction case of!!!

program chx;
uses wincrt;
var choix, age:integer;
    nom, prenom:string[15];
begin
writeln('___________Menu___________');
writeln(' 1 : Saisir votre nom');
writeln(' 2 : Saisir votre prenom');
writeln(' 3 : Saisir votre age');
writeln;
writeln('Faites votre choix:');
read(choix);
if choix = 1 then
       begin
              writeln('Saisissez votre nom:');
              readln(nom);
       end;
if choix = 2 then
       begin
              writeln('Saisissez votre prenom:');
              read(prenom);
       end;
if choix = 3 then
       begin
              writeln('Saisissez votre age:');
              read(age);
       end
else
       begin
              writeln('Erreur: Vous avez saisi une commande autre que 1, 2 ou 3');
       end;
writeln;
writeln('Au revoir');
end.

3 réponses

Newton Stark Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Salut!!!
J'ai testé ton programme et effectivement il a le problème que tu dis à une nuance près! Tu peux toujours saisir le nom ou le prénom. Le problème c'est que tu as inséré le message d'erreur dans la dernière structure If...Then...Else et séparer tous les "if" au lieu de les imbriquer oubliant qu'aucune des conditions précédentes ne vérifient choix=3 donc le message d'erreur apparaîtra toujours à moins que tu tapes 3. Ce doit être le même problème pour la structure case...of Bref teste les changements suivant à partir de la 13e ligne(if choix=1 Then):
If choix=1 Then
Begin
writeln('Saisissez votre nom');
readln(nom);
End
Else
Begin
If choix=2 Then
Begin
writeln('Saisissez votre prénom');
End
Else
Begin
If choix=3 Then
Begiin
writeln('Saisissez votre age');
readln(age);
End
Else
Begin
writeln('Erreur: Vous avez saisi une commande autre que 1, 2 ou 3');
End;
End;
writeln;
writeln('Au revoir');
End.
0
YacineDehmous
 
Malheureusement le problème persiste, mais ce qui me tape à l'oeil c'est plutôt le fait que ça ne fonctionne pas qu'avec les chaines de caractères, bizarre non? peut être que c'est un beug? Bref je te remercie d'avoir essayer de m'aider! Je vais faire recours à d'autre astuces pour réécrire le code!
0
Uly410 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   24
 
Bonjour,

Vous ne savez pas utiliser l'instruction " if then else ". Concentrez-vous sur son utilisation. Par contre je vous félicite pour la présentation du programme.

Bonsoir,

Uly
0