将数字转换为文本时出错
Error with converting numbers to text
我正在编写一个将数字转换为文本的c++程序。
我有两个问题(编辑:现在只有一个):
-
第一个问题是,程序只写1-19的正确数字,从20-99的所有数字,比如当我写34的时候,我得到的答案是30,而不是应该的34。30之后,只会出现错误,程序就会关闭。[问题已修复]
-
第二个问题是,我希望我能写0-999之间的数字,而不仅仅是99,但我不知道如何做
#include <iostream> #include <string> using namespace std; int main() { int num, Ldight, Rdight; string ones[] = {"zero", "one", "two", "three", "four", "five","six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}; string tens[] = {"twenty","thirty","fourty","fifty", "sixty","seventy","eighty", "ninety"}; cout << "Pick a number between 1-99: "; cin >> num; if(num <= 0) { cout << "ERROR!" << endl; } else if (num >= 0 && num <= 19) { cout << "Your number is: " << ones[Rdight] ; } else if (num >=20 && num <=99) { Rdight = num % 10; Ldight = num / 10; cout << "Your number is: " << tens[Ldight - 2] << ones[Rdight]; } return 0; }
您应该更改以下内容:
cout << "Your number is: " << tens[Ldight - 2] << ones[num];
至
cout << "Your number is: " << tens[Ldight - 2] << ones[Rdight];
你计算了一个你从未使用过的值。并且在ones
上面的行中,num访问索引超出了界限。
对于您的第一个问题,您的问题在这一行:
cout << "Your number is: " << tens[Ldight - 2] << ones[num];
您使用了错误的变量,尽管正确地计算了上面几行中的值。我不是在告诉你如何解决它,因为你是学习编程的人,你需要学会如何发现这类问题。
[我个人会在"tens"中添加两个伪字段,这样你就不必再做-2
了——这是一个很小的代价]。
至于你的第二个问题,你必须考虑如何表达,你可能会想出一些。。。比方说,这与求解个位数没有太大区别。如果你需要超过六行左右的线路,你就解决错了。
一旦你解决了数百个问题,只需几行额外的代码,就可以将数字添加到数百万,甚至更多。
使用以下行:
cout<lt;"您的号码是:"<lt;十位数[Ldigital-2]<lt;一个[Rdigit-1];
ones[]中不需要元素"zero",因为当i/p<=0,因此删除元素"零"
您可以尝试将用户输入分成两部分。如果用户输入为:55,则将其分成5和5,然后打印
十[5]+一[5]
这将是一个更好的解决方案。您将删除所有可能导致问题的if-s
相关文章:
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 如何将内容数组写入文本文件?
- 重载操作程序时出错>>用于类中的字符串 memebr
- 将文本从一个文件复制到另一个c++流时出错
- OpenGL 将来自 ttf 的渲染器文本与背景纹理组合在一起时出错
- 使用 conio.h 更改文本颜色时出错
- 将字符串从文本文件读取到矢量数组C++时出错
- 视觉对象C++窗体、简单消息框和将文本从文本字段分配给字符串时出错
- 当我尝试在 qTextEdit 中设置文本时出错
- 用c++读取和打印文本文件时出错
- PInvoke:从c++返回文本到c#时出错
- 读取文本文件片段并写入boost时出错.asio插座
- 从文件读取文本到无符号字符数组,在尝试使用示例时出错
- 将数字转换为文本时出错