#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?
答案 0 :(得分:1)
要将字符串拆分为美元和美分,请不要依赖int partOne = userInput
之类的代码。
通常,sscanf是解析字符串的首选武器。它是一种C方法,但它比C ++替代方法更有效。
所以,像这样:
int dollars;
int cents;
int items = sscanf (userInput.c_str(), "$%d.%d", &dollars, ¢s)
items 的值用于错误检测。我强烈建议检查它。
至于处理案例1至20 ...... 一些如果需要陈述,但它不应该是繁重的。只需开始编码并考虑您的算法。
答案 1 :(得分:0)
mod用于整数而不是十进制数。如果要使用模式,则必须将数字乘以100,然后将其调整为100.