Trang 1 / 7 12346 ... LastLast
Hiển thị kết quả từ 1 đến 10 / 70

Chủ đề: Bài tập Pascal

  1. #1
    Tham gia
    11-10-2005
    Bài viết
    74
    Like
    0
    Thanked 0 Times in 0 Posts

    Hạnh phúc Bài tập Pascal

    Em đang có một mớ bài tập Borland Pascal 7.0 (dễ có, khó cũng có)
    Một mình em làm không xuể. Bác nào có lòng hảo tâm xin liên hệ tại hộp mail hxnghia1992@yahoo.com ; Em sẽ gửi BT cho
    Quote Quote

  2. #2
    Tham gia
    06-02-2005
    Bài viết
    684
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn ko biết hay ko hiểu bài nào cứ post lên đây đi !!!!

  3. #3
    Tham gia
    11-10-2005
    Bài viết
    74
    Like
    0
    Thanked 0 Times in 0 Posts

    Câu hỏi, cần giúp đỡ Đề BT Pascal

    PHẦN MA TRẬN
    1/ Viết CT theo dạng thủ tục và hàm thực hiện các công việc sau :
    a. Nhập ma trận (không cho biết số dòng, cột)
    b. Xuất mà trận
    c. Sắp xếp MT tăng theo hàng
    d. Sắp xếp MT giảm theo cột
    e. Sắp xếp MT tăng theo đường chéo chính (MT vuông)
    f. Sắp xếp MT tăng theo đường chéo phụ (MT vuông)
    g. Sắp xếp MT tăng theo hướng xoắn từ ngoài vào trong
    h. KT xem MT có đối xứng loại 1 không
    i. Sắp xếp MT tăng theo đường chéo chính, giảm theo đường chéo phụ (MT vuông)
    j. KT MT vuông. Tính tổng giá trị tam giác vuông trên kể cả đường chéo
    k. KT MT vuông. Lưu đường chéo chính - phụ vào 2 mảng 1 chiều rồi xuất ra
    l. KT MT vuông. Lưu các đường chéo song song đường chéo chính vào mảng 1 chiều rồi xuất ra màn hình
    m. KT MT có phải là MT có các phần tử trên 2 đường chéo bằng 0
    n. KT MT có phải là MT có hơn nửa số phần tử = 0
    o. KT MT có pjải là MT có các phần tử trên đường chéo =1,<>0
    p. KT tính đối xứng tâm, đối xứng chéo chính, đối xứng chéo phụ
    q. KT MT có phải là MT có mỗi hàng mỗi cột đều là hoán vị của [1..n]
    r. KT MT có phải là MT có tổng mỗi hàng = tổng mỗi cột = tổng mỗi đừơng chéo
    s. Xoá các phần tử trùng nhau trong MT
    t. Xoá hàng/cột có STT là số nhập vào

    * Đề không có ví dụ. Mong Bác thông cảm và giải giúp !
    Cảm ơn

  4. #4
    Tham gia
    06-03-2005
    Bài viết
    17
    Like
    0
    Thanked 0 Times in 0 Posts
    Có bao nhiêu bài bạn cứ post cả lên đi. Mọi người chia nhau giải cho lẹ.

  5. #5
    Tham gia
    11-10-2005
    Bài viết
    74
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin

    Mấy anh/chị giải hết mớ bài tập ma trận giúp em trước đi.
    Tinh thần "tương thân tương ái" của mấy anh chị em xin ghi nhận nhưng em chưa học tới mấy phần sau, tới đây là đủ rồi !

  6. #6
    Tham gia
    11-10-2005
    Bài viết
    74
    Like
    0
    Thanked 0 Times in 0 Posts

    Cần chú ý !

    Mong anh chị giải giúp câu g và câu k trước (càng sớm càng tốt trong tuần này)
    để em còn nộp bài
    Cảm ơn nhiều !

  7. #7
    Tham gia
    11-10-2005
    Bài viết
    74
    Like
    0
    Thanked 0 Times in 0 Posts

    Ngạc nhiên

    Em đã bí rồi mới Post bài lên chứ đâu phải tại lười
    Câu k thì em giải xong rồi nhưng còn câu g thì khó quá (chả biết làm từ đâu)
    Mong các anh chị cho biết ý tưởng hay hướng giải thì em cũng "mãn nguyện" rồi
    Nhớ giúp em nhen !
    Cảm ơn nhiều

  8. #8
    Tham gia
    10-10-2004
    Bài viết
    48
    Like
    0
    Thanked 0 Times in 0 Posts

    Hơi phức tạp đây!

    Mình không biết bạn đã giải các bài tập được hết chưa, nếu chưa thì có thể tham khảo bài này xem sao. Có thể hơi phức tạp đó, bạn chịu khó tìm hiểu nhé!

    Code:
    const
      max = 10;
    
    type
      matrix = array [1..max, 1..max] of integer;
    
    function min(a, b: integer): integer;
    begin
      if a <= b then
        min := a
      else
        min := b
    end;
    
    procedure Input(var A: matrix; m, n: integer);
    var x, y: integer;
    begin
      for y := 1 to m do
        for x := 1 to n do begin
          write('A[', y, ',', x, ']= ');
          readln(A[y, x]);
        end;
    end;
    
    procedure Output(const A: matrix; m, n: integer);
    var x, y: integer;
    begin
      for y := 1 to m do begin
        for x := 1 to n do
          write(A[y, x]:3);
        writeln;
      end;
    end;
    
    { Duong cheo chinh, tang dan }
    procedure Gen_DiagonalIncrease(var A: matrix; n: integer);
    var x: integer;
    begin
      fillchar(A, Sizeof(A), 0);
      for x := 1 to n do
        A[x, x] := x;
    end;
    
    { Duong cheo phu, giam dan }
    procedure Gen_MinorDiagonalIncrease(var A: matrix; n: integer);
    var x: integer;
    begin
      fillchar(A, Sizeof(A), 0);
      for x := 1 to n do
        A[n-x+1, x] := x;
    end;
    
    procedure Gen_IncreaseByRow(var A: matrix; m, n: integer);
    var x, y, count: integer;
    begin
      count := 1;
      for y := 1 to m do
        for x := 1 to n do begin
          A[y, x] := count;
          inc(count);
        end;
    end;
    
    procedure Gen_DecreaseByCol(var A: matrix; m, n: integer);
    var x, y, count: integer;
    begin
      count := m*n;
      for x := 1 to n do
        for y := 1 to m do begin
          A[y, x] := count;
          dec(count);
        end;
    end;
    
    { Xoan oc }
    procedure Gen_Spiral(var A: matrix; m, n: integer);
    var x, y, seed, count, direct, total: integer;
    begin
      direct := 4;
      total := m*n;
      count := 0;
      x := 0;
      y := 1;
      for seed := 1 to total do begin
        while count = 0 do
          case direct of
          1, 3: begin inc(direct); dec(n); count := m; end;
          2, 4: begin
                  inc(direct); dec(m); count := n;
                  if direct = 5 then direct := 1;
                end;
          end;
        case direct of
        1: inc(x);
        2: inc(y);
        3: dec(x);
        4: dec(y);
        end;
        dec(count);
        a[y, x] := seed;
      end;
    end;
    
    procedure Swap(var a, b: integer);
    var temp: integer;
    begin
      temp := a;
      a := b;
      b := temp;
    end;
    
    { Map or Template }
    procedure MapSort(var A, B: matrix; m, n, total: integer);
    var
      x, y, curx, cury, minx, miny: integer;
      first: boolean;
      cur: integer;
    begin
      for cur := 1 to total do begin
        first := true;
        for y := 1 to m do
          for x := 1 to n do
            if B[y, x] > 0 then begin
              if first or (A[miny, minx] > A[y, x]) then begin
                minx := x;
                miny := y;
                first := false;
              end;
              if B[y, x] = cur then begin
                curx := x;
                cury := y;
              end;
            end;
        Swap(A[cury, curx], A[miny, minx]);
        B[cury, curx] := 0;
      end;
    end;
    
    var
      m, n: integer;
      A, B: matrix;
    begin
      m := 3;
      n := 4;
      writeln('Nhap ma tran:');
      Input(A, m, n);
      writeln('Ma tran sau khi nhap:');
      Output(A, m, n);
      writeln('Sap xep ma tran tang dan theo duong cheo chinh');
      Gen_DiagonalIncrease(B, min(m, n));
      Output(B, m, n);
      MapSort(A, B, m, n, min(m, n));
      Output(A, m, n);
      writeln('Sap xep ma tran tang dan theo duong cheo phu');
      Gen_MinorDiagonalIncrease(B, min(m, n));
      Output(B, m, n);
      MapSort(A, B, m, n, min(m, n));
      Output(A, m, n);
      writeln('Sap xep ma tran tang dan theo hang');
      Gen_IncreaseByRow(B, m, n);
      MapSort(A, B, m, n, m*n);
      Output(A, m, n);
      writeln('Sap xep ma tran giam dan theo cot');
      Gen_DecreaseByCol(B, m, n);
      MapSort(A, B, m, n, m*n);
      Output(A, m, n);
      writeln('Sap xep ma tran tang dan theo duong xoan oc');
      Gen_Spiral(B, m, n);
      MapSort(A, B, m, n, m*n);
      Output(A, m, n);
      readln;
    end.
    Thủ tục sắp xếp là MapSort, dựa trên thuật giải sắp xếp chọn trực tiếp. Thủ tục này sắp xếp tăng dần, ma trận cần sắp xếp là A, còn ma trận B là một ma trận để tham khảo vị trí. Các thủ tục Gen_.. để sinh ra ma trận B theo yêu cầu.
    Ví dụ: để sắp xếp tăng dần theo hình xoắn ốc thì phải tạo ma trận B như sau (lấy 3x3):
    1 2 3
    8 9 4
    7 6 5
    Để sắp xếp giảm dần theo đường chéo chính thì cần có ma trận B như sau:
    3 0 0
    0 2 0
    0 0 1
    Các phần tử tương ứng với 0 trên B sẽ không tham gia vào sắp xếp.
    Như vậy, thủ tục MapSort là khá tổng quát cho các yêu cầu sắp xếp trên ma trận đã cho. Vấn đề phức tạp đã được chia làm 2 mảng:
    - Mảng 1: Sắp xếp theo thuật giải chọn trực tiếp.
    - Mảng 2: Sinh ra một ma trận theo hình thù yêu cầu.
    Nếu ma trận A có kích thước/số phần tử là k (ở đây k = m*n) thì độ phức tạp của thuật giải này là O(k^2) (tính luôn phần sinh ra ma trận B). Đối với trường hợp như sắp xếp trên đường chéo chính, mặc dù chỉ có n phần tử tham gia sắp xếp nhưng độ phức tạp của MapSort vẫn là O(k^2); trong khi đó trường hợp đơn giản này có thể cài đặt để có độ phức tạp nhưng kích thước nhỏ hơn O(n^2).

    Mình đã chạy thử rồi, thuật giải làm việc rất tốt (hy vọng là không có sai sót nào khác). Bạn cố gắng tìm hiểu nhé! (Để giải thích cặn kẽ bài này khá dài dòng đó)

  9. #9
    Tham gia
    10-06-2005
    Bài viết
    6
    Like
    0
    Thanked 0 Times in 0 Posts
    Hay lắm! Mai em thi Pascal mà nhận được bài hay như thế này thì đã quá!
    Em xin chân thành cảm ơn các bác!
    Các bác có bài gì hay thì chia sẽ cho em với nha. Thanks

  10. #10
    phoenixsinh Guest

    Hạnh phúc hỏi nè

    borland pascal và turbo pascal có gì khác nhau không?
    giúp mình vouiws vì mình mới mua một cuón sách và trong sãhs đẻ borland pascal mình không biết nó là cái gì hết

Trang 1 / 7 12346 ... LastLast

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
  •