计算化学公社

 找回密码 Forget password
 注册 Register

问一道C++编程题怎么写

查看数: 3950 | 评论数: 11 | 收藏 Add to favorites 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-9-21 09:57

正文摘要:

把数字转换成英语。结果以此为准:https://www.tools4noobs.com/online_tools/number_spell_words/如果太难,先从一位数写起,逐渐增加。你的程序最多支持多少位?这个问题应该怎么写呢?

回复 Reply

卡开发发 发表于 Post on 2019-9-23 16:15:36
zyj19831206 发表于 2019-9-23 16:13
皮毛,谦虚了,是不是有时候编译起来,C++14和C++17也有差距?

细节我没看,应该有差别,这个可以查到。用and和or、not这些是写python用多了一时半会没想起来要改一下导致的,python确实还是方便,有时候先用python打个草稿再改成C++或者Fortran,经常串台
zyj19831206 发表于 Post on 2019-9-23 16:13:23
卡开发发 发表于 2019-9-23 16:11
只是都学过,都比较皮毛,所以你仔细看,不管用哪个我用的方法其实没啥差别。我猜C++掌握的好的人写出来 ...

皮毛,谦虚了,是不是有时候编译起来,C++14和C++17也有差距?
卡开发发 发表于 Post on 2019-9-23 16:11:45
本帖最后由 卡开发发 于 2019-9-23 16:13 编辑
zyj19831206 发表于 2019-9-23 15:51
发大神,你的各种语言都手到擒来,到底是怎么学的啊?你的cpp程序用vs编译,貌似还是错误一堆,是需 ...

只是都学过,都比较皮毛,所以你仔细看,不管用哪个我用的方法其实没啥差别。我猜C++掌握的好的人写出来的代码肯定比我这边放的更流畅,建议精通一个比较好。

这个问题我想是not和and这些在你的vs上不支持,试试看:
"not" => "!"
"and" => "&&"
"or"   => "||"那个提示数字过长部分后面最好直接return,这个问题是当时传完了才发现的。
卡开发发 发表于 Post on 2019-9-22 20:48:57
本帖最后由 卡开发发 于 2019-9-22 21:05 编辑
zyj19831206 发表于 2019-9-21 16:59
兄弟,你说的还是有点含糊,能否写一个伪代码,我在leetcode搜索了一段本题代码,总是运行不过去:
clas ...

其实也没多复杂,注释懒得写了,有啥欠考虑的导致bug我也不知道了,自行修改。
1、就把数组三位一拆,挨个加thousand, million, billion。
2、三位当中再划分一次,100那个位置单独一个数,后面可能是一位也可能是两位。原则上这里看情况应该补个and,他们找的代码都没提到这事情。
3、按照上面例子来说,存了0~20和整10位的,这个也不是唯一做法。
4、写程序还是多写多想多看,除了学习别人好的风格,自己也得多思考。
num2en.cpp (2.14 KB, 下载次数 Times of downloads: 8)
num2en.py (1.71 KB, 下载次数 Times of downloads: 6)
DoubeeTwT 发表于 Post on 2019-9-21 22:19:31
zyj19831206 发表于 2019-9-21 16:59
兄弟,你说的还是有点含糊,能否写一个伪代码,我在leetcode搜索了一段本题代码,总是运行不过去:
clas ...

差不多就是你这个代码的意思啊
保存一个数组零到十九,判断是否小于20:
小于20,unit[num]直接就是英语了
大于20,ten[num的十位数]+unit[num的个位数]
百位一样操作组合起来
然后每3位加上thousand,million, billion

我觉得这个代码已经把意思写的很清楚了,好好读读代码把
debug的话不如说说哪里没有跑通?
zyj19831206 发表于 Post on 2019-9-21 16:59:19
本帖最后由 zyj19831206 于 2019-9-21 17:00 编辑
DoubeeTwT 发表于 2019-9-21 14:44
从末尾向前3个3个一拆分,每三个数用一个function转化为几百几十几,三个三个之间再加上thousand, million  ...

兄弟,你说的还是有点含糊,能否写一个伪代码,我在leetcode搜索了一段本题代码,总是运行不过去:
class Solution {
public:
        string numberToWords(int num, bool prependSpace = false) {
                static const string unit[] = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
                static const string ten[] = { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };

                string ret = "";
                if (prependSpace && num != 0) {
                        ret += " ";
                }

                if (num == 0 && !prependSpace) {
                        ret += "Zero";
                }
                else if (num < 20) {
                        ret += unit[num];
                }
                else if (num < 100) {
                        ret += ten[num / 10] + numberToWords(num % 10, true);
                }
                else if (num < 1000) {
                        ret += numberToWords(num / 100) + " Hundred" + numberToWords(num % 100, true);
                }
                else if (num < 1000000) {
                        ret += numberToWords(num / 1000) + " Thousand" + numberToWords(num % 1000, true);
                }
                else if (num < 1000000000) {
                        ret += numberToWords(num / 1000000) + " Million" + numberToWords(num % 1000000, true);
                }
                else {
                        ret += numberToWords(num / 1000000000) + " Billion" + numberToWords(num % 1000000000, true);
                }

                return ret;
        }
};
DoubeeTwT 发表于 Post on 2019-9-21 14:44:46
从末尾向前3个3个一拆分,每三个数用一个function转化为几百几十几,三个三个之间再加上thousand, million ,billion

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
我本是个娃娃 + 1 我也是这么想的(滑稽)

查看全部评分 View all ratings

highlight 发表于 Post on 2019-9-21 11:04:21
zyj19831206 发表于 2019-9-21 10:47
leetcode到底是个什么网站?

程序员用来刷面试题的,我用来抄代码的
zyj19831206 发表于 Post on 2019-9-21 10:47:18
highlight 发表于 2019-9-21 10:34
我觉得你这些题咋看着这么像 leetcode 呢
https://leetcode.com/problems/integer-to-english-words/
其 ...

leetcode到底是个什么网站?
highlight 发表于 Post on 2019-9-21 10:34:11
我觉得你这些题咋看着这么像 leetcode 呢
https://leetcode.com/problems/integer-to-english-words/
其实 discuss 里有参考答案的

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 21:51 , Processed in 0.181133 second(s), 27 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list