Em viết chương trình, khi em nhấn F7 kiểm tra từ từ thì không vào được thủ tục setupp mà FreePascal báo lỗi rồi thoát luôn. Mọi người cho em hỏi chương trình của em có vấn đề hay do máy tính ạ ? Mà em cũng cài lại FP rồi vẫn bị ...
Code: |
{$mode objfpc}
var
f: text;
d, c, i, top, m, n, tmpm: longint;
slg, nto, q: array[1..100] of longint;
dd: array[0..100] of boolean;
procedure them(n: longint);
begin
c := c + 1; q[c] := n; dd[n] := false;
end;
procedure lay(var n: longint);
begin
n := q[d]; d := d + 1;
end;
procedure setupp(gt, i: longint);
var
j: longint;
begin
if i <= top then
begin
for j := 1 to slg[top] do
begin
gt := gt * nto[i];
if dd[tmpm - 1 - abs(gt - (tmpm div gt))] then
begin
them(tmpm - 1 - abs(gt - (tmpm div gt)));
end;
setupp(gt, i + 1);
end;
end;
end;
BEGIN
fillchar(dd, sizeof(dd), true); dd[0] := false;
assign(f, 'ZERO.INP'); reset(f);
read(f, n);
close(f);
d := 1; c := 0;
them(n);
while d <= c do
begin
lay(m); tmpm := m;
i := 2; top := 0;
while (m > 1) do
begin
if m mod i = 0 then
begin
top := top + 1;
nto[top] := i; slg[top] := 0;
while m mod i = 0 do
begin
slg[top] := slg[top] + 1;
m := m div i;
end;
end;
i := i + 1;
end;
setupp(1, 1);
end;
for i := 0 to n do
if dd[i] = false then write(i, ' ');
readln;
END.
|
Thêm nữa là lần này em thử coi abs(-4) trong Watches thì nó lại báo là 0 ??? Em dùng FP 2.6.0