Bonjour,
J'ai essayé de résoudre cet exercice mais je me heurte à de nombreux problèmes. Voici l'énoncé de l'exercice et mon début de programme :
On souhaite mesurer expérimentalement la distribution des scores que l'on obtient en lançant x fois n dés à f faces. Pour cela on va stocker dans un tableau d'entiers le nombre d’occurrences de chaque score obtenu. Le programme devra comporter les sous-programmes suivants :
- La procédure initialise qui initialise le tableau des occurrences des scores (chaque valeur à 0) en fonction du nombre n de dés et du nombre f de faces.
- Une fonction lancer qui lance les n dés à n faces et retourne le score. On rappelle que la fonction random(a) génère un nombre aléatoire en 0 et a-1.)
- Une procédure expérience qui lance x fois n dés à f faces et met à jour chaque lancé du tableau d’occurrence des scores
- Une procédure affichage qui affiche les résultats des scores.
Merci d'avance pour votre aide.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 program lancedede; const LMAX = 100; type TabEntiers = array[1..LMAX] of integer; procedure initialise( var T : TAbEntiers;n,f:integer); var i : integer; begin for i:=n to (n*f) do T[i]:=0; end; { initialise } function lancer(T : TabEntiers ;n,f : integer) : integer; var c,i,r : integer; begin c:=(n*f)-(n-1); r:=random(c)+n; for i:=n to (n*f) do T[r]:=T[r]+1; end; { lancer } procedure experience(T : TabEntiers;nb,n,f : integer); var i : integer; begin i:=0; while (i<nb) do begin lancer(T,n,f); T[i]:=T[i]+1; i:=i+1; end; end; var n,f,i,nb : integer; T : TabEntiers; begin randomize(); write('Combien de dés :'); readln(n); write('Combien de faces : '); readln(f); write('Combien de lancers: '); readln(nb); initialise(T,n,f); lancer(T,n,f); experience(T,nb,n,f); for i:=1 to 12 do write(T[i]); end.![]()
Partager