当我以不同的顺序输入值时,程序会出错
Program gives an error when I enter values in a different order
我正在尝试确定用户在程序中输入的值是有效的还是无效的
以下是其有效的条件:
- 出口角度必须介于-10和50之间(包括10和50)
- 关联值必须介于-3和3之间(包括-3和3)
- 给定方程式
范围=(36-0.45(出口角))/(入口角-出口角)
范围必须介于0.75和1.25之间(包括0.75和1.25)。
用户通过输入-1-1-1 退出程序
输入如下:[入射角,出射角,入射角]。在程序中输入数字时,不使用逗号。
问题:
给定上述条件,当我输入一组值[50,-9.999,0]时,程序会说这是无效的。这个答案是正确的。如果将这些值输入到上面的等式中,则范围为0.675004,这超出了域。
如果我输入一组值[41.6,-10.01,1],程序会说它无效。这个答案是正确的,因为-10.01不在出射角的范围内。之后,当我输入[50,-9.999,0]时,程序突然认为这是有效的。此答案不正确,因为范围不在域内。
代码
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstdlib>
using namespace std;
int main (void) {
// Declare variables
double entry = 0.0;
double exit = 0.0;
double incidence = 0.0;
double range = 0.0;
bool validExit = false;
bool validIncidence = false;
bool validRange = false;
do
{
// Prompt user to enter input values
cout << "Enter flow entry angle, flow exit angle, and incidence: ";
cin >> entry >> exit >> incidence;
// Check if exit angle is valid
if (exit >= -10.0 && exit <= 50.0) {
validExit = true;
}
else {
validExit = false;
}
// Check if incidence is valid
if (incidence >= -3.0 && incidence <= 3.0) {
validIncidence = true;
}
else {
validIncidence = false;
}
// Determine range if difference between entry and exit value is greater than 0.0001
if (fabs(exit - entry) > 0.0001)
{
range = (36 - (0.45 * exit))/(entry - exit);
// Check if range is valid
if (range >= 0.75 && range <= 1.25)
{
validRange = true;
}
}
else {
validRange = false;
}
// Print output
if ((validExit != true) || (validIncidence != true) || (validRange != true)) {
cout << "Invalid entries ignored" << endl;
}
else {
cout << "Valid" << endl;
}
// Loop until user enters -1, -1, -1
} while (entry != -1.0 && exit != -1.0 && incidence != -1.0);
system("PAUSE"); return 0;
}
您需要在do while循环开始时将validRange重新初始化为false。否则,一旦您有一个有效范围的输入,它将保持该范围有效,直到(fabs(exit-entry)>0.0001)为假。
检查中有一条路径不会以某种方式设置validRange:即当(abs(exit - entry) > 0.0001)
为true但if (range >= 0.75 && range <= 1.25)
为false时。因此,validRange仍然具有上一次迭代中保留的值。
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- 分段错误当我试图运行程序时出错
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 修改气泡排序的程序出错
- 包含多维数组的程序出错
- 程序出错C++
- 检查完美的程序出错了
- 带有私有构造函数的程序出错
- LunarLander程序出错:符号未解析
- C++程序出错
- 结构:初始化程序出错
- 编译简单的应用程序出错
- 在树莓派上编译c++ opencv应用程序出错
- 链接基于Qt的应用程序出错
- 简单数学程序出错
- 具有未定义行为但从未实际执行的表达式是否会使程序出错
- 目录列表程序出错,c++
- Qt LNK2019 基本 Qt5 应用程序出错
- 我的简单阶乘计算器c++程序出错了吗?