在C++中将函数压缩为两种方式
Condensing functions to go two ways in C++
显然,我应该能够使用布尔逻辑将这六个函数浓缩为三个更简单的函数,它们有两种方式,但我不知道从哪里开始!
void footToMeter(int inputfeet) {
double outputMeter = ((inputfeet) / (3.281));
cout << outputMeter;
}
void meterToFoot(int inputmeter) {
double outputFoot = ((inputmeter)*(3.281));
cout << outputFoot;
}
void CtoF(int inputC) {
double outputF = 32 + (inputC*(9.0 / 5.0));
cout << outputF;
}
void FtoC(int inputF) {
double outputC = (5.0 / 9)*(inputF - 32);
cout << outputC;
}
void cMtocF(int inputcM) {
double outputcF = ((inputcM)*(35.315));
cout << outputcF;
}
void cFtocM(int inputcF) {
double outputcM = ((inputcF) / (35.315));
cout << outputcM;
}
一种方法是为每个函数添加一个额外的参数,以确定要转换的方向。
示例:
void lengthConversion(int inputLength, bool toFeet)
{
double output;
if (toFeet)
output = inputLength * 3.281;
else
output = inputLength / 3.281
cout << output;
}
@虽然有道理,但enum
会让它变得更好一点。
将其简化为3个函数。首先尝试将当前功能之间的相似性捆绑起来:
// Put the foot to meter and meter to foot functions into one, with 2 extra boolean values.
void fAndMConversion(int measurement , bool footToMeter , bool meterToFoot) {
if(footToMeter){
double fTm = ((measurement) / (3.281));
cout << fTm;
}
if(meterToFoot){
double mTf = ((measurement)*(3.281));
cout << mTf;
}
}
这是前两个函数。这也允许我们在对函数fAndMConversion(11 , true , true)
的一次调用中进行英尺到米和米到英尺的转换。您可以将它进一步捆绑到一个conversions()
函数中,该函数总共有7个参数,其中6个是布尔值。
相关文章:
- 在C++中将函数压缩为两种方式
- 为什么两种不同的对象初始化方式给出不同的输出
- C++:这两种将数字写入矩阵的方式之间是否存在显着的速度差异?
- 将函数作为参数传递的两种方式之间的区别
- 初始化结构的两种方式
- 在两种情况下,铸造的工作方式不同
- 这两种方式有什么区别吗?
- 由于您可以在C 中以两种方式声明复制构造函数,这是正确的方式
- 定义构造函数的两种不同方式
- 尝试在Qt中连接隐藏信号的两种方式之间做出决定
- C++:如何使用CIN和File两种方式获取输入
- 在C++中定义虚拟继承的两种不同方式
- 为什么这两种访问C++映射对部分的方式不同
- openssl sha256两种计算方式的差异
- 在C++OpenMP中使用蒙特卡罗方法以两种方式计算圆周率
- 在堆栈上声明对象的两种方式之间的差异
- 使用默认构造函数的两种方式的区别
- 声明类实例的两种方式的不同之处
- 用两种不同的方式初始化指针会得到两种结果
- 在这两种包含相同标头的方式之间,编译器中是否发生了不同的事情