英语数字转换器

article/2025/9/18 3:47:47

英语数字转换器

STL中map,stack和string的运用

描述:

在这个问题中,将用英语给你一个或多个整数。你的任务是将这些数字转换成整型表示。数字范围从-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

#include<iostream>//c++的头文件
#include<map>//STL中map的头文件
#include<string>//string的头文件
#include<stack>//STL中stack的头文件
#define N 10000
using namespace std;
map<string, int>m;//创建一个map
stack<int>zb;//建一个栈
void creatmap();//建map的映射构建起来
int ctoi(int* data, int n);//将data数组中的数字变成一个目标数字
int main()//主函数
{creatmap();string s;int data[N] = { 0 };while (getline(cin, s)) {//读入一行的英文string str;int way = 0;//记录data数组的当前长度int now = 0;//记录被截的字母的尾部下标int front = 0;//记录被截字母的头部下标int i = 0;int d = 0;//第一个字母前面没有空格,需要区分一下截的是第几个字母for (i = 0; i <= s.size(); i++) {if (s[i] == ' ') {now = i;if (!d) str = s.substr(front, now);//将代表相关数字的英文一段一段的截下来else str = s.substr(front+1, now-front-1);data[way++] = m[str];//用映射将英文转换为数字保存在data数组中d++;}front = now;}if (!d)str = s.substr(front, i);//最后一个英文单词没有在循环中处理,必须循环出来补上处理else str = s.substr(front + 1, i-front-1);data[way++] = m[str];int aim = ctoi(data, way);//进入数据合成的函数cout << aim << endl;//输出合成好的数字}return 0;
}
void creatmap()//建需要的映射构建好
{m["zero"] = 0;m["one"] = 1;m["two"] = 2;m["three"] = 3;m["four"] = 4;m["five"] = 5;m["six"] = 6;m["seven"] = 7;m["eight"] = 8;m["nine"] = 9;m["ten"] = 10;m["eleven"] = 11;m["twelve"] = 12;m["thirteen"] = 13;m["fourteen"] = 14;m["fifteen"] = 15;m["sixteen"] = 16;m["seventeen"] = 17;m["eighteen"] = 18;m["nineteen"] = 19;m["twenty"] = 20;m["thirty"] = 30;m["forty"] = 40;m["fifty"] = 50;m["sixty"] = 60;m["seventy"] = 70;m["eighty"] = 80;m["ninety"] = 90;m["hundred"] = 100;m["thousand"] = 1000;m["million"] = 1000000;m["negative"] = -1;
}
int ctoi(int* data, int n)
{int i = 0;int sum = 0;int flag = 1;//判断这个数字是不是负数if (data[0] == -1) {flag = -1;zb.push(data[1]);//将第一个数据入栈i = 2;}else {zb.push(data[0]);//将第一个数据入栈i = 1;}for (i; i < n; i++) {//循环入栈,出栈sum = 0;if (data[i] >= 100) {//如果该数据大于等于100,需要区分while (zb.size()&&zb.top() < data[i]) {sum += zb.top();zb.pop();}zb.push(sum * data[i]);}else {//小于100直接入栈,等待data的下一个大于100的数进行处理zb.push(data[i]);}}sum = 0;while (zb.size()) {//将栈里面的所有数据加起来得到需要的最终结果sum += zb.top();zb.pop();}return sum * flag;
}

对于int ctoi(int* data, int n)的函数,下面用图的形式描述一下
拿 (eight hundred fourteen thousand twenty two 814022)来举例
1.data数组中的内容
在这里插入图片描述
因为8和14小于100,所以直接入栈。在这里插入图片描述
而下一个的1000大于100,要进行while循环
在这里插入图片描述

将8和14从栈中pop出来,然后将sum的值入栈
在这里插入图片描述
接下来的20和2都小于100;
依次的入栈
在这里插入图片描述
最后的最后,将栈中的所有数据相加求出的结果就是需要的

因为该题题目过期了,不知道能不能完全过测试点,如果发现不对的地方,请在评论区告诉我,谢谢


http://chatgpt.dhexx.cn/article/cjn6f4xt.shtml

相关文章

Unity 中英文转换

在Resources下创建文件夹LanguageTxt&#xff0c;再其创建“Chinese.txt”及“English.txt”&#xff08;记得保存文本时选择UTF-8&#xff09; Chinese.txt Btn:这是一个按钮 English.txt Btn:This is a button 在Scripts下创建“LanguageManager.cs”及“UIText.cs” L…

SAP中英文转换--中文转英文

中文转英文-函数&#xff1a;CONVERSION_EXIT_CUNIT_INPUT CALL FUNCTION ‘CONVERSION_EXIT_CUNIT_INPUT’ EXPORTING input “输入的中文单位 IMPORTING output “输出的英文单位 效果图&#xff1a;

SAP 中英文转换-英转中

英文转中文-函数&#xff1a;CONVERSION_EXIT_CUNIT_OUTPUT CALL FUNCTION ‘CONVERSION_EXIT_CUNIT_OUTPUT’ EXPORTING input “输入的英文单位 IMPORTING output “输出的中文单位

将数字转换为中文

功能需求 做公司项目遇到一个有关交易金额&#xff08;合同签订书&#xff09;的内容&#xff0c;需要将查询出来的交易金额转化为中文数字&#xff0c;例如&#xff1a;壹拾捌万伍仟元整&#xff08;185000.00&#xff09; 需求分析 因为合同书中的数据都是动态的&#xff0c…

Java 16进制报文转换中英文报文(通过字节转换)

最近在搞这个16进制报文,网上找了很多地方&#xff0c;解出来的结果不是乱码就是报错&#xff0c;干脆自己写了。 大概是这样的&#xff0c;16进制的报文大家都知道是什么样子 例如: 3C E4 BA A4 E6 98 93 E6 88 90 E5 8A 9F EF BC 81 3E 20 3C 42 61 6B 31 2F 3E 因为其中包…

通过C#进行中英文转换

通过C#进行中英文转换 编写相应语言的XML文件&#xff0c;添加xml文件 ChineseSimplified.xml文件内容 <?xml version"1.0" encoding"GB2312" ?> <Softimite Language"12"><Form><Name>LoginForm</Name><…

【Adobe After Effects中英文转换2019——2023版】

** Adobe After Effects中英文转换2019——2023版 ** 如果是默认安装的软件&#xff0c;在桌面右击AE图标&#xff0c;点击打开文件所在位置&#xff0c;来到软件安装目录 C:\Program Files\Adobe\Adobe After Effects 2023\Support Files 找到AMT文件夹 点击进入&#xf…

在线中英文符号转换工具

在线中英文符号转换工具 在线中英文符号转换工具 将中文符号转换成英文符号或将英文符号转换成中文符号&#xff0c; 将单引号‘’都转换成’&#xff0c; 将双引号“”都转换成" 将中括号【】转换成[]&#xff0c; 将大括号&#xff5b;&#xff5d;转换成{} 将逗号&…

英文表格如何快速转换为中文?

今天跟大家分享一下英文表格如何快速转换为中文&#xff1f; 1.首先打开Excel文件&#xff0c;选中要翻译的单元格&#xff0c;点击【DIY工具箱】 ​ 2.点击【翻译】 3.选择【有道翻译】 4.将翻译语言设置为中文&#xff0c;然后点击【确定】 5.鼠标点击一个合适的单元格作为翻…

英文转换-在线英文批量转换器免费

英文转换&#xff0c;怎么找到好的英文转换器&#xff1f;今天给大家分享一款免费批量的英文转换器汇集了世界最好的几个翻译平台&#xff08;百度/谷歌/有道&#xff09;&#xff0c;为什么这么多人使用它&#xff1f;首先第一点翻译质量高&#xff0c;选择性多。第二点可以批…

php 英文转中文,中文转换成英文

[php]代码库/** * 中文转换成英文 */ function pinyin($_String, $_Codegb2312){ $_DataKey "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha". "|chai|chan|chang|chao|che|chen|cheng|c…

C#小知识之中英文转换、去空格

一、中英文转换 1、安装NPinYin 2、编写代码 string str "这里是测试的中文字符串"; string str1 Pinyin.GetChineseText(str); string str2 Pinyin.GetInitials(str); string str3 Pinyin.GetPinyin(str);Console.WriteLine("取和拼音相同的汉字列表&…

Qt 语言家实现中英文切换(解决纯代码添加部件的中英文转换问题)

Qt 语言家实现中英文切换&#xff08;解决纯代码添加部件的中英文转换问题&#xff09; 关于.ts和.qm文件的生成&#xff0c;更新翻译、发布翻译等步骤就不多说了&#xff0c;其他博主有大量的描述。 现在我要解决的是中英文未完全转换的问题如下图&#xff1a; 如上图所示&a…

系统的学习网络编程,这篇就够了!(来收藏夹里吃灰)

主机字节序和网络字节序&#xff1a; 在32位机器上&#xff0c;累加器一次能装载4个字节&#xff0c;这四个字节在内存中排列顺序将影响它被累加器装载成的整数的值 大端字节序&#xff08;网络字节序&#xff09;&#xff1a;一个整数的高位字节存储在内存的低地址处 小端字节…

玩转RT-Thread之荔枝派Nano(全志F1C100S) 新手上路

玩转RT-Thread之荔枝派Nano(全志F1C100S) 一、新手上路 --作者&#xff1a;燕十三(flyingcys) blog:http://blog.csdn.net/flyingcys --荔枝派nano/RTT非官方群&#xff1a;711174828 在此感谢 RT-Thread官方成员uestczyh222提供的荔枝派Nano内核移植、rttbootloader文件、…

技术杂谈-再谈软硬SDN(2)

以下文章来源于微信公众号&#xff1a;网络里卖艺的小青年 &#xff0c;作者我就是那个KK 不好意思&#xff0c;本文有点长&#xff0c;需要阅读10-15分钟。 上一篇文章得到了很多朋友的反馈&#xff0c;软硬SDN各自有各自的优势和特点&#xff0c;对于之前的文字&#xff0c;…

技术杂谈-再谈软硬SDN(1)

以下文章来源于微信公众号&#xff1a;网络里卖艺的小青年 &#xff0c;作者KkBLuE 我曾在SDNLAB和TF中文社区联合举办的直播活动上做了一次分享&#xff0c;讨论到软件SDN和硬件SDN的话题&#xff0c;巧合的是&#xff0c;看到国内大牛厂家也在讨论软硬之路&#xff0c;于是就…

展示一下香蕉派路由Android系统

没什么好说的&#xff0c;第一版的系统&#xff0c;Android部分还可以&#xff0c;路由设置确实有闪退现象。等稳定版发布&#xff0c;可以把机顶盒和路由二合一&#xff0c;再接个SSD&#xff0c;还是很不错的。 硬件 开机 桌面 安卓程序 安卓设置 可以打开USB调试&#xff0…

网络收集的逻辑思维题

一个有意思的逻辑训练题目 题目如下&#xff1a; 有两个大于1小于100的自然数x,y&#xff0c;老师告诉小明两个数的和&#xff0c;告诉小强两个数的积。已知小明和小强足够聪明。 下面是两个人的对话&#xff1a; 小强&#xff1a;我不知道这两个数是多少。&#xff08;<沉默…

物联网技术之PLC

大家好&#xff0c;欢迎关注技福小咖。今天给大家讲讲物联网技术中的PLC。 可编程逻辑控制器(PLC) 几乎存在于所有现代工业中。尽管它们有多种形状和形式&#xff0c;但它们有一个目标&#xff1a;在复杂的工业应用中实时控制、测量和执行任务。 几十年来&#xff0c;PLC一直…