Không hiểu tại sao code bị Exitcode=201


Mọi người cho em hỏi, ở dòng code mà em đã khoanh, khi em viết while ord(st[i])>32 thì chương trình dạy bình thường,ra kết quả đúng. Nhưng khi em viết while ord(st[i])<>32 thì chương trình báo lỗi Exitcode=201. Em tra google thì có bảo exitcode=201 là range check error(lỗi tràn bộ nhớ). Nhưng trong trường hợp này em không hiểu vì sao lại bị exitcode 201.
Mong mọi người giúp em :3

var
   st,tam:string;
   i,j,d:word;
   a:array[1..50] of string;
   f1,f2:text;
{------------------------------------------------}
procedure nhap;
begin
   assign(f1,'bai4.inp');reset(f1);
   assign(f2,'bai4.out');rewrite(f2);
   read(f1,st);
end;
{----------------------------------------------}
function ktdk:boolean;
begin
   if length(st)<=255 then ktdk:=true else ktdk:=false;
end;
{-----------------------------------------------}
procedure xuly;
begin
   i:=1;d:=0;
   while i<=length(st) do
      begin
         tam:='';
         while ord(st[i])>32 do
            begin
               tam:=tam+st[i];
               inc(i);
            end;
         inc(d); a[d]:=tam;
         inc(i);
      end;
   for i:=d downto 1 do write(f2,a[i],' ');
end;
{---------------------------------------------}
BEGIN
   nhap;
   if ktdk=true then xuly else writeln(f2,-1);
   close(f1);close(f2);
END.

Code đây ạ

Bạn đăng code lên đây dưới dạng text theo hướng dẫn:

4 Likes

Do vòng lặp while ở trong có thể inc(i) đến khi i > length(st) mà bạn không biết. Đáng ra bạn cần kiểm tra i <= length(st) ở cả 2 vòng lặp while.

P/s: begin, end căn dọc thẳng với while nhé.

5 Likes

Em cảm ơn ạ. Helpful

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?