编写一个带有3个重载的函数GetVolume()
。如果传入一个值,则查找以该值为半径的球体的体积。如果两个值被传入,那么找到一个圆柱体的体积,这些值是它的半径和高度。如果传入三个值,请查找框的卷,其中三个值为其长度、宽度和高度。
#include <iostream>
#include <cmath>
using namespace std;
double PI = 3.14;
double GetVolume(double r)
{
cout << "Sphere's volume is: ";
return ((4 * PI * pow (r , 3.0))/3);
}
double GetVolume(double r, double h)
{
cout << "Cylinder's volume is: ";
return (PI * pow (r, 2) * h);
}
double GetVolume(double l, double h, double w)
{
cout << "Box's volume is: ";
return (w * l * h);
}
int main()
{
double num = 0, num1 = 0, num2 = 0, num3 = 0;
double ans1, ans2, ans3;
cout << "Please enter 1, 2, or 3 numbers depending on whether you want the volume of a sphere, cylinder, or a box." << endl;
cin >> num1, num2, num3;
ans1 = GetVolume(num1);
ans2 = GetVolume(num1, num2);
ans3 = GetVolume(num1, num2, num3);
cout << ans1 << ans2 << ans3 << endl;
system("pause");
return 0;
}
我不明白为什么我不能使用我的getvolume
函数来显示三种不同的结果,基于在cin
中插入的数字,我在上面附加了一个问题,我必须回答它的第三部分的五部分分配。对不起,如果这是不够的信息,我会尽量提供更多。
发布于 2019-04-15 22:43:33
您可以像下面这样声明类和重载GetVolume
函数
double PI = 3.14;
class calculateVolume {
public:
double GetVolume(double r)
{
cout << "Sphere's volume is: ";
return ((4 * PI * pow (r , 3.0))/3);
}
double GetVolume(double r, double h)
{
cout << "Cylinder's volume is: ";
return (PI * pow (r, 2) * h);
}
double GetVolume(double l, double h, double w)
{
cout << "Box's volume is: ";
return (w * l * h);
}
}
int main() {
calculateVolume volObject;
cout<<volObject.GetVolume(5);
return 0;
}
以上代码将给出输出Sphere's volume is: 523.333
它只是工作片段,您可以根据需要调整代码。
发布于 2019-04-16 00:22:32
您只从这一行的标准输入中读取一个数字。
cin >> num1, num2, num3;
这里的逗号是operator,
,它计算多个表达式并丢弃除最后一个表达式之外的所有表达式。如果您想读取多个数字,则需要链接>>
cin >> num1 >> num2 >> num3;
但是,您似乎想知道输入了多少个数字,您可以通过查看operator>>
返回的值来测试这个数字。
if (!(cin >> num1)) {
cout << "no numbers entered";
} else if (!(cin >> num2)) {
cout << GetVolume(num1);
} else if (!(cin >> num3)) {
cout << GetVolume(num1, num2);
} else {
cout << GetVolume(num1, num2, num3);
}
发布于 2019-04-15 22:19:21
您可能需要阅读c++中的逗号运算符。其他
基本上在队伍里,
num = GetVolume(num1), GetVolume(num1,num2), GetVolume(num1, num2, num3);
对GetVolume(num1)
进行评估。结果就会被丢弃。
然后对GetVolume(num1,num2)
进行评价。结果,丢弃
最后,对GetVolume(num1, num2, num3)
进行评估,其结果由operator =
的RHS上的(Expr、Expr、Expr)返回。
然后将返回的值分配给num
。所以你只能看到一个答案。
类似地,您的cin >> num1, num2, num3;
将只接受一个输入,即num3。
可能的修正
int ans1, ans2, ans3;
cin >> num1 >> num2 >> num3;
ans1 = GetVolume(num1);
ans2 = GetVolume(num1, num2);
ans3 = GetVolume(num1, num2, num3);
其他问题
double
,但将它们存储在int中。这造成了严重的精度损失。我相信你想换个双人间。cout
和下面的代码似乎不连贯。也许你希望你先接受一个输入。测试它是1,2还是3,然后采取相应的行动。https://stackoverflow.com/questions/55701438
复制相似问题