C ++基本转换然后添加用户输入

时间:2017-02-09 13:33:22

标签: c++ input error-checking

这是我在Bjarne Stroustrup的编程原理和C ++ 一书中为练习编写的解决方案的尝试。不幸的是,我写的用于输入所输入硬币总金额的部分并不符合我的要求!

快速回答我会非常感激,但如果有人也有时间可以帮我介绍一些基本的错误检查吗?

我希望它工作的方式是在需要用户输入之后(例如,你有多少20p?),以检查用户是否输入了HashMap。如果没有,提供一个微妙的错误信息,并有机会重复相同的问题,而不是从一开始就停止程序或启动程序!

int

2 个答案:

答案 0 :(得分:0)

您有两个问题:

首先,在没有循环的情况下,代码从上到下运行。这意味着您在读取输入之前计算amount

第二个问题是,当您计算amount(目前,在错误的位置)时,您使用变量oneten之前他们被初始化了。未初始化的局部变量将具有 indeterminate 值,使用它们将导致未定义的行为

这两个问题的简单解决方案是在读取输入后将amount的计算移动到,但在之前写入输出。< / p>

答案 1 :(得分:0)

问题是您使用未初始化的变量计算amount。所有变量初始化后,您需要计算amount。您的变量仅在所有cin语句执行后初始化。

你需要移动

amount = (one * 0.01) + (ten * 0.1) + (twenty * 0.2) + (fifty * 0.5) + one_pound + 
(two_pound * 2);

在上一次cin陈述之后。

int main() {
int one, ten, twenty, fifty, one_pound, two_pound;
double amount;

cout << "Welcome to the change counter app!\nHow many 1p's do you have?\n";
cin >> one;
cout << "How many 10p's do you have?\n";
cin >> ten;
cout << "How many 20p's do you have?\n";
cin >> twenty;
cout << "How many 50p's do you have?\n";
cin >> fifty;
cout << "How many £1 coin's do you have?\n";
cin >> one_pound;
cout << "How many £2 coin's do you have?\n";
cin >> two_pound;

amount = (one * 0.01) + (ten * 0.1) + (twenty * 0.2) + (fifty * 0.5) + one_pound + (two_pound * 2);
cout << "You have: " << one << " 1p coins!\n"
    << "You have: " << ten << " 2p coins!\n"
    << "You have: " << twenty << " 20p coins!\n"
    << "You have: " << fifty << " 50p coins!\n"
    << "You have: " << one_pound << " £1 coins!\n"
    << "You have: " << two_pound << " £2 coins!\n"
    << "The total amount of money you have is: " << amount << "\n";
}