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.
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.
Merci d'avance pour votre aide.