Bonjour,
Je rencontre un problème en essayant de faire le puzzle du jeu "Sudoku" dans une matrice (9x9) .. en faite, ça m'a donné un message d'erreur: "NTVDM.exe à cesser de fonctionner" .. peut-être à cause d'une boucle infinie.., voici les lignes de code:

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
type
  short = 1..9;
 
var
  i, k, j, n, l, p, q, limk1, limk2, limi1, limi2: short;
  ch, num: string[1];
  x, y: integer;
  b, t: boolean;
  key: char;
  M: array [1..9, 1..9] of string[1];
  xy: array [1..2, 1..81] of integer;
 
label
  theend, randoms;
 
begin
  randomize;
  for k := 1 to 9 do
  begin
    if k in [1..3] then
    begin
      limk1 := 1;
      limk2 := 3;
    end
    else if k in [4..6] then
    begin
      limk1 := 4;
      limk2 := 6;
    end
    else
    begin
      limk1 := 7;
      limk2 := 9;
    end;
 
    for i := 1 to 9 do
    begin
      if i in [1..3] then
      begin
        limi1 := 1;
        limi2 := 3;
      end
      else if i in [4..6] then
      begin
        limi1 := 4;
        limi2 := 6;
      end
      else
      begin
        limi1 := 7;
        limi2 := 9;
      end;
 
 
      randoms:
        randomize;
      str(random(9) + 1, ch);
      b := True;
      for j := 1 to 9 do
        b := b and (ch <> M[j, k]);
      for l := 1 to 9 do
        b := b and (ch <> M[i, l]);
      for p := limk1 to limk2 do
        for q := limi1 to limi2 do
          b := b and (ch <> M[q, p]);
      if b = True then
        M[i, k] := ch
      else
        goto randoms;
    end;
  end;
...

J'espère quelqu'un peut m'aider, et merci.