Bonjour à tous,

il y a un exercice que je n'arrive pas à traiter :
On veut écrire une procédure (reviser multi) qui demande à l'utilisateur de réciter sa table de multiplication. L'utilisateur commence par entrer un nombre entre 2 et 9 (si le nombre est incorrect, le programme redemande) ; ensuite, le programme affiche une à une les lignes de la table de multiplication de ce nombre ,en laissant le résultat vide et en attendant que l'utilisateur entre le résultat. Si celui ci est correct, on passe à la ligne suivante, sinon on affiche un message d'erreur donnant la bonne valeur et on continue. Si toutes les réponses sont correctes, on affiche une message de félicitation sinon on affiche un message donnant le nombre d'erreurs. Créer 2 programmes, un avec la boucle for et l'autre avec repeat.
On représente ci-dessous une exécution possible :
valeur de n:12
ressayez:la valeur doit être comprise entre 2 et 9
valeur de n:6
1*6=6
2*6=12
3*6=15
erreur! 3*6=18 et non 15
.
.....
.....
Voilà ce que j'ai fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program multiplication;
uses crt;
var n:integer;
procedure multi(x:integer);
var i,s,k,p:integer;
begin
repeat 
read(x);
until (n>=2) and (n<=9);
i:=0; s:=0;
repeat
i:=i+1;
p:=n*i;
write(n,'*',i,'='); read(k);
if p<>k then begin
writeln('erreur le produit est',p,'et non',k);
end;
until i>=10;
if (p=k)  and (s=0) then write ('bravo');
else write('le nombre d'erreur est',s);
end;
begin
write('valeur de n'); read(n);
multi(n);
end.
Ce qu'il y a c'est que je pense que mon programme est incorrect malgré qu'il s'exécute et puis, pour la boucle for, j'ai essayé mais je n'y suis pas arrivé ; donc je vous demande de l'aide svp.
Bonne journée.