1. 程式人生 > >數字的翻譯(英文到中文)

數字的翻譯(英文到中文)

今天看到個帖子,感覺有點意思。。。

#include<iostream>
#include<string>
#include <vector>
using namespace std;
int get(string str);
string str1[]={"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"};
int str2[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90,100,1000,1000000}; 
int main()
{
	int sign;//標記符號  
	int sum=0,hsum=0,tsum=0,msum=0;
	char chTemp;
	string str;
	vector<int> vecValue;
	//vector<int>::iterator vecIter;
	
	while(1)//翻譯一組資料
	{
		cin>>noskipws>>chTemp;
		str+=chTemp;
		if ((str[str.length()-1]=='\n')&&(str[str.length()-2]!='\n')&&(str.length()>1))
		{
			str=str.substr(0,str.length()-1);
			string strValue;
			int iPos=str.find_first_of(' ');
			if(str.substr(0,8)=="negative")
			{
				sign=-1;
			}
			else
			{
				sign=1;
			}
			while (iPos>=0) 
			{
				strValue=str.substr(0,str.find_first_of(' '));
				str=str.substr(iPos+1,str.length()-strValue.length());
				
				if(strValue=="hundred")
				{
					hsum=sum*100;
					sum=0;
				}
				else if(strValue=="thousand")
				{
					tsum=(hsum+sum)*1000;
					hsum = 0;
					sum=0;
				}
				else if(strValue=="million")
				{
					msum=(hsum+tsum+sum)*1000000;
					hsum=tsum=0;
					sum=0;
				}
				else 
				{
					sum+=get(strValue);
				}
				
				iPos=str.find_first_of(' ');
			}
			
			if(str=="hundred")
			{
				hsum=sum*100;
				sum=0;
			}
			else if(str=="thousand")
			{
				tsum=(hsum+sum)*1000;
				hsum = 0;
				sum=0;
			}
			else if(str=="million")
			{
				msum=(hsum+tsum+sum)*1000000;
				hsum=tsum=0;
				sum=0;
			}
			else 
			{
				sum+=get(str);
			}
			
			sum+=(hsum+tsum+msum);
			sum*=sign;
			//cout<<(sign)*(sum)<<endl;//這裡是每輸入一行,就列印翻譯後的結果
			vecValue.push_back(sum);
			str.erase(str.begin(),str.end());
			sum=0;hsum=0;tsum=0;msum=0;
		}
		
      	if ((str[str.length()-1]=='\n')&&(str.length()==1))
		{
			break;
		}
	}
	for (int i=0;i<vecValue.size();i++)
	{
		cout<<vecValue[i]<<endl;//這裡是輸入所有行之後,統一列印翻譯的結果
	}

	return 0;
}
 
int get(string str)//翻譯
{
    int i;
    for(i=0;i<31;i++)
        if(str==str1[i])
            break;
		return str2[i];
}

主程式碼參考:http://topic.csdn.net/u/20120714/16/ab0b1067-08d2-4308-bc90-24d01f7d0cbd.html?seed=620712002&r=79129735#r_79129735

相關推薦

數字翻譯英文中文

今天看到個帖子,感覺有點意思。。。 #include<iostream> #include<string> #include <vector> using namespace std; int get(string str); strin

Google翻譯英文翻譯中文軟體版本V1,消除換行符影響翻譯結果

因為最近看PDF文獻較多,有時候需要將英文文獻翻譯保留檢視,但PDF複製下來的小段落會有很多換行符哇: 舉個例子,隨意複製一段英文: 然後貼上並翻譯: 有沒有發現很多換行符~~,這個操作起來就很暴躁,雖然有一些小的外掛或者有道詞典可以解決,但是這個很不習慣啊, 於是,博主

PAT (Basic Level) Practice 中文1019 數字黑洞20 分C語言

1019 數字黑洞(20 分) 給定任一個各位數字不完全相同的 4 位正整數,如果我們先把 4 個數字按非遞增排序,再按非遞減排序,然後用第 1 個數字減第 2 個數字,將得到一個新的數字。一直重複這樣做,我們很快會停在有“數字黑洞”之稱的 6174,這個神奇的數字也叫 K

PAT (Basic Level) Practice 中文1012 數字分類20 分C語言

1012 數字分類(20 分) 給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字: A​1​​ = 能被 5 整除的數字中所有偶數的和; A​2​​ = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n​1​​−n​2​​+n​3​​−n​

PAT (Basic Level) Practice 中文 1012 數字分類 20 分 C++

1012 數字分類 (20 分) 給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字: A1 = 能被 5 整除的數字中所有偶數的和; A​2 = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n1−n2+n3−n4⋯; A3 = 被 5 除後餘 2

PAT (Basic Level) Practice 中文1048 數字加密 20 分C++

1048 數字加密 (20 分) 本題要求實現一種數字加密方法。首先固定一個加密用正整數 A,對任一正整數 B,將其每 1 位數字與 A 的對應位置上的數字進行以下運算:對奇數位,對應位的數字相加後對 13 取餘——這裡用 J 代表 10、Q 代表 11、K 代表 12;對偶數位,用

數字鍵盤純js

outb htm -a 字符 cit style elements nim 實現 實現的要求: 第一位不能是0 不能同時出現兩個"." 最後一位不能是"." 只能輸入n位小數 註意:在ios中input會出現光標,可以加上

翻譯十一 ——Reading Query Plans: Stairway to SQL Server Indexes Level 9

排序效率 left 成本 asp ima 選項卡 一起 create 支持 Reading Query Plans: Stairway to SQL Server Indexes Level 9 By David Durant, 2011/10/05 原文鏈接:h

翻譯十四——通往SQL Server代理的階梯-二級:作業步驟和子系統

完成後 進入 多個 語言 實例 是我 屏幕 回顧 b+ 翻譯(十四)——通往SQL Server代理的階梯-二級:作業步驟和子系統 Richard Waymire,2017/10/11(首次出版:2011/02/17)

Core Animation 文檔翻譯 第一篇

bounds 硬件加速 ans fun per family develop ica elf       Core Animation 文檔翻譯(第一篇)    2018-01-13 星期6    前言:作為iOS 開發,官方文檔的閱讀是很有必要的,值此周末便寫下此文。

一步步教你創建自己的數字貨幣代幣進行ICO

允許 總量 ted exe init allow transfer ner 定義 本文從技術角度詳細介紹如何基於以太坊ERC20創建代幣的流程. 寫在前面 本文所講的代幣是使用以太坊智能合約創建,閱讀本文前,你應該對以太坊、智能合約有所了解,如果你還不了解,建議你先看以太坊

[Bzoj4514][Sdoi2016]數字配對費用流

-c true res turn code input mit sizeof ons 4514: [Sdoi2016]數字配對 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2204 Solved: 865

【PAT】B1012 數字分類20 分

數字 include sca pat ont 輸入 pri amp print #include<stdio.h> int arr[1005]; int main(){ int N,yu,A1,A2,flag2=1,A3,A4,A4a,A5,A5a=0;

BZOJ 1833 count 數字計數 數位DP

任重而道遠 給定兩個正整數a和b,求在[a,b]中的所有整數中,每個數碼(digit)各出現了多少次。 Input 輸入檔案中僅包含一行兩個整數a、b,含義如上所述。 Output 輸出檔案中包含一行10個整數,分別表示0-9在[a,b]中出現了多少次。 Sample Inp

編寫程式數一下 1到 100 的所有整數中出現多少次數字9C語言

#include <stdio.h> int main() { int i = 0; int count = 0; for (i = 1; i <= 100; i++) { if (i % 10 == 9) { count++; } if (i

QString 轉 string 中文

QString 轉 string (有中文) 用這種方式處理中文是有問題的toStdString()。需要採用下面的方式進行轉換。 QString str2qstr(const string str) {     return QString::fromLocal8Bit

Leetcode 129 求根到葉子節點數字之和遞迴

給定一個二叉樹,它的每個結點都存放一個 0-9 的數字,每條從根到葉子節點的路徑都代表一個數字。 例如,從根到葉子節點路徑 1->2->3 代表數字 123。 計算從根到葉子節點生成的所有數字之和。 說明: 葉子節點是指沒有子節點的節點。 示

Ts_半分查詢猜數字遊戲初始版

第一次使用半分查詢,勉強可以看 封裝函式體 int look(int arr[],int num,int r) { int left = 0; int right = 0; right = r; while (left <= right) /

ZZULIOJ.1108: 列印數字圖形函式專題

1108: 列印數字圖形(函式專題) 題目描述 從鍵盤輸入一個整數n(1≤n≤9),打印出指定的數字圖形。要求在程式中定義並呼叫如下函式:PrintSpace(m)用來輸出m個空格;PrintLine(m)來輸出一行中的數字串"12…m…21"(該行中的最大數字是m)。函式原型如下:

PTA 1012 數字分類20 分C語言

PTA 1012 數字分類(20 分)C語言 #include<stdio.h> #include<math.h> int main() { int n; scanf("%d", &n); int zs[n]; //n個整數