距离函数(c++题解)

题目描述

给出平面坐标上不在一条直线上三个点坐标 ,(x1​,y1​),(x2​,y2​),(x3​,y3​),坐标值是实数,且绝对值不超过 100.00,求围成的三角形周长。保留两位小数。

对于平面上的两个点 (x1​,y1​),(x2​,y2​),则这两个点之间的距离dis=(x2​−x1​)2+(y2​−y1​)2​

输入格式

输入三行,第 ii 行表示坐标 (xi​,yi​),以一个空格隔开。

输出格式

输出一个两位小数,表示由这三个坐标围成的三角形的周长。

输入输出样例

输入 #1复制

0 0
0 3
4 0

输出 #1复制

12.00

_____________________________________________________________________________

呜呜呜这道题错的太狠了,改了半小时才发现是double

做题不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

_____________________________________________________________________________

错误代码

#include 
using namespace std;
double ans,x,y,z;
double n[100005],m[100005];
int node(double a,double b,double c,double d){
	return sqrt(abs((c-a)*(c-a))+abs((d-b)*(d-b)));
}
int main(){	
	for(int i=1;i<=3;i++)cin>>n[i]>>m[i];
	x=node(n[1],m[1],n[2],m[2]);	
	y=node(n[1],m[1],n[3],m[3]);
	z=node(n[2],m[2],n[3],m[3]);
	ans=x+y+z;
	printf("%.2f",ans);
}

正确代码 

#include 
using namespace std;
double ans,x,y,z;
double n[100005],m[100005];
double node(double a,double b,double c,double d){呜呜呜就是因为这个函数的定义定成了int全错
	return sqrt(abs((c-a)*(c-a))+abs((d-b)*(d-b)));
}
int main(){	
	for(int i=1;i<=3;i++)cin>>n[i]>>m[i];
	x=node(n[1],m[1],n[2],m[2]);	
	y=node(n[1],m[1],n[3],m[3]);
	z=node(n[2],m[2],n[3],m[3]);
	ans=x+y+z;
	printf("%.2f",ans);
}

你可能感兴趣的:(算法)