Viết chương trình của pt đường thằng khi đi qua 2 điểm A,B. Ai giúp mình gải nha
Viết chương trình của pt đường thằng khi đi qua 2 điểm A,B. Ai giúp mình gải nha
Nếu bạn cho mình công thức để có thể có pt đường thẳng thì có thể giúp được bạn !
vì mình chỉ biết code, chưa học tới cái pt này nên chả biết !
A(xA;yA),B(xB;yB)
pt đường thắng: (x-xA)/(xB-xA)=(y-yA)/(yB-yA)
Tức là chương trình sẽ nhập tọa độ 2 điểm A và B sau đó sẽ ra phương trình đường thẳng phải không?
Mình nghĩ bạn không nên dùng phương trình kia, phương trình đường thẳng nên thường có dạng là Ax + By + C = 0.
Bạn có thể dùng phương trình này (phương tình này mình tự suy ra từ phương trình của bạn):
(yB-yA)x - (xB-xA)y + yA(xB - xA) - xA(yB - yA) =0
Như vậy chương trình bạn chỉ cần nhập toạ độ A & B, sau đó cứ đúng công thức trên, bạn tìm ra được giá trị A,B,C sau đó thay vào là ra phương trình đường thẳng đi qua 2 điêm A & B
Empty
code hộ bạn theo cách của bạn trên:
Code:Uses crt; Var YB,Ya,xB,Xa,A,B,C:longint; BEGIN Clrscr; Writeln('NHap toa do cua diem A:'); Writeln; Write('Nhap xA va yA:'); Readln(xA,yA); Writeln('NHap toa do cua diem B:'); Writeln; Write('Nhap xB va yB:'); Readln(xB,yB); Writeln('Phuong trinh duong thang cua 2 diem A va B la:'); A:=(yB-yA); B:=(xB-xA); C:=yA*(xB - xA) - xA*(yB - yA); Write(A,'x-',B,'y+',C,'=0'); Readln; END.
Tks bạn nhìu, lúc đầu mình bí ở chỗ làm sao xuất trên màn hình đc 2 cái biến x,y ấy. Tks nhìu haz
Bạn cho mình hỏi về phần này nữa. Cho điểm A(xA;yA) và đường thằng d: Ax+By+C=0 viết ptđt song song với d.
Mình làm như sau mà không biết có đúng dấu của pt hay hok nữa.
var x,y,A,B,C:longint;
begin
write('Nhap toa do cua diem A x,y: ');
readln(x,y);
write('Nhap he so A,B cua pt: ');
readln(A,B);
C:=-A*x-B*y;
writeln('Pt can tim la');
write(A,'x-',B,'y+',C,'=0');
readln
end.
N/x giùm mình để dấu như vậy đúng chưa.
Sau đoạn code bạn nên để trong cặp thẻ {code} {/code} (thay { = [ và } = ]) để cho dễ nhìn nhé.
Về thuật toán thì bạn làm thế là ok rồi, vì 2 đường thẳng // là 2 đường thẳng có hệ số A & B giống nhau và chỉ khác mỗi C. Nhưng ở đây có vấn đề là write(A,'x-',B,'y+',C,'=0'); phải là dấu + chứ vì ở trên là +B mà. Để mà thực sự hoàn thiện thì bạn nên xét dấu của B và C, nếu B, C >0 thì bạn thêm + đằng trước, nếu là <0 thì bạn để nguyên, như vậy phương trình đưa ra sẽ chuẩn hơn. Mình sửa lại dựa trên code của bạn nhé.
Code:var x,y,A,B,C:longint; begin write('Nhap toa do cua diem A x,y: '); readln(x,y); write('Nhap he so A,B cua pt: '); readln(A,B); C:=-A*x-B*y; writeln('Pt can tim la'); write(A,'x'); if B > 0 then write("+"); write (B,'y'); if C > 0 then write("+"); write (C,' = 0'); readln end.
Empty
Tks nhìu. Mình chưa nghĩ tới if then . Trong trường mình chưa học đến cái đó.
Thực ra phần if - then đó chỉ là để hoàn thiện bài cho bạn để nó không bị lỗi mà thôi, còn không thì như của bạn cũng chấp nhận được
Empty
Bookmarks