Mauvaise exécution

Fermé
YacineDehmous Messages postés 1 Date d'inscription jeudi 11 décembre 2014 Statut Membre Dernière intervention 11 décembre 2014 - Modifié par Whismeril le 18/12/2014 à 21:51
Uly410 Messages postés 319 Date d'inscription mercredi 14 janvier 2015 Statut Membre Dernière intervention 2 février 2015 - 14 janv. 2015 à 19:21
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 dimanche 26 août 2012 Statut Membre Dernière intervention 23 septembre 2015
15 déc. 2014 à 22:25
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
18 déc. 2014 à 21:42
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 mercredi 14 janvier 2015 Statut Membre Dernière intervention 2 février 2015 24
Modifié par Uly410 le 14/01/2015 à 19:23
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