Bonjour à tous,
tout d'abord merci pour le temps que vous voulez bien me consacrer afin de lire mon message et je l'espère d'y répondre. Je vais essayer d'être rapide :
lorsque je compile mon programme, l'erreur 216 apparait, je vous poste mon code ci-dessous:
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
unit tirage;
 
interface
 
const max=9;
 
type
 img=record
      numero:integer; // numero de l'image
      compteur:integer; // nombre de fois que l'image a été attribué
     end;
 PImg=^img;
 listeImg=array[1..max*3] of PImg;
 
 Tableau=array[1..6,1..max] of pinteger;
 
var
 PListe:listeImg;
 PteurT:Tableau;
 
procedure tiralea(ligne,colonne:integer); 
 
implementation
 
procedure tiralea(ligne,colonne:integer);
var i,j,z,nombre:integer;
begin
 nombre:=trunc((ligne*colonne)/2); // valeur : nombre de paires ; astuce(trunc): dans tous les cas on obtiendra la même valeur !
 
 for i:=1 to nombre do
  begin
   new(PListe[i]);
   PListe[i]^.numero:=i; // image(i)=numero(i) ... jusque la… rien de très compliqu‚
   PListe[i]^.compteur:=0; // initialisation: l'image i a été attribué 0 fois
  end;
 
 for i:=1 to ligne do
  for j:=1 to colonne do
   repeat
    z:=random(nombre)+1; // on tire un numéro de carte au hasard
    if PListe[z]^.compteur<2 then  // si l'image n'a pas été utilisé plus de 2 fois(ou 2) alors...
     begin
      new(PteurT[i,j]);
      PteurT[i,j]^:=Pliste[z]^.numero;
      Pliste[z]^.compteur:=Pliste[z]^.compteur+1;
     end
    else PteurT[i,j]^:=0;  // Astuce
   until PteurT[i,j]^<>0;
 
end;
 
end.

Question subsidiaire:
C'est mieux de faire un tableau de pointeurs pointant vers des entiers ou un pointeur pointant vers un tableau d'entiers? (Vous avez suivi? )

Merci pour le temps que vous aurez bien voulu m'accorder