检查金额是多少?

时间:2014-03-28 21:11:57

标签: c++

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string onesPlace[] = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine",};
    string thoseCrazyTeens[] = {"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",};
    string tensPlace[] = {"twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety",};

    float userInput = 0;
    bool flag = true;
    cout << "Please input your check amount. " << endl;
    while (flag == true)
    {
        cin >> userInput;
        if (userInput > 100000)
        {
            cout << "That number is too big! Try again. " << endl;
            flag = true;
        }
        else
        {
            flag = false;
        }
    }

    int partOne = userInput;

    return 0;
}

目前,我正在开发这个程序,它接受用户输入(支票金额)并将其从数字值转换为最高100000的单词。我想要做的一个例子是$ 344.67:< / p>

三百四十四和67/100。

我已经获得了我需要的单词的字符串值(对于超过一定数量的值,可以提供数百和数千),现在我正试图弄清楚如何获取十进制后的美分。如果我使用mod它并不总是准确的。

之后,如果没有那么多if语句,是否有一种简单的方法可以吹1到20?

2 个答案:

答案 0 :(得分:1)

要将字符串拆分为美元和美分,请不要依赖int partOne = userInput之类的代码。

通常,sscanf是解析字符串的首选武器。它是一种C方法,但它比C ++替代方法更有效。

所以,像这样:

int dollars;
int cents;

int items = sscanf (userInput.c_str(), "$%d.%d", &dollars, &cents)

items 的值用于错误检测。我强烈建议检查它。

至于处理案例1至20 ...... 一些如果需要陈述,但它不应该是繁重的。只需开始编码并考虑您的算法。

答案 1 :(得分:0)

mod用于整数而不是十进制数。如果要使用模式,则必须将数字乘以100,然后将其调整为100.