Hiển thị kết quả từ 1 đến 3 / 3
  1. #1
    Tham gia
    12-03-2010
    Bài viết
    9
    Like
    0
    Thanked 1 Time in 1 Post

    Một số bài tập về pascal help

    Bài 2:"Dãy con"
    Cho 2 dãy số thực A(1),A(2),...A(n) (1);B(1),B(2),...,B(m) (2).Dãy một được gọi là dãy con của dãy (2) nếu bỏ đi k phần (k>=0) trong (2) thì có dãy(1). Chẳng hạn:dãy 1,3,5 là dãy con của dãy o,1,2,1,4,3,5,7.Hãy nhập vào hai dãy và cho biết dãy (1) có phải là dãy con của (2) không?
    Bài 3:"Dãy đoạn con" tương tự "dãy con" nhưng các phàn tử liên tiếp
    Chẳng hạn:dãy 1,2,1 là dãy đoạn con của dãy 0,1,2,1,4,5,6,3;còn dãy 1,4,6 không là dãy đoạn con của nó.Hãy nhập vào hai dãy và cho biết dãy (1) có phải là dãy đoạn con của (2) không?
    Bài 3:"Dãy răng cưa" là dãy giảm tăng hoặc tăng giảm.Ví dụ:1,4,2,7,3,8 hoặc 4,1,3,2,8,5,6 là dãy răng cưa. Nhập một dãy số nguyên, xuất ra dãy răng cưa dài nhất trong dãy số nguyên này

    Bài 2 mình làm như sau: Không biết sai ở đâu mà không chạy đc?
    program tap_con;
    uses crt;
    type mang1=array[1..50] of integer;
    var a,b:mang1;
    i,j,m,n:byte;

    procedure nhapmang(var a:mang1; var n:byte);
    begin
    for i:=1 to n do
    begin
    writeln('Phan tu thu ',i,' la: '); readln(a[i]);
    end;
    end;

    procedure loaibo(a:mang1; n:byte; b:mang1; m:byte);
    var kt:boolean; k:byte;
    begin
    kt:=false; i:=1;
    while i<=n do
    begin
    for j:=1 to m do
    if a[i]=b[j] then begin kt:=true; i:=i+1; end;
    if kt=false then begin
    for k:=i to n-1 do a[k]:=a[k+1];
    n:=n-1;
    end;
    end;
    end;

    procedure sapxep(var a:mang1; var n:byte);
    var tam:integer;
    begin
    tam:=0;
    for i:=n downto 2 do
    for j:=1 to i-1 do
    if a[j]<a[j+1] then
    begin
    tam:=a[j];
    a[j]:=a[j+1];
    a[j+1]:=tam;
    end;
    end;

    function kiemtra(a:mang1; b:mang1; m:byte):boolean;
    var kt2:boolean;
    begin
    kt2:=true;
    for i:=1 to m do
    if a[i]<>b[i] then kt2:=false;
    kiemtra:=kt2;
    end;

    begin
    write('Nhap so phan tu cua mang A: '); readln(n);
    nhapmang(a,n);
    write('Nhap so phan tu cua mang B: '); readln(m);
    nhapmang(b,m);
    if m>n then write('B khong phai la tap con cua A')
    else
    begin
    loaibo(a,n,b,m);
    if n=m then begin
    sapxep(a,n); sapxep(b,m);
    if kiemtra(a,b,m) then writeln('B la tap con cua A')
    else writeln('B khong phai la tap con cua A')
    end
    else writeln('B khong phai la tap con cua A');
    end;
    readln
    end.
    Được sửa bởi SecretStar9x lúc 20:14 ngày 19-03-2012
    Quote Quote

  2. #2
    Tham gia
    26-06-2009
    Bài viết
    15
    Like
    4
    Thanked 0 Times in 0 Posts
    Bạn thử chạy xem nó báo lỗi ở đâu, nhìn cái mớ code của bạn mình ớn quá,nản không dám tìm vết,
    còn bài này bạn cứ duyệt dãy (1) từ đầu đến cuối, truy hơi của nó trong (2), nếu rành rọt hơn thì cho thêm thằng dãy chốt toàn 0 với 1 để nó làm thám mã cho; chứ không nhất thiết làm nhiều Procedure như trên, sai ở Procedure thì có mà Pascal ra mà kiểm tra.
    Chúc bạn học tốt!

  3. #3
    Tham gia
    12-03-2010
    Bài viết
    9
    Like
    0
    Thanked 1 Time in 1 Post
    Thế ko ai giúp mình đc à? Help

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •