Trang 2 của 2 Đầu tiênĐầu tiên 12
Kết quả 11 đến 18 của 18
  1. #11
    Ngày tham gia
    Aug 2015
    Bài viết
    3
    Cái if bên trên bạn nói mình chưa nghĩ hẳn hoi về nó nhưng thông thường đó là những lệnh an toàn để giúp bạn thoát khỏi chương trình con, còn câu lệnh bên dưới là cần thiết vì những cái nào có free=false là những cái mình chọn, bỏ đi thì sẽ in sai.

  2. #12
    Ngày tham gia
    Aug 2015
    Bài viết
    3
    Mình chép bài của bạn rồi sửa tí, mình chưa thử test nào sai, bạn thử test thử xem:
    Mã:
    const
                  fo='tenhs.inp';
                  fi='tenhs.out';
    type mang=array[1..20] of string[7];
    var
           f:text;
           b:mang;
           a:array[0..10] of byte;
           n,k:integer;
    procedure inputdata;
    var
           f:text;
           i:integer;
    begin
              assign(f,fo);reset(f);
              readln(f,n,k);
              for i:=1 to n do readln(f,b[i]);
              close(f);
    end;
    procedure xuat;
    var
            i:integer;
    begin
             for i:=1 to k do write(f,b[a[i]],' ');
             writeln(f);
    end;
    procedure xuli(i:integer);
    var
             j:integer;
    begin
             for j:=a[i-1]+1 to n do
                  begin
                          a[i]:=j;
                          if (i=k) then xuat
                             else xuli(i+1);
                 end;
    end;
    Begin
              assign(f,fi);rewrite(f);
              inputdata;
              xuli(1);
              close(f);
    End.
    À còn bài điền phép toán mà N=1000 thế kia thì tớ chào thua, không thể quay lui

  3. #13
    Ngày tham gia
    Aug 2015
    Bài viết
    150
    xin lỗi anh Ginta_ITFam nhưng khi em thử thì không in ra đc Hồng Minh ạ.
    Còn với bài n=1000 thì chắc em sẽ suy nghĩ khá khá lâu để tìm ra phương pháp.
    Và xin mời mọi người lại cùng em sửa chữa 1 bài tập quay lui nửa, xin hãy giúp đỡ
    Đề: 4.4:Cho số nguyên dương n(n<=20), hãy liệt kê tất cả các xâu độ dài n chỉ gồm hai kí tự A và B sao cho không có 2 kí tự B nào đứng cạnh nhau.
    ​ Ví dụ:
    Dữ liệu vào
    Kết quả ra
    N=4
    AAAB
    AABA
    ABAA
    ABAB
    BAAA
    BAAB
    BABA

    và em đã viết chương trình như sau:

    [IMGRIGHT]const
    fo='xau.inp';
    fi='xau.out';
    var
    a:string[20];
    n:byte;
    f:text;
    procedure inputdata;
    var
    f:text;
    begin
    assign(f,fo);reset(f);
    read(f,n);
    close(f);
    end;
    procedure init;
    var
    i:byte;
    begin
    for i:=1 to n do a:=a+'A';
    end;
    function thoadk(x:string[20]):boolean;
    begin
    thoadk:=(pos('BB',x)=0)=true;
    end;
    procedure xuat;
    begin
    writeln(f,a);
    end;
    procedure xuli(i:byte);
    var
    j:char;
    begin
    for j:='A' to 'B' do
    begin
    a:=j;
    if (i=n)and thoadk(a) then xuat
    else xuli(i+1);
    end;
    end;
    {-----------------}
    begin
    assign(f,fi);rewrite(f);
    inputdata;
    init;
    xuli(1);
    close(f);
    end.
    [/IMGRIGHT]
    em viết trên FreePascal-2.2.0 thế là nó hiện lỗi là

    program
    exited with
    exitcode = 201
    Mong anh chị giúp em tìm chỗ sai ạ.


  4. #14
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    a, xin lỗi ạ. Bài này em đã làm đc rồi, em sẽ post lên để các anh chị xem sau. Còn vấn đề nan giải của em chính là bài đây ạ:
    Đề:Đề: Cho xâu S (độ dài không quá 10) chỉ gồm các kí tự 'A' đến 'Z' (các kí tự trong xâu S không nhất thiết phải giống nhau). Hãy liệt kê tất cả các hoán vị khác nhau của xâu S.
    Ví dụ:
    s='aba'
    CÁc hoán vị là:
    aab
    aba
    baa
    ​Và lập trình như sau:
    const
    fi='xau.inp';
    fo='xau.out';
    var
    f:text;
    s:string[10];
    a:array[1..10] of integer;
    procedure inputdata;
    begin
    assign(f,'xau.inp');reset(f);
    readln(f,s);
    close(f);
    end;
    procedure init;
    var
    i:integer;
    begin
    for i:=1 to length(s) do a:=i;
    end;
    procedure xuat;
    var
    i:integer;
    begin
    for i:=1 to length(s) do write(f,b);
    writeln(f);
    end;
    procedure xuli(i:integer);
    var
    j:integer;
    begin
    for j:=a[i-1]+1 to length(s) do
    begin
    s:=s[j];
    if (i=length(s)) then xuat
    else xuli(i+1);
    end;
    end;
    begin
    assign(f,fo);rewrite(f);
    inputdata;
    init;
    xuli(1);
    close(f);
    end.Và em gặp lỗi giống như bài trên kia vậy. Mong các anh chị giúp đỡ em.

  5. #15
    Ngày tham gia
    Nov 2015
    Bài viết
    2
    [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]) sr bạn, đúng là mình không chú ý về code của mình lắm. Bạn xóa dòng if n-t>... đi là ok. Lỗi bạn mắc phải là lỗi tràn mảng, lỗi này mắc phải khi bạn động tới vị trí 0 của mảng và vì bạn chỉ khai báo mảng 1->... nên bị lỗi. Bạn sửa lại code của bạn, khai báo thêm vị trí 0 xem đúng chưa.

  6. #16
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    xin cảm ơn sự giúp đỡ của anh Ginta_ITFam.

  7. #17
    Ngày tham gia
    Aug 2015
    Bài viết
    3
    Mình giúp nhưng liệu bạn đã hoàn thiện được bài của mình chưa? Nếu chưa thì mình không dám nhận lời cảm ơn đâu [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Bạn có thể lên google search bảng mã exit code free hoặc bảng lỗi runtime để tìm hiểu các lỗi mà trong free bạn có thể gặp phải, như thế sẽ chủ động hơn trong khi làm bài.

  8. #18
    Ngày tham gia
    Nov 2015
    Bài viết
    1
    a, bài của anh Ginta_ITFam em đã hoàn thiện, cùng với giải thuật của anh binhnguyenLQD-kg em cũng bổ sung thêm rồi ạ. Còn về lỗi thì thật em chẳng nghĩ ra phải làm sao, xin cảm ơn sự giúp đỡ của anh lần nữa!

Trang 2 của 2 Đầu tiênĐầu tiên 12

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •