數字的翻譯(英文到中文)
今天看到個帖子,感覺有點意思。。。
#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 個數字: A1 = 能被 5 整除的數字中所有偶數的和; A2 = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n1−n2+n3−n
PAT (Basic Level) Practice (中文) 1012 數字分類 (20 分) (C++)
1012 數字分類 (20 分) 給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字: A1 = 能被 5 整除的數字中所有偶數的和; A2 = 將被 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 的所有整數中出現多少次數字9(C語言)
#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個整數