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.
voici mon programme
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.
