C++类输出不正确
C++ Class output incorrect
#include <iostream>
using namespace std;
class Pyramid{
public:
Pyramid();
void set_surfaceArea(double, double, double);
void set_volume(double, double);
double get_surfaceArea();
double get_volume();
void print_sufraceArea();
void print_volume();
private:
double height,
sideLength,
perimeter,
baseArea,
surfaceArea,
volume;
};
Pyramid::Pyramid(){
height = 0;
baseArea = 0;
perimeter = 0;
sideLength = 0;
}
void Pyramid::set_surfaceArea(double baseArea, double sideLength, double perimeter){
baseArea = baseArea;
sideLength = sideLength;
perimeter = perimeter;
}
void Pyramid::set_volume(double baseArea, double height){
baseArea = baseArea;
height = height;
}
double Pyramid::get_surfaceArea(){
return (1/2) * baseArea * perimeter * sideLength;
}
double Pyramid::get_volume(){
x = (1/3) * baseArea * height;
return x;
}
int main(){
double height,
test,
sideLength,
perimeter,
baseArea;
cout << "Enter height: ";
cin >> height;
cout << "Enter side length: ";
cin >> sideLength;
cout << "Enter perimeter: ";
cin >> perimeter;
cout <<"Enter base area: ";
cin >> baseArea;
Pyramid x;
x.set_surfaceArea(baseArea, sideLength, perimeter);
x.set_volume(baseArea, height);
test = x.get_volume();
cout << "test: " << test << endl;
}
当我运行此代码(并输入数字)时,我得到"test: 0"的输出。这段代码是我第一次尝试从头开始制作一个类。我相信有人可以很容易地指出为什么无论我输入什么,我的输出都给我"0"。
谢谢!
这里的问题其实很清楚。您的代码正在遭受 2 个名称完全相同的变量的困扰,其中范围对于知道实际使用的变量很重要。
示例:您已将"高度"定义为类成员,但也定义为set_volume的方法参数。因此,如果你写height = height;
你实际上是在做自我作业。对于这个特定示例,我的编译器 (clang) 会为此发出警告,并显示错误消息explicitly assigning value of variable of type 'double' to itself
(我希望其他编译器生成类似的东西)
要解决此问题,您必须重命名其中一个变量。我建议将类成员重命名为 _height
、m_height
或 mHeight
,以清楚地表明这是一个成员。(示例基于现有的风格指南)
因此,一旦您解决了这个问题,成员将获得与 0 不同的值,但结果仍然与您编写的相同:(1/3)
此代码的计算结果将始终为 0,因为您正在执行整数除法。这定义为将一个整数除以另一个整数,从而得到结果的底值。因此,在这种情况下,0.333 被下限为 0。将此代码替换为 (1./3.)
可解决此问题。
相关文章:
- 不正确的比较和交换计数器输出用于快速排序功能
- Windows 10命令提示符的输出不正确
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- C++ - 为什么 unicode 输出不正确?
- 连接的组件程序产生不正确的输出
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 我的叉子输出不正确
- 输出使用 cout 转换为 ASCII 的文本时输出格式不正确,C++
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- C++使用 CEIL 和长度输出不正确的值
- 使用 iconv 进行 UTF8 转换的输出不正确
- C strftime()输出不正确
- 不正确的输出和变量未用Eclipse CDT初始化构造函数
- 当行数和列不匹配时,输出不正确
- 合并排序不正确的输出 c++
- 从堆栈中读取字符后,如何修复不正确的文件输出
- C++ 嵌套循环输出不正确
- 矩阵和矢量乘法,输出不正确的产品
- 我对这个问题有问题,我的输出不正确
- 测试整数是否在范围内时,逻辑错误和不正确输出