gpt4 book ai didi

c++ - 在 C++ 中找到最小值(双)

转载 作者:行者123 更新时间:2023-11-28 04:25:01 24 4
gpt4 key购买 nike

我刚开始学习 C++,我写了一个代码来找到 int 值的最小值,现在我必须用 double 来做,但我错了!请让我知道如何解决它!

#include <iostream>

using namespace std;


void findminval (double num1, double num2) {
double minval;
if (num1<num2){
minval=num1;
} else {
minval=num2;
}

}
void findminval (int num1, int num2) {
int minval;
if (num1<num2){
minval=num1;
} else {
minval=num2;
}

}

int main(int argc, char** argv) {
int num1,num2;
cout<<"Enter Two Numbers"<<endl;
cin>>num1>>num2;
int minimumvalue = findminval(int num1,int num2);
cout<<minimumvalue<<endl;

double num1,num2;
cout<<"Enter Two Numbers"<<endl;
cin>>num1>>num2;
double minimumvalue = findminval(num1,num2);
cout<<minimumvalue<<endl;
return 0;
}

最佳答案

你的函数缺少一个明确的return值(你也不能在同一范围内改变变量的类型,所以你的编译器会在它到达double num1,num2时报错;).

至少你需要写

double findminval(double num1, double num2){
double minval;
if (num1 < num2){
minval = num1;
} else {
minval = num2;
}
return minval;
}

虽然您可以简化,但代价是难以调试,以

double findminval(double num1, double num2){
if (num1 < num2){
return num1;
} else {
return num2;
}
}

甚至

double findminval (double num1, double num2){
return num1 < num2 ? num1 : num2;
}

请注意,您可以将其模板化,这样您就不需要两个函数了:

template<typename Y> Y findminval(const Y& num1, const Y& num2){
return num1 < num2 ? num1 : num2;
}

请注意,我现在通过 const 引用来避免可能的值拷贝。现在您看到我们遇到了 std::min。最后一点需要考虑:“礼仪”是在参数相等时返回第一个参数。这是为了保留浮点的符号零,甚至是 1 的补码系统中的整数类型。所以这可能是最好的做法,除了使用 std::min:

template<typename Y> Y findminval(const Y& num1, const Y& num2){
return num1 <= num2 ? num1 : num2;
}

关于c++ - 在 C++ 中找到最小值(双),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54539351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com