Exercice en Pascal
Résolu
GrandShrek
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
GrandShrek Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
GrandShrek Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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.
voici mon programme
Merci d'avance pour votre aide.
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.
A voir également:
- Exercice en Pascal
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Fleur d'encre 5eme corrigé exercice ✓ - Forum PDF
- Maud pascal le grand frère - Forum Cinéma / Télé
2 réponses
bonsoir
après quelques corrections (en turbo pascal)
il te faudra écrire la procédure affiche ....
bonne suite
après quelques corrections (en turbo pascal)
il te faudra écrire la procédure affiche ....
program lancedede; uses crt; const LMAX = 100; type TabEntiers = array[1..LMAX] of integer; procedure initialise( var T : TAbEntiers;n,f:integer); var i : integer; begin for i:=1 to (n*f)-n+1 do T[i]:=0; end; { initialise } function lancer(f,n : integer) : integer; var s,i,r : integer; begin s:=0; for i:=1 to n do begin r := random(f)+1; s := s+r; end; lancer := s; end; { lancer } procedure experience(var T : TabEntiers;x,n,f : integer); var i,s : integer; begin for i := 1 to x do begin s := lancer(f,n); T[s-n+1]:=T[s-n+1]+1; end; end; var n,f,i,x : integer; T : TabEntiers; begin clrscr; randomize; write('Combien de des : '); readln(n); write('Combien de faces : '); readln(f); write('Combien de lancers: '); readln(x); initialise(T,n,f); experience(T,x,n,f); for i:=1 to n*f-n+1 do begin write(n+i-1:4); writeln(T[i]:4); end; end.
bonne suite
ccm81
Messages postés
10909
Date d'inscription
Statut
Membre
Dernière intervention
2 433
RQ. comme tu n'as que des entiers positifs, à la place du type integer (de -32768 à 32767), il vaudrait mieux utiliser le type word (de 0 à 65535)