将数字转换成文字
此算法将给定的数字转换成英文单词。例如,564 将转换为 Five Hundred and Sixty-Four(五百六十四)。
对于此算法,会提供一些预定义的字符串;它将从该列表中获取适用的单词以形成单词。
列表如下
- Units:它将包含从(0 到 9)的所有单词,例如 Zero、One……Nine(零、一……九)
- twoDigits:它将包含从(10 到 19)的所有数字,例如 Ten、eleven…Nineteen(十、十一……十九)
- tenMul:用于十倍数(20-90),例如 Twenty、Thirty、 … Ninety(二十、三十、…九十)。
- tenPower:用于百和千,分别为 10 的 2 次方和 3 次方
输入和输出
Input: The number: 568 Output: Five Hundred And Sixty Eight
算法
numToWord(num)
有一些列表保存各整数的单词
输入:数字。
输出:以单词表示数字。
Begin if n >= 0 and n < 10, then display units(n) into words else if n >= 10 and n < 20, then display twoDigitNum(n) into words //It is from ten to nineteen else if n >= 20 and n <100, then display tensMultiple(n/10), into words if n mod 10 ≠ 0, then numToWord(n mod 10) else if n >= 100 and n < 1000, then display units(n/100), into words display “Hundred”, into words //Hundred if n mod 100 ≠ 0, then display “And” numToWord(n mod 100) else if n >= 1000 and n <= 32767, then numToWord(n/1000) display “Thousand” if n mod 1000 ≠ 0, then numToWord(n mod 1000) else display invalid number and exit End
示例
#include<iostream>
using namespace std;
string getUnit(int n) {
//Return single digit to word
string unit[10] = {"Zero", "One","Two", "Three","Four","Five", "Six","Seven","Eight","Nine"};
return unit[n];
}
string getTwoDigits(int n) {
//Here n is 2 digit number
string td[10] = {"Ten", "Eleven","Twelve","Thirteen", "Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};
return td[n%10];
}
string getTenMul(int n) {
//Here n is multiple of 10
string tm[8] = {"Twenty", "Thirty","Fourty", "Fifty","Sixty", "Seventy","Eighty","Ninty"};
return tm[n-2];
}
string getTenPow(int pow) {
//The power of ten in words
string power[2] = {"Hundred", "Thousand"};
return power[pow-2];
}
void printNumToWord(int n) {
if(n >= 0 && n < 10)
cout << getUnit(n) << " "; //Unit values to word
else if(n >= 10 && n < 20)
cout << getTwoDigits(n) << " "; //from eleven to nineteen
else if(n >= 20 && n < 100) {
cout << getTenMul(n/10)<<" ";
if(n%10 != 0)
printNumToWord(n%10); //Recursive call to convert num to word
}else if(n >= 100 && n < 1000) {
cout << getUnit(n/100)<<" ";
cout <<getTenPow(2) << " ";
if(n%100 != 0) {
cout << "And ";
printNumToWord(n%100);
}
}else if(n >= 1000 && n <= 32767) {
printNumToWord(n/1000);
cout <<getTenPow(3)<<" ";
if(n%1000 != 0)
printNumToWord(n%1000);
}else
printf("Invalid Input");
}
main() {
int number;
cout << "Enter a number between 0 to 32767: "; cin >> number;
printNumToWord(number);
}输出
Enter a number between 0 to 32767: 568 Five Hundred And Sixty Eight
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言
C++
C#
MongoDB
MySQL
Javascript
PHP