代碼:
#include <stdio.h>
typedef struct {
double x;
double y;
}point;
int is_rectangle(point a,point b,point c,point d){
int ab_y = a.y - b.y;
int ab_x = a.x - b.x;
int cd_y = c.y - d.y;
int cd_x = c.x - d.x;
// 首先判斷ab是否平行於cd
if (ab_x == 0 || cd_x == 0){
if(ab_x != cd_x){
return 0;
}
}else{
if(ab_y/ab_x != cd_y/cd_x){
return 0;
}
}
// 再判斷ab是否等於cd
if(ab_y*ab_y + ab_x*ab_x != cd_y*cd_y + cd_x*cd_x){
return 0;
}
// 然後判斷ab是否垂直於ac
int ac_y = a.y - c.y;
int ac_x = a.x - c.x;
if(ab_x == 0 ){
if(ac_y != 0)
return 0;
}else if(ac_x == 0){
if(ab_y != 0)
return 0;
}else if((ac_y/ac_x)*(ab_y/ab_x) != -1){
return 0;
}
return 1;
}
int main(){
printf("輸入4個坐標值:\n");
point a,b,c,d;
scanf("%lf %lf",&a.x,&a.y);
scanf("%lf %lf",&b.x,&b.y);
scanf("%lf %lf",&c.x,&c.y);
scanf("%lf %lf",&d.x,&d.y);
if(is_rectangle(a,b,c,d)){
printf("能構成矩形\n");
}else{
printf("無法構成矩形\n");
}
return 0;
}
運行結果:
?