Другие языки программирования и технологии

По какой причине переменная у не меняется? Паскаль

function coord(z:integer; var x, y:integer):integer;
begin
if z = 1 then x := 130; y := 130;
if z = 2 then x := 200; y := 130;
if z = 3 then x := 270; y := 130;
if z = 4 then x := 130; y := 200;
if z = 5 then x := 200; y := 200;
if z = 6 then x := 270; y := 200;
if z = 7 then x := 130; y := 270;
if z = 8 then x := 200; y := 270;
if z = 9 then x := 270; y := 270;
end;
function coord(z:integer; var x, y:integer):integer;
begin
if z = 1 then begin x := 130; y := 130; end;
if z = 2 then begin x := 200; y := 130; end;
if z = 3 then begin x := 270; y := 130; end;
if z = 4 then begin x := 130; y := 200; end;
if z = 5 then begin x := 200; y := 200; end;
if z = 6 then begin x := 270; y := 200; end;
if z = 7 then begin x := 130; y := 270; end;
if z = 8 then begin x := 200; y := 270; end;
if z = 9 then begin x := 270; y := 270; end;
end;
Юрий Тимофеев
Юрий Тимофеев
2 291
Лучший ответ
I'm Stif Уровень: ученик.
I'm Stif if z = 1 then begin x := 130; y := 130; end;
else if z = 2 then begin x := 200; y := 130; end;
else if z = 3 then begin x := 270; y := 130; end;
else if z = 4 then begin x := 130; y := 200; end;
else if z = 5 then begin x := 200; y := 200; end;
else if z = 6 then begin x := 270; y := 200; end;
else if z = 7 then begin x := 130; y := 270; end;
else if z = 8 then begin x := 200; y := 270; end;
else if z = 9 then begin x := 270; y := 270; end;
Уровень: подмастерье
Лучше так:
case z of
1:begin x := 130; y := 130; end;
2:begin x := 200; y := 130; end;
...
9: begin x := 270; y := 270; end;
end;
Лучше - создать константные массивы и брать значения оттуда:
const coord_x:array[1..9] of integer = (130,200,270,...);
coord_y:array[1..9] of integer = (130,130,130,200,...);
...
x := coord_x[z];
y := coord_y[z];
Еще лучше - объявить тип Point и объявлять массив Point-ов.
А совсем хорошо - вынести эти массивы в отдельный файл.
А вот короткий вариант:
x := 130 + ((z-1) mod 3)*70;
y := 130 + ((z-1) div 3)*70;
Но он не всегда годится.
IS
I'm Stif
53 200