Trang 1/2 12 cuối
kết quả từ 1 tới 12 trên 14

Bài tập Pascal hình tứ giác

  1. #1
    Ðến Từ
    Thừa Thiên - Huế
    Thành Viên Thứ: 356879
    Giới tính: Nam
    Bài gửi
    50
    Quick reply to this message Trả lời       


  2. #2
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Hình tứ giác

    Bài tứ giác này phụ thuộc vào toán nhé bạn.
    - Phần kiểm tra lồi lõm của tứ giác: cho dễ thì bạn cứ viết pt đg` thằng của AB, BC, CD, DA rồi xem thử 2 điểm kia có cùng phía hay không. Mình tin tưởng đây là kiến thức cấp 3.
    - Phần diện tích: công thức chung để tính cho đa giác không tự cắt (thứ tự các đỉnh đc cho theo chiều kim đồng hồ, hoặc ngược chiều) là:
    Mã:
    0.5 * |x1*y2 + x2*y3 + x3*y4 + x4*y1 - x2*y1 - x3*y2 - x4*y3 - x1*y4|
    với A = (x1, y1),..., D = (x4, y4). Công thức này có thể làm tổng quát tính diện tích cho simple polygon.
    LCD: 13.3" 1920x1080 IPS
    CPU: Intel i7 - 4700MQ (2.4 GHz - 3.4 GHz)
    GPU: Nvidia GTX 765m with GDDR5 2GB
    RAM: 2x8GB G.Skill 2133
    HDD: Samsung SSD 850 Pro 512 GB
    2 kg.

  3. Đã cảm ơn tengiday:


  4. #3
    Ðến Từ
    Nghệ An
    Thành Viên Thứ: 390608
    Bài gửi
    1

    Reply: Bài tập Pascal hình tứ giác

    Mình cũng đang ôn thi tin học trẻ bảng B mà thấy mấy đề toàn kiến thức cấp 3 không sao khó thế..
    bạn cho mình xin code bạn này với.mình cũng đang cần dạng này để ôn tập

  5. #4
    Ðến Từ
    Thừa Thiên - Huế
    Thành Viên Thứ: 356879
    Giới tính: Nam
    Bài gửi
    50

    Reply: Bài tập Pascal hình tứ giác

    nhờ bạn tênjday viết code bài này với ạ..lại bài liên quan tới hình nữa.mong bạn giúp

  6. #5
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Bài tập Pascal hình tứ giác

    Bạn viết đại khái như thế này. Phần file bạn tự xử lý nhé. Code này có thể tổng quát cho simple polygon (đa giác ko tự cắt) luôn.
    Mã:
    var x, y : array[1..5] of double;
    
    procedure read_input;
    var i : integer;
    begin
        for i := 1 to 4 do
            readln(x[i], y[i]);
        x[5] := x[1]; y[5] := y[1];
    end;
    
    function area : double;
    var i : integer;
    begin
        area := 0;
        for i := 1 to 4 do
            area := area + x[i] * y[i + 1] - x[i + 1] * y[i];
        area := 0.5 * abs(area);
    end;
    
    function ccw(x1, y1, x2, y2, x3, y3 : double) : double;
    begin
        ccw := (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);
    end;
    
    function is_convex : integer;
    var i : integer;
        t0 : double;
    begin
        t0 := ccw(x[1], y[1], x[2], y[2], x[3], y[3]);
        for i := 2 to 3 do
            if (t0 * ccw(x[i], y[i], x[i + 1], y[i + 1], x[i + 2], y[i + 2]) <= 0) then
                exit(0);
        exit(1);
    end;

  7. Đã cảm ơn tengiday:


  8. #6
    Ðến Từ
    Thừa Thiên - Huế
    Thành Viên Thứ: 356879
    Giới tính: Nam
    Bài gửi
    50

    Reply: Bài tập Pascal hình tứ giác

    thank bạn nhé

  9. #7
    Ðến Từ
    Thừa Thiên - Huế
    Thành Viên Thứ: 356879
    Giới tính: Nam
    Bài gửi
    50

    Reply: Bài tập Pascal hình tứ giác

    const fi='tG.inp';
    fo='tG.out';


    TYPE MMC= array[1..5] of REAL;
    VAR dt: REAL;
    X,Y: MMC;
    f: text;
    procedure nhap;
    var i : integer;


    begin
    assign(f,fi);
    reset(f);
    for i := 1 to 4 do
    readln(f,x[i], y[i]);
    x[5] := x[1]; y[5] := y[1];
    close(f);
    end;


    function area(X,Y:MMC) : REAL;
    var i : integer;
    S: REAL;


    begin
    S := 0;
    for i := 1 to 4 do
    S := S + x[i] * y[i + 1] - x[i + 1] * y[i];
    S := 0.5 * abs(S);
    AREA:=S;
    end;


    function ccw(x1, y1, x2, y2, x3, y3 : REAL) : REAL;
    begin
    ccw := (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);
    end;


    function is_convex : integer;
    var i : integer;
    t0 : REAL;
    begin
    t0 := ccw(x[1], y[1], x[2], y[2], x[3], y[3]);
    for i := 2 to 3 do
    if (t0 * ccw(x[i], y[i], x[i + 1], y[i + 1], x[i + 2], y[i + 2]) <= 0)
    THEN IS_CONVEX:=0 ELSE IS_CONVEX:=1;
    end;


    procedure xuat;
    begin


    assign(f,fo);
    rewrite(f);
    writeln(f, arEA(X,Y));
    writeln(f,is_convex);


    close(f);
    end;
    begin
    nhap;
    xuat;
    end.
    nhờ các bạn xem giúp xem khi text trên môi trường tublro pascal in sai kết quả
    function area : real; nếu để nguyên như thế này máy sẽ báo lỗi tràn stack

  10. #8
    Ðến Từ
    Thừa Thiên - Huế
    Thành Viên Thứ: 356879
    Giới tính: Nam
    Bài gửi
    50

    Reply: Bài tập Pascal hình tứ giác

    ai giúp với chuẩn bị mai thi rồi.chạy trên tubrlo pascal thì sửa như thế nào ạ

  11. #9
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 390787
    Bài gửi
    5

    Reply: Bài tập Pascal hình tứ giác

    Mình test thử bằng bàn phím thấy không bị sao cả. Bạn @tuonglong xem lại code is_convex, viết như thế là k đúng ý của bạn @tengiday rồi.

    @tengiday: Mấy bài bạn giải tuyệt quá. Mình mới học hy vọng được bạn chỉ giúp.

  12. Đã cảm ơn lam_tran:


  13. #10
    Ðến Từ
    Thừa Thiên - Huế
    Thành Viên Thứ: 356879
    Giới tính: Nam
    Bài gửi
    50

    Reply: Bài tập Pascal hình tứ giác

    bạn text bài của bạn tenjday phải ko ạ.mình text bên free thù ko sao bạn ơi.nhưng bên tb lại bị lỗi đó

  14. #11
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 390787
    Bài gửi
    5

    Reply: Bài tập Pascal hình tứ giác

    Bạn chạy từng thủ tục xem cái nào bị lỗi. Mình dùng free, k dùng turbo.

  15. Đã cảm ơn lam_tran:


  16. #12
    Ðến Từ
    Thừa Thiên - Huế
    Thành Viên Thứ: 356879
    Giới tính: Nam
    Bài gửi
    50

    Reply: Bài tập Pascal hình tứ giác

    thì vậy mới nói.mình text turbo text từng cái đều bị sai..
    VD chỗ are đó.mình để như ban tenjday báo tràn stack

Trang 1/2 12 cuối