Problème #2, Test addition

Fermé
stemariej Messages postés 8 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 6 mai 2010 - 24 déc. 2008 à 08:04
dna.factory Messages postés 25355 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 19 novembre 2024 - 24 déc. 2008 à 08:30
Bonjour,

J'ai un autre problème, dans ce programme, je dois poser 10 question à l'usager celui-ci répond et après trois erreurs consécutives, il est automatiquement sorti du test. De plus, si après la sixième question, il a réussi 4 question consécutive, il peut à son choix arrêter le test. Je dois aussi afficher le score cumulatif après tout les questions.

Premiere erreur: je n'arrive pas à sortir l'usager après 3 question, ça fonctionne seulement après 4 même si le compteur affiche 2.
Erreur 2 : la fonction pour arrêter le test après 6 questions ne fonctionne pas du tout ...

Voici mon programme :

program TP3;

{$APPTYPE CONSOLE}

uses
Forms;
Const
quest1='1 est: 1 + 1';
quest2='2 est: 2 + 2';
quest3='3 est: 3 + 3';
quest4='4 est: 4 + 4';
quest5='5 est: 5 + 5';
quest6='6 est: 6 + 6';
quest7='7 est: 7 + 7';
quest8='8 est: 8 + 8';
quest9='9 est: 9 + 9';
quest10='10 est: 10 + 10';

var

tablor:array[1..10] of integer=(2,4,6,8,10,12,14,16,18,20);
cumb,cumm,i,ind_err,ind_bon,question:integer;
j : char;

begin
i:=tablor[1];
cumb:=0; //nombre de bonnes réponses cumulatives//
cumm:=0; //nombre de mauvaises réponses cumulatives//
ind_err:=0;
ind_bon:=0;
question:=0;



question:= question+1;
writeln('la question no ',quest1);
write('la reponse est:');
readln(i);
if i<> 2 then
begin
cumm:= cumm+1;
ind_err:= ind_err+1;
writeln('vous avez la mauvaise réponse, la reponse etait 2');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
End
else
begin
cumb:=cumb+1;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln
end;

question:= question+1;
writeln('la question no ',quest2);
write('la reponse est:');
readln(i);
if i<> 4 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 4');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest3);
write('la reponse est:');
readln(i);
if i<> 6 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 6');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1;
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest4);
write('la reponse est:');
readln(i);
if i<> 8 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 8');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest5);
write('la reponse est:');
readln(i);
if i<> 10 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 10');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest6);
write('la reponse est:');
readln(i);
if i<> 12 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 12');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest7);
write('la reponse est:');
readln(i);
if i<> 14 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 14');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest8);
write('la reponse est:');
readln(i);
if i<> 16 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 16');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest9);
write('la reponse est:');
readln(i);
if i<> 18 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 18');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

question:= question+1;
writeln('la question no ',quest10);
write('la reponse est:');
readln(i);
if i<> 20 then
begin
cumb:=0;
writeln('vous avez la mauvaise réponse, la reponse etait 20');
writeln('votre score est:',ind_bon ,'sur:', question);
writeln;
if cumm >=1 then
cumm:= cumm+1
else
cumm:= 1
End
else
begin
cumm:= 0;
ind_bon:= ind_bon+1;
writeln('votre score est:',ind_bon ,'sur:', question);
writeln ;
if cumb =1 or 2 then
cumb:= cumb+1
else
cumb:=1
end;

Writeln ('vous avez fait trois erreurs consécutives le test se termine automatiquement');



writeln('Appuyez sur <ENTREE> pour terminer...');
readln;
end.

Merci de m'aider
A voir également:

1 réponse

dna.factory Messages postés 25355 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 19 novembre 2024 1 613
24 déc. 2008 à 08:30
hou la, hou la hou la
si je peux te donner un petit conseil d'ex programmeur, ne nous donne pas le produit fini, donne nous l'algo
il y a tellement de langages différents, qu'en faisant ça, tu limites ta demandes à ceux qui connaissent ce programme précis
tandis qu'avec l'algo, on peut etre plus à t'aider
pour ma part, le premier truc qui me gène c'est les 10 'blocs' que je vais appeller par abus de langages fonctions, avec un pour chaque question, et la réponse en dur...
ça pique méchant quand même
pour ma part, j'estime que tu dois faire un seul bloc, en boucle when (pas un for, vu que tu peux sortir avant la fin) avec les réponses en parametrès, alors forcément, ton bloc sera plus complexe, mais en contrepartie ton programme sera 10 fois plus petit, et ton programme sera facilement évolutif pour des questions différentes et un nombre de question différent

(evidemment, à supposer que c'est faisable dans le langage que tu utilise)
0