-
Notifications
You must be signed in to change notification settings - Fork 2
/
utgroupcontrolor.pas
111 lines (93 loc) · 2.28 KB
/
utgroupcontrolor.pas
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
{******************************************************
** Analyse une region donnee pour trouver d'eventuel *
** erreurs *
******************************************************}
unit UTGroupControlor;
{$mode objfpc}{$H+}
interface
uses
UTGroup, utConst;
type TGroupControlor= class
private
procedure detectError(nb : byte);
public
constructor init(group : TGroup);
procedure Analyze;
function isInOrder : boolean;
function isComplete : boolean;
{:(}
public
ordre : boolean;
groupe : TGroup;
end;
implementation
{**
** le constructeur de la classe
**@param group indique le groupe a controle
**}
constructor TGroupControlor.init(group : TGroup);
begin
groupe:= group;
end;
{**
** indique si la region contient des erreurs
** @return true retourne true si tout est en ordre, false sinon
**}
function TGroupControlor.isInOrder : boolean;
begin
isInOrder:=ordre;
end;
{**
** indique si toutes les cases de la regions ont ete renseignees
** @return true si toutes les cases sont renseignees, false sinon
**}
function TGroupControlor.isComplete : boolean;
var i, j : byte;
choisi: boolean;
begin
choisi:=true;
for i:= 1 to gDim do
begin
if (not choisi) then
break;
for j:=1 to gDim do
if (not groupe.tableau[i, j].choisi) then
begin
choisi:= false;
break;
end;
end;
isComplete:=choisi;
end;
procedure TGroupControlor.detectError(nb : byte);
var i, j, cpt : byte;
begin
cpt:=0;
for i:=1 to gDim do
for j:=1 to gDim do
if (groupe.tableau[i, j].choisi) then
if(groupe.tableau[i, j].choix=nb) then
begin
inc(cpt);
if cpt=2 then
begin
ordre:=false;
exit;
end;
end;
end;
{**
**analyse la region afin de detecter d'eventuelles erreurs
**}
procedure TGroupControlor.analyze;
var k : byte;
begin
ordre:=true;
for k:=1 to tDim do
begin
detectError(k);
if (not ordre) then
break;
end;
end;
end.