在C++中将函数压缩为两种方式

Condensing functions to go two ways in C++

本文关键字:两种 方式 压缩 函数 C++      更新时间:2023-10-16

显然,我应该能够使用布尔逻辑将这六个函数浓缩为三个更简单的函数,它们有两种方式,但我不知道从哪里开始!

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个是布尔值。