Tin học Lỗi exit code 39: Ordinal expression expected

thanhnv2003

Học sinh mới
Thành viên
26 Tháng sáu 2019
1
0
1
21
Bình Phước
Trường Trung hoc pho thong Loc Ninh
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Mình đã làm bài dưới đây nhưng bị lỗi exit code 39: Ordinal expression expected mong các bạn giúp đỡ.
Bài tập:
Câu 1: (3,0 điểm) Tìm số TIMSO.PAS
Cho số nguyên dương X, khi đảo ngược trật tự các chữ số của X ta sẽ thu được một số nguyên dương Y, Y được gọi là số đảo ngược của X.
Ví dụ: X = 613 thì Y = 316 là số đảo ngược của X.
Số nguyên dương Y được gọi là số nguyên tố nếu nó chỉ có hai ước số là 1 và chính nó, số 1 không phải là số nguyên tố.
Cho hai số nguyên dương P và Q (1 ≤ P ≤ Q ≤ 2´109; Q - P ≤ 105).
Yêu cầu: Hãy tìm tất cả các số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q và số đảo ngược của số X là số nguyên tố.
Dữ liệu vào: Cho trong file văn bản TIMSO.INP có cấu trúc như sau:
- Dòng 1: Ghi hai số nguyên dương P Q, hai số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản TIMSO.OUT trên nhiều dòng, mỗi dòng ghi một số nguyên X tìm dược.
vd:
TIMSO.INP
10 19
TIMSO.OUT
11
13
14
16
Code của tớ là:
var f:text;
p,q,i:int64;
procedure nhap;
begin
assign(f,'TIMSO.INP');
reset(f);
read(f,p,q);
close(f);
end;
function sodao(n:int64):int64;
var s:int64;
begin
s:=0;
while n>0 do
begin
s:=s*10+n mod 10;
n:=n div 10;
end;
sodao:=s;
end;
function nt(m:int64):boolean;
var j:longint;
begin
if m<=1 then exit(false)
else
begin
j:=2;
while (j<=trunc(sqrt(m))) and (m mod j<>0) do inc(j);
if j>trunc(sqrt(m)) then exit(true)
else exit(false);
end;
end;
procedure ghi;
begin
assign(f,'TIMSO.OUT');
rewrite(f);
for i:=p to q do
if nt(sodao(i))=true then writeln(f,i);
close(f);
end;
begin
nhap;
ghi;
end.
 
Last edited:

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Mình đã làm bài dưới đây nhưng bị lỗi exit code 39: Ordinal expression expected mong các bạn giúp đỡ.
Bài tập:
Câu 1: (3,0 điểm) Tìm số TIMSO.PAS
Cho số nguyên dương X, khi đảo ngược trật tự các chữ số của X ta sẽ thu được một số nguyên dương Y, Y được gọi là số đảo ngược của X.
Ví dụ: X = 613 thì Y = 316 là số đảo ngược của X.
Số nguyên dương Y được gọi là số nguyên tố nếu nó chỉ có hai ước số là 1 và chính nó, số 1 không phải là số nguyên tố.
Cho hai số nguyên dương P và Q (1 ≤ P ≤ Q ≤ 2´109; Q - P ≤ 105).
Yêu cầu: Hãy tìm tất cả các số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q và số đảo ngược của số X là số nguyên tố.
Dữ liệu vào: Cho trong file văn bản TIMSO.INP có cấu trúc như sau:
- Dòng 1: Ghi hai số nguyên dương P Q, hai số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản TIMSO.OUT trên nhiều dòng, mỗi dòng ghi một số nguyên X tìm dược.
vd:
TIMSO.INP
10 19
TIMSO.OUT
11
13
14
16
Code của tớ là:
var f:text;
p,q,i:int64;
procedure nhap;
begin
assign(f,'TIMSO.INP');
reset(f);
read(f,p,q);
close(f);
end;
function sodao(n:int64):int64;
var s:int64;
begin
s:=0;
while n>0 do
begin
s:=s*10+n mod 10;
n:=n div 10;
end;
sodao:=s;
end;
function nt(m:int64):boolean;
var j:longint;
begin
if m<=1 then exit(false)
else
begin
j:=2;
while (j<=trunc(sqrt(m))) and (m mod j<>0) do inc(j);
if j>trunc(sqrt(m)) then exit(true)
else exit(false);
end;
end;
procedure ghi;
begin
assign(f,'TIMSO.OUT');
rewrite(f);
for i:=p to q do
if nt(sodao(i))=true then writeln(f,i);
close(f);
end;
begin
nhap;
ghi;
end.
Bạn có thể up ảnh lên cho mn xem được không nhỉ, cái code của bạn hơi khó nhìn ><
Hoặc có thể làm như cái code dưới cũng được. Mình đã test rồi
Mã:
Var
     p,q,i:integer;fi,fo:text;
     Function dao(a:integer):integer;
      Var k:integer;
       Begin
         k:=0;
         While a<>0 do
           Begin
            k:=k*10+(a mod 10);
            a:=a div 10;
           end;
         dao:=k;
       End;
     Function Snt(b:integer):Boolean;
       Var j,d:integer;
       Begin
         d:=0;
         For j:=1 to b do
           If b mod j=0 then d:=d+1;
         If d=2 then snt:=true
         else snt:=false;
       end;
Begin
      Assign(fi,'timso.inp');reset(fi);
      Assign(fo,'timso.out');rewrite(fo);
      read(fi,p,q);
      For i:=p to q do
          if snt(dao(i))=true then writeln(fo,i);
      Close(fi);Close(fo);
End.
 

Deathheart

Cựu TMod Vật Lí
Thành viên
18 Tháng năm 2018
1,535
2,868
411
Quảng Trị
THPT Đông Hà
Mình đã làm bài dưới đây nhưng bị lỗi exit code 39: Ordinal expression expected mong các bạn giúp đỡ.
Bài tập:
Câu 1: (3,0 điểm) Tìm số TIMSO.PAS
Cho số nguyên dương X, khi đảo ngược trật tự các chữ số của X ta sẽ thu được một số nguyên dương Y, Y được gọi là số đảo ngược của X.
Ví dụ: X = 613 thì Y = 316 là số đảo ngược của X.
Số nguyên dương Y được gọi là số nguyên tố nếu nó chỉ có hai ước số là 1 và chính nó, số 1 không phải là số nguyên tố.
Cho hai số nguyên dương P và Q (1 ≤ P ≤ Q ≤ 2´109; Q - P ≤ 105).
Yêu cầu: Hãy tìm tất cả các số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q và số đảo ngược của số X là số nguyên tố.
Dữ liệu vào: Cho trong file văn bản TIMSO.INP có cấu trúc như sau:
- Dòng 1: Ghi hai số nguyên dương P Q, hai số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản TIMSO.OUT trên nhiều dòng, mỗi dòng ghi một số nguyên X tìm dược.
vd:
TIMSO.INP
10 19
TIMSO.OUT
11
13
14
16
Code của tớ là:
var f:text;
p,q,i:int64;
procedure nhap;
begin
assign(f,'TIMSO.INP');
reset(f);
read(f,p,q);
close(f);
end;
function sodao(n:int64):int64;
var s:int64;
begin
s:=0;
while n>0 do
begin
s:=s*10+n mod 10;
n:=n div 10;
end;
sodao:=s;
end;
function nt(m:int64):boolean;
var j:longint;
begin
if m<=1 then exit(false)
else
begin
j:=2;
while (j<=trunc(sqrt(m))) and (m mod j<>0) do inc(j);
if j>trunc(sqrt(m)) then exit(true)
else exit(false);
end;
end;
procedure ghi;
begin
assign(f,'TIMSO.OUT');
rewrite(f);
for i:=p to q do
if nt(sodao(i))=true then writeln(f,i);
close(f);
end;
begin
nhap;
ghi;
end.
Bạn có thể cho mình biết lúc hiển thị lỗi con trỏ văn bản nằm ở đâu không
 
Top Bottom