Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська політехніка»
Кафедра АСУ
/
Розрахункова робота
З
Теорії алгоритмів
26. (Славич) Замість крапочок вставте числа так, щоб сума чисел у рядках і стовпчиках у квадраті була однакова.
Хід роботи
program table1;
var b: array [1..3,1..3] of integer; { вхідна матриця }
x,y,
nul_val, { індекс невизначеного числа }
nul_cnt, { кількість невизначених чисел }
max_val, { сума, яка повинна бути в рядках і стовпцях }
sum { сума, яка повинна бути в рядках і стовпцях }
: integer;
procedure WriteB;
var x,y: integer;
begin
writeln;
For y:=1 to 3 do
begin
For x:=1 to 3 do
write(b[x,y],' ');
writeln;
end;
end;
begin
b[1,1]:=-1; b[2,1]:=-1; b[3,1]:=-1;
b[1,2]:=7; b[2,2]:=6; b[3,2]:=5;
b[1,3]:=4; b[2,3]:=-1; b[3,3]:=3;
writeln('Вхідні дані:');
WriteB;
{ пошук суми, яка повинна бути в рядках і стовпцях }
max_val:=-1;
For x:=1 to 3 do
begin
sum:=0;
nul_cnt:=0;
For y:=1 to 3 do
if b[x,y]>0 then begin nul_cnt:=nul_cnt+1; sum:=sum+b[x,y]; end else break;
if nul_cnt=3 then begin max_val:=sum; break; end;
end;
if max_val=-1 then
For x:=1 to 3 do
begin
sum:=0;
nul_cnt:=0;
For y:=1 to 3 do
if b[y,x]>0 then begin nul_cnt:=nul_cnt+1; sum:=sum+b[y,x]; end else break;
if nul_cnt=3 then begin max_val:=sum; break; end;
end;
writeln;
writeln('Сума по рядках і стовпцях: ',max_val);
writeln;
writeln('Результат:');
{ обчислення невідомих у стовпцях }
For x:=1 to 3 do
begin
sum:=0;
nul_val:=0;
nul_cnt:=0;
For y:=1 to 3 do
if b[x,y]=-1 then begin nul_val:=y; nul_cnt:=nul_cnt+1; end else sum:=sum+b[x,y];
if nul_cnt=1 then b[x,nul_val]:=max_val-sum;
end;
{ обчислення невідомих у рядках }
For y:=1 to 3 do
begin
sum:=0;
nul_val:=0;
nul_cnt:=0;
For x:=1 to 3 do
if b[x,y]=-1 then begin nul_val:=x; nul_cnt:=nul_cnt+1; end else sum:=sum+b[x,y];
if nul_cnt=1 then b[nul_val,y]:=max_val-sum;
end;
WriteB;
ReadLn;
end.