Tin học lỗi freepascal

H

hai6f2009

Last edited by a moderator:
M

mikelhpdatke

Đây có thể là do lỗi code or do lỗi FP.
Bạn thử post nguyên văn code cuả bạn lên đây để mình xem có sai ko
 
H

hai6f2009

đây:
program dientro;
varr a:array[1..5] of real;
R1,R2,R3:real;
i:integer;
f1,f2,text;
begin
assign(f1, 'RESIST.DAT');
reset(f1);
assign(f1, 'RESIST.EQU');
rewrite(f2);
while not eof(f1) do
begin
readln(f1,R1,R2,R3);
a[1]:= R1*R2*R3/(R1*R2+R1*R3+R2*R3);
a[2]:= R1*R2/(R1+R2) +R3;
a[3]:= R1*R3/(R1+R3) +R2;
a[4]:= R2*R3/(R2+R3) +R1;
a[5]:= R1+R2 +R3;
for i:=1 to 5 do write(f2,a:9:3,' ');
writeln(f2);
end;
close(f1);close(f2)
end.
 
M

mikelhpdatke

Bạn đã tạo file input và output chưa. Mà chỗ đường dẫn tới file này phải chính xác.
VD: file RESIST.DAT bạn để ở ổ C thì bạn phải khai báo
assign(f1, 'C:\RESIST.DAT');
 
H

hai6f2009

À, mình cũng làm như vậy rồi nhưng mà không được nên mới ghi là "assgin(f1,'RESIST.DAT');"
 
M

mikelhpdatke

Mã:
program dientro;
varr a:array[1..5] of real;
R1,R2,R3:real;
i:integer;
f1,f2,text;
begin
assign(f1, 'RESIST.DAT');
reset(f1);
[COLOR="Red"]assign(f1, 'RESIST.EQU');[/COLOR]
rewrite(f2);
while not eof(f1) do
begin
readln(f1,R1,R2,R3);
a[1]:= R1*R2*R3/(R1*R2+R1*R3+R2*R3);
a[2]:= R1*R2/(R1+R2) +R3;
a[3]:= R1*R3/(R1+R3) +R2;
a[4]:= R2*R3/(R2+R3) +R1;
a[5]:= R1+R2 +R3;
for i:=1 to 5 do write(f2,a[i]:9:3,' ');
writeln(f2);
end;
close(f1);close(f2)
end.

bạn sai chỗ màu đỏ đó, bạn thử test lại đi
 
M

mikelhpdatke

Mã:
program dientro;
var a:array[1..5] of real;
R1,R2,R3:real;
i:integer;
f1,f2:text;
begin
assign(f1, 'D:\RESIST.DAT');
reset(f1);
assign(f2, 'D:\RESIST.EQU');
rewrite(f2);
while not eof(f1) do
begin
readln(f1,R1,R2,R3);
a[1]:= R1*R2*R3/(R1*R2+R1*R3+R2*R3);
a[2]:= R1*R2/(R1+R2) +R3;
a[3]:= R1*R3/(R1+R3) +R2;
a[4]:= R2*R3/(R2+R3) +R1;
a[5]:= R1+R2 +R3;
for i:=1 to 5 do write(f2,a[i]:9:3,' ');
writeln(f2);
end;
close(f1);close(f2)
end.

Code của bạn có một vài chỗ sai từ khóa, mình đã chỉnh lại, ok
 
H

hai6f2009

vẫn bị tình trạng như vậy khi mình đã chỉnh và test lại như bạn nói bạn ơi!
 
Q

quanghero100

đây:
program dientro;
varr a:array[1..5] of real;
R1,R2,R3:real;
i:integer;
f1,f2,text;
begin
assign(f1, 'RESIST.DAT');
reset(f1);
assign(f1, 'RESIST.EQU');
rewrite(f2);
while not eof(f1) do
begin
readln(f1,R1,R2,R3);
a[1]:= R1*R2*R3/(R1*R2+R1*R3+R2*R3);
a[2]:= R1*R2/(R1+R2) +R3;
a[3]:= R1*R3/(R1+R3) +R2;
a[4]:= R2*R3/(R2+R3) +R1;
a[5]:= R1+R2 +R3;
for i:=1 to 5 do write(f2,a:9:3,' ');
writeln(f2);
end;
close(f1);close(f2)
end.

Lỗi Exit code 2 là lỗi không tìm thấy file. Lỗi được báo khi có những lệnh Erase, Rename hoặc là Mở một file không tồn tại.
Khắc phục nó đó là trong lần chạy đầu tiên bạn cần thêm lệnh rewrite(f1); sau lệnh assign(f1,'RESIST.DAT'); và assign(f1,'RESIST.EQU'); để tạo file sau đó xóa 2 lệnh vừa thêm đó đi sau đó mở file input nhập dữ liệu vào lưu lại rồi chạy chương trình như vậy là okê rùi nhé :D:D:D
 
M

mikelhpdatke

Code thì mình đã test, không sai. Nếu FP bạn cài lại mà vẫn bị thì bạn xem lại đường dẫn, file tồn tại đã đúng chưa. Nếu vẫn không được cài teamwiewer mình thử cho.
 
Top Bottom