我必须编写的代码基本上是一个小型银行。它要求初始金额,操作类型以及该操作的第二个运算符。
我不允许使用else
,但可以使用if
语句(我不明白为什么),也不允许使用循环或数组。
这是我到目前为止的代码:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int operand1;
int operand2;
float output;
char action;
int main()
{
cout << fixed << showpoint << setprecision(2);
cout << "Enter the initial balance [1-1000]: " << endl;
cin >> operand1;
cout << "Enter an action (D, W, I or C):" << endl;
cin >> action;
cout << "Enter the second operand:" << endl;
cin >> operand2;
if ((action != 'D' && action != 'W' && action != 'I' && action != 'C') || (operand1 > 1000 || operand1 < 1) ||
(action == 'I' && operand2 > 15 || operand2 < 1) || (action == 'C' && operand2 != 20 && operand2 != 10 && operand2 != 5) ||
(operand2 > 1000 || operand2 < 1))
{
cout << "Input out of range" << endl;
return 0;
}
if (action == 'D')
{
output = (operand1 + operand2);
cout << "The new account balance is " << output << endl;
}
if (action == 'W')
{
output = (operand1 - operand2);
if (output<0)
{
cout << "Input out of range" << endl;
return 0;
}
cout << "The new account balance is " << output << endl;
}
if (action == 'I')
{
output = ((float)operand1 + (((float)operand2 / 100) * (float)operand1));
cout << "The new account balance is " << output << endl;
}
if (action == 'C')
{
output = operand1 % operand2;
cout << operand1 / operand2 << " bills dispensed plus " << output << endl;
}
cin.get();
cin.get();
return 0;
}
在某些情况下,我会收到多个错误,而不仅仅是一个错误。例如:
Enter the initial balance [1-1000]: 1030 Enter an action (D, W, I or C): D Enter the second operand: 40 Input out of range
但是,当它看到错误时,它似乎只是继续前进,我得到以下输出:
Enter the initial balance [1-1000]: 1030 Input out of range Enter an action (D, W, I or C): D Enter the second operand: 40 The new account balance is 1070.00
我似乎无法弄清楚如何只有一个输出,并且不使用else
语句就只能无平衡地显示错误。
答案 0 :(得分:1)
使用开关(操作):
https://en.cppreference.com/w/cpp/language/switch
案件成立后可以采用默认设置。
很多约定也禁止其他,但不禁止elseif-您确定在您的情况下禁止elseif吗?
但是,即使允许elseif-开关也更易于阅读,并且是一种更优雅的解决方案。
答案 1 :(得分:0)
您可以通过将所有命令视情况不同来使用switch。这是别人已经说过的。
我的贡献是,您可以将第一个if语句放在默认情况下的错误情况下。
在使用switch语句之前,您是否可以检查是否曾经明确声明不能使用'else if'语句。如果没有,您应该使用它。它与“ else”语句不同。
答案 2 :(得分:0)
&&
的优先级高于||
if (
(action != 'D' && action != 'W' && action != 'I' && action != 'C') ||
(operand1 > 1000 || operand1 < 1) ||
// (action == 'I' && operand2 > 15 || operand2 < 1) ||
(action == 'I' && (operand2 > 15 || operand2 < 1)) ||
(action == 'C' && operand2 != 20 && operand2 != 10 && operand2 != 5) ||
(operand2 > 1000 || operand2 < 1))
{
cout << "Input out of range" << endl;
return 0;
}
要在代码上实现更多可追溯性,值得花点功夫:
if (action != 'D' && action != 'W' && action != 'I' && action != 'C')
{
cout << "Input out of range; action " << action << endl;
return 0;
}
if (operand1 > 1000 || operand1 < 1)
{
cout << "Input out of range; 1st operand: " << operand1 << endl;
return 0;
}
...