Téléchargement
illégal
Posez votre question Signaler

Exercice en Pascal [Résolu]

GrandShrek 2Messages postés 17 novembre 2011Date d'inscription 17 novembre 2011Dernière intervention - Dernière réponse le 17 nov. 2011 à 23:52
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
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.
Lire la suite 

Exercice en Pascal »

3 réponses
Réponse
+0
moins plus
bonsoir

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- 17 nov. 2011 à 20:56
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)
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup !
Ajouter un commentaire
Ce document intitulé « Exercice en Pascal » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?