Tin học Bài toán điều kiện biến

3 171 0
Tin học  Bài toán điều kiện biến

Đang tải... (xem toàn văn)

Thông tin tài liệu

Lập trình toánđiều kiện biên Đào Đức Tuấn Hãy xét ví dụ sau: Bài toán Cho a, b, c ba cạnh tam giác, tính diện tích tam giác? Sẽ có nhiều bạn cho khó khăn giải toán Quả vậy, a,b,c ba cạnh tam giác ta việc áp dụng công thức heron: Tuy nhiên, phải lập trình cho toán trên, ta cần phải ý phần nhập số liệu Chẳng hạn, vô tình ta nhập ba số cạnh tam giác sao? Nếu có cạnh lớn tổng hai cạnh biểu thức âm Vì giả sử a+b > c (p-c) < 0; hay ta nhập độ dài cạnh số âm! Như vậy, không kiểm tra trước chương trình bị lỗi Nói tóm lại, trường hợp mà nhập số liệu vào ta phải để chương trình chạy bình thường mà không bị thoát không theo ý muốn Đôi việc kiểm tra tất điều kiện biên lại phức tạp nhiều lần toán ta nghĩ ban đầu Quan điểm tuân thủ cách chặt chẽ lập trình ứng dụng nhằm hạn chế tối đa phiền toái cho người sử dụng nhập số liệu Sau ta thử nghiên cứu toán lập trình sau: Bài toán Nhập tọa độ cho dãy n điểm hệ trục Oxy, dãy điểm theo thứ tự tạo thành đa tuyến khép kín Nhập toạ độ điểm p xét xem nằm bên hay bên đa tuyến.Bạn phải lưu ý đến trường hợp điểm cho nằm đa tuyến Nếu không để ý trường hợp mà viết chương trình gặp phải phép chia cho Thế để xét riêng trường hợp không để ý, bạn phải viết dài thể trùng lặp không cần thiết.Như vậy, với đoạn đa tuyến từ điểm i đến i+1 (i=1 n) ta phải kiểm tra xem điểm p có nằm đoạn hay không Có thể trùng với đầu mút nằm đoạn thẳng Để kiểm tra việc này, trước tiên ta xét xem điểm p có nằm hình chữ nhật giới hạn tọa độ x y đa tuyến Ta cần kiểm tra xem có trùng với điểm i hay không điểm i+1 kiểm tra lần vòng lặp Còn để xem xét bên hay bên đa tuyến ta cần kẻ nửa đường thẳng xuất phát từ điểm p Nếu cắt đa tuyến chẵn lần tức nằm đa tuyến Để thuận tiện cho lập trình ta chọn nửa đường thẳng xuất phát từ p song song với trục Oy hướng xuống đất Vòng lặp for kiểm tra tất đoạn đa tuyền xem có đoạn cắt nửa đường thẳng xuất phát từ p không Chương trình Pascal viết sau: Program bai1; Const M=100; Var X,Y: array[1 M] of real; Px, Py: real; i,n, dem:integer; Begin writeln('Nhap cac toa cua mot da tuyen khep kin:'); Write('So diem se nhap lá); readln(n); for i:=1 to n begin write('X[',i,']='); readln(X[i]); write('Y[',i,']='); readln(Y[i]); end; x[N+1]:=X[1]; Y[N+1]:=Y[1]; Writeln('Nhap toa cua diem P can xet'); write('Px'); readln(Px); write('Pý); readln(Py); {Xet dieu kien bien cua bai toan} dem:=0; for i:=1 to n if ((X[i]-Px)*(X[i+1]-Px)

Ngày đăng: 06/07/2017, 14:13

Mục lục

    Lập trình các bài toán có điều kiện biên

Tài liệu cùng người dùng

Tài liệu liên quan