Em đang viết 1 chương trình nhập vào tọa độ của 3 điểm , sau do se tu toa do 3 diem se tinh ra cac duong thanh a, b, c tạo thành từ 3 điểm đó
Sau đó sẽ nhận biết xem 3 đoạn thẳng đó có tạo thành tam giác hhay không, nếu đúng thì tính chu vi. Nếu sai sẽ in ra không tính toán được.
Có 1 trường hợp em bị sai không biết lý do nhờ mọi người và anh đạt giúp đỡ
Do em đang học ở Nhật nên chương trình có vài chỗ khi in ra viết bằng tiếng nhật mong người thông cảm!
#include<stdio.h>
#include<math.h>
struct point
{
double x;
double y;
};
double tinh_chu_vi(struct point toa_do[3]);
double tinh_chu_vi(struct point toa_do[3])
{
double a, b, c, z; // canh a , canh b, canh c
a = sqrt((toa_do[1].x - toa_do[0].x) * (toa_do[1].x - toa_do[0].x) +
(toa_do[1].y - toa_do[0].y) * (toa_do[1].y - toa_do[0].y)); // tu toa do nhap vao tinh thanh canh a
b = sqrt((toa_do[2].x - toa_do[0].x) *(toa_do[2].x - toa_do[0].x) +
(toa_do[2].y -toa_do[0].y) *(toa_do[2].y - toa_do[0].y)); // tu toa donhap vao tinh thanh canh a
c =sqrt((toa_do[2].x - toa_do[1].x) *(toa_do[2].x - toa_do[1].x) +
(toa_do[2].y -toa_do[1].y) *(toa_do[2].y - toa_do[1].y)); // tu toa do nhap vao tinh thanh canh a
if((a + b > c) || (a + c > b) || (b + c > a)) // dieu kien de xac nhan 3 diem tao thanh 1 tam giac
{
z=a+b+c; // chu vi cua tam giac tao thanh tu 3 diem
return z;
}
else
{
return -1;
}
}
int main(void)
{
int i;
double chuvi;
struct point toa_do[3];
printf("XY座標面上の任意の3点を入力してください\n");
for(i=0; i<3; i++){ // nhap vao 3 diem
printf("%d点目\n", i+1);
printf("X座標:");
scanf("%lf", &toa_do[i].x);
printf("Y座標:");
scanf("%lf", &toa_do[i].y);
}
chuvi=tinh_chu_vi(toa_do); // ket qua tinh vi tu tam giac tao thanh tu 3 diem
if(chuvi > 0){
printf("三角形の周囲は %.6fです\n", chuvi);
}
else if(chuvi == -1)
{
printf("計算不能\n"); // khong tinh toan duoc
}
return 0;
}
Output đúng ra là:
XY座標面上の任意の3点を入力してください
1点目
X座標:0⏎
Y座標:0⏎
2点目
X座標:1⏎
Y座標:1⏎
3点目
X座標:-2⏎
Y座標:-2⏎
計算不能
trường hợp ở trên chương trình chạy bị sai !
Mong mọi người chỉ giáo ạ!