英语数字转换器

这篇博客介绍了如何使用C++实现一个英语数字转换器,将输入的英语单词形式的数字转换为整型表示。内容涵盖了解题思路、输入输出要求以及样例,并提到了关键的处理步骤,包括构建单词表数据结构、字符串分割和基数处理等。
摘要由CSDN通过智能技术生成

这是我在coursrea上做练习的时候碰到的一道题。原题如下:

1. 英语数字转换器

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

在这个问题中,将用英语给你一个或多个整数。你的任务是将这些数字转换成整型表示。数字范围从-999,999,999到999,999,999.下面是你的程序必须考虑的详尽的英语单词表:

negative, zero, one, two, three, four,five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen,fifteen, sixteen, seventeen, eighteen, nineteen, twenty, thirty, forty, fifty,sixty, seventy, eighty, ninety, hundred, thousand, million

输入

输入包括多个样例,注意:

1.负数前面有词negative

2.当能用thousand的时候,将不用hundred。例如1500将写为”one thousand five hundred”,而不是”fifteen hundred”.

输入将以一个空行结束

输出

输出将是每一个单独一行,每一个后面一个换行符

样例输入

six
negative seven hundred twenty nine
one million one hundred one
eight hundred fourteen thousand twenty two


样例输出

6
-729
1000101
814022

解题思路:
首先,涉及到字符和字符所对应的数字。对于不同的数字,如hundred,thousand和million表示的是基数单位类型不同。由此建立了结构体,包含字符、字符所对应的数字和字符的基数大小。这样存放单词表的数据结构就确定了。
然后,输入的是一个字符串,根据“ ”不同位置,就能把每个单词划分出来,用string自带的find函数就可以解决这个问题。根据单词,在单词表中就有对应的数字和基数类型。将找出来的数字和基数存分别存放在一维数组中。
最后,根据基数类型不同,将数组中的数字转换成long类型的数字。
ps:代码中的命名太随意,求勿喷。



#include<iostream>
#include<string>
using namespace std;
struct strCha{
    string s;
    int t;
    int i;
    strCha(string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值