为什么我的代码无法从屏幕上打印任何内容?(C++)
Why won't my code print anything from the screen? (C++)
我正在处理一个包含一组数据的文件:
x values y values
20.00 0
20.02 15
20.04 27
20.06 39
20.08 54
20.10 65
20.12 75
该程序应该计算曲线下的面积。在这一部分中,我将为前6个x-y集这样做。我的面积算法是每个梯形的和,对于这些约束,应该只有5个梯形。每个梯形的每个定义为:A=0.5(基底_0)*(高度+高度_0)。
这是我的代码:
int main()
{
ifstream infile;
double AreaCurve = 0.0, NumberTraps = 0.0, height, height_0, base, base_0, AreaTrap;
infile.open("xydata.dat");
cin.ignore(20, '2');
while (NumberTraps < 6)
{
infile >> base_0;
infile >> height_0;
infile >> base;
infile >> height;
AreaTrap = 0.5 * (base - base_0) * (height + height_0);
AreaCurve += AreaTrap;
NumberTraps++;
}
cout << "The area under the curve is: " << setprecision(4) << AreaCurve << endl;
infile.close();
return 0;
}
当我编译程序时,没有任何东西打印到屏幕上。我不确定为什么会发生这种情况,但我认为这可能与我的代码中包含cin.ignore函数的行中的错误有关(我无法编辑数据,我需要跳过这行:"x values\t\t y values")
删除行cin.ignore(20, '2');
。
这一行将使您的程序等待用户输入,直到他们输入二十个2
或输入不同的字符。
您不应该在这个程序中读取任何用户输入,您的输入数据来自infile
。
您需要添加代码来忽略infile
的第一行。一个简单的方法是string s; getline(infile, s);
程序的主循环也有一个逻辑错误。你一次读两行,考虑那个梯形,但你忽略了那个梯形后面的梯形。(所以你只计算了大约一半的梯形)。
最后,在处理梯形之前,您应该检查输入是否成功:
if ( !infile )
break;
要忽略infile
流的第一行(无论其长度如何),您需要:
infile.ignore( numeric_limits<streamsize>::max(), 'n' ) ;
注意,这需要<limits>
标头。
您不需要忽略第一个"2"。对于初学者来说,第一个x值总是必须以'2'开头,但更有用的是,std::istream::operator>> (double&);
在任何情况下都会跳过空白,包括行尾。
此代码还有其他问题,例如试图读取文件中包含的更多值,集成算法不正确,以及对有效流没有错误检查。考虑:
infile.ignore( numeric_limits<streamsize>::max(), 'n' ) ;
infile >> base_0;
infile >> height_0;
while( infile.good() )
{
infile >> base;
infile >> height;
if( infile.good() )
{
AreaTrap = 0.5 * (base - base_0) * (height + height_0);
AreaCurve += AreaTrap;
base_0 = base ;
height_0 = height ;
}
}
相关文章:
- 是否有任何内置的哈希图函数来处理 c++ 中的值输入?
- std::任何只用于移动的模板,其中副本ctor内的static_assert等于编译错误,但为什么
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- "... already defined in *.obj"但我没有在同一范围内两次定义任何变量
- C++ 中是否有任何内置阶乘函数?
- 如何在C++中接收任何类型的函数参数并获取函数内传递变量的类型?
- 是否有任何内置函数可以告诉编译器分支是否可预测
- 调用向量内的函数指针不执行任何操作
- 是否有任何挂钩接口在编译时间内更换功能
- 如何检查copy_if是否返回使用ostream_iterator范围内的任何内容
- 我需要在C /C#中使用图形.我可以使用任何内置的C /C#库
- 是否有任何内置类可以处理C 中的大整数值
- c ++中是否有任何内置功能可以在计划的时间运行任务
- 是否有任何内置的 UTF 在 c++ 在窗口中
- 在VC++2010中执行任何内置的ARRAY函数
- C++:如何在不使用任何内置函数的情况下将字符串转换为整数
- 是否有任何内置的CUDA函数允许CUDA内核向主机代码报告错误?
- 我如何在常数时间(O(1))内获得字母表(1-26)中字符的数值/位置,而不使用任何内置方法或函数
- C++中的任何内置哈希方法
- c++库中的任何内置夹子方法