程序代码:
#include <stdio.h>
#include <math.h>
typedef struct
{
float x;
float y;
}
dot_type;
typedef struct
{
dot_type d1;
dot_type d2;
dot_type d3;
int type;
float s;
}
tri_angle_type;
void input(tri_angle_type *pinput)
{
scanf("%f,%f",&((pinput->d1).x),&((pinput->d1).y));
scanf("%f,%f",&((pinput->d2).x),&((pinput->d2).y));
scanf("%f,%f",&((pinput->d3).x),&((pinput->d3).y));
}
float get_len(float x1,float y1,float x2,float y2)
{
return sqrt(pow((x1-x2),2)+pow((y1-y2),2));
}
void cmp_area(tri_angle_type *pinput)
{
float l1 = get_len((pinput->d1).x,(pinput->d1).y,(pinput->d2).x,(pinput->d2).y);
float l2 = get_len((pinput->d1).x,(pinput->d1).y,(pinput->d3).x,(pinput->d3).y);
float l3 = get_len((pinput->d2).x,(pinput->d2).y,(pinput->d3).x,(pinput->d3).y);
if(l1<=0 || l2<=0 || l3<=0 || l1+l2<=l3 || l1+l3<=l2 || l2+l3<=l1)
{
pinput->type = -1;
return;
}
float temp = (l1+l2+l3)/2;
pinput->s = sqrt(temp*(temp-l1)*(temp-l2)*(temp-l3));
pinput->type = 1;
}
void output(tri_angle_type *pinput)
{
if(pinput->type == -1)
{
printf("Not a triangle\n");
return;
}
printf("The area is %f\n",pinput->s);
}
int main()
{
tri_angle_type tri_angle;
input(&tri_angle);
cmp_area(&tri_angle);
output(&tri_angle);
return 0;
}