Bonjour à tous,
il y a un exercice que je n'arrive pas à traiter :
Voilà ce que j'ai fait :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 . ..... .....
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.
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.
Bonne journée.
Partager