Bonjour,
Je voudrais trier un tableau de coordonnée :
(86,5) (87,4) (88,2) (89,1) (88,3) : points un peu mélangés
qui donne
(86,5) (87,4) (88,3) (88,2) (89,1) : points qui se collent , peuvent se coller en diagonale.
Ca ne marche pas , pouvez-vous m'aider ???
merci
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 program Project1; {$APPTYPE CONSOLE} uses SysUtils; type txy = record x,y : word; end; var al : array[0..4] of txy; nal :byte; procedure ranger; var fini : boolean; n2,n,x1,y1,x2,y2 : integer; dx,dy : integer; debug,cestbon : boolean; label ab; begin repeat ab:; fini := true; for n := 0 to nal-2 do begin x1 := al[n].x; y1 := al[n].y; x2 := al[n+1].x; y2 := al[n+1].y; dx := abs(x2-x1); dy := abs(y2-y1); cestbon := false; if (dx<2) and (dy<2) then cestbon := true; if (not cestbon) then begin (*al[n].x := x2; al[n].y := y2; al[n+1].x := x1; al[n+1].y := y1;*) debug := false; for n2 := 0 to nal-1 do begin // if ((n)<>n2) and ((n+1)<>n2) then begin if ((n)<>n2) then begin dx := abs(x1-al[n2].x); dy := abs(y1-al[n2].y); if (dx<2) and (dx<2) then begin x1 := al[n].x; y1 := al[n].y; x2 := al[n2].x; y2 := al[n2].y; al[n].x := x2; al[n].y := y2; al[n2].x := x1; al[n2].y := y1; debug := true; break; end; end; end; if (not debug) then debug := debug; fini := false; //goto ab; end; end; until fini; end; begin { TODO -oUser -cConsole Main : Insert code here } al[0].x := 86; al[0].y := 5; al[1].x := 87; al[1].y := 4; al[2].x := 88; al[2].y := 2; al[3].x := 89; al[3].y := 1; al[4].x := 88; al[4].y := 3; nal := 5; //nombre de coordonnée ranger; end.
Partager