在函数distance
下,我返回一个称为distan
的double
。但是当我回到main
函数时,dis1[i]
变成了一个整数。例如,如果distan
=6.06,则在调试时dis1[i]
将仅为6。下面是代码:
#include <iostream>
#include <cmath>
#include<iomanip>
using namespace std;
/*
*
*/
int distance(double x1,double x2,double y1,double y2){
double k;
k=pow((x1-x2),2)+pow((y1-y2),2);
double distan;
distan=sqrt(k);
return distan;
}
int main() {
int n,k;
double dis=0.00;
cin>>n;
double points[2][100]={0.0};
for(int i=0;i<n;i++){
for(int m=0;m<2;m++){
cin>>points[m][i];}
}
double dis1[100]={0.0};
int count=0;
for(int i=0;i<n-1;i++){
for(int r=1;r<n;r++&&count++)
dis1[count]=distance(points[0][i],points[0][i+r],points[1][i],points[1][i+r]);
}
for(int i=0;i<=count;i++){
if(dis1[i]>dis){
dis=dis1[i];
}
}
cout << fixed << setprecision(4) << dis << endl;
return 0;
}
另外,这个代码是计算两组点(x和y)之间的最大距离,请帮助。
distance
函数的返回类型为int
:
int distance(double x1,double x2,double y1,double y2){
^^^
如果您想返回double
,请将其更改为double
。
检查函数distance
的返回类型,它是int
,将其更改为double
按如下方式更改函数....
double distance(double x1,double x2,double y1,double y2){
double k;
k=pow((x1-x2),2)+pow((y1-y2),2);
double distan;
distan=sqrt(k);
return distan;
}
当你向function返回双精度值时,如果你需要双精度值,则函数返回类型应为double。
double distance(double x1,double x2,double y1,double y2)
只需为返回类型更新函数,就完成了。
double distance(double x1,double x2,double y1,double y2){
double k;
k=pow((x1-x2),2)+pow((y1-y2),2);
double distan;
distan=sqrt(k);
return distan;
}
在整型函数"distance"的最后一行将双精度类型强制转换为整型:
return distan;
…这就是它变成整数的地方。当执行隐式类型强制转换时,编译器应该给您一个警告。更好的是不需要这样做的语言