C和指针第七章written_amount C++实现
来源:互联网 发布:mac新系统 编辑:程序博客网 时间:2024/05/17 22:46
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <string>
using namespace std;
typedef vector<unsigned int> UIntVector;
static char *digits[] = {
"", "ONE ", "TWO ", "THREE ", "FOUR ", "FIVE ", "SIX ", "SEVEN ",
"EIGHT ", "NINE ", "TEN ", "ELEVEN ", "TWELVE ", "THIRTEEN ",
"FOURTEEN ", "FIFTEEN ", "SEXTEEN ", "SEVENTEEN ", "EIGHTEEN ",
"NINETEEN "
};
static char *tens[] = {
"", "", "TWENTY ", "THIRTY ", "FORTY ", "FIFTY ", "SIXTY ", "SEVENTY ",
"EIGHTY ", "NINETY "
};
static char *magnitudes[] = {
"", "THOUSAND ", "MILLION ","BILLION "
};
void print_hundred(unsigned int hundreds, string &buffer)
{
if (hundreds > 99)
{
buffer.append(digits[hundreds/100]);
buffer.append("HUNDRED ");
}
hundreds %= 100;
if (hundreds > 19)
{
buffer.append(tens[hundreds/10]);
hundreds %= 10;
buffer.append(digits[hundreds]);
}
else
{
buffer.append(digits[hundreds]);
}
}
void written_amount(unsigned int amount, string &buffer)
{
if (amount == 0)
{
buffer.append("ZERO");
return;
}
UIntVector blocks;
blocks.reserve(4); // the greatest unsigned integer can be divided into 4 blocks
unsigned int value = amount;
while (value > 0)
{
unsigned int tmp = value%1000;
blocks.push_back(tmp);
value /= 1000;
}
size_t blocks_size = blocks.size();
for(UIntVector::reverse_iterator rIt = blocks.rbegin(); rIt != blocks.rend(); ++rIt, blocks_size--)
{
if (*rIt > 0)
{
print_hundred(*rIt, buffer);
buffer.append(magnitudes[blocks_size-1]);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int myAmount = 16312;
std::string buffer;
written_amount(myAmount, buffer);
cout << buffer << endl;
getchar();
return 0;
}
#include <vector>
#include <iostream>
#include <string>
using namespace std;
typedef vector<unsigned int> UIntVector;
static char *digits[] = {
"", "ONE ", "TWO ", "THREE ", "FOUR ", "FIVE ", "SIX ", "SEVEN ",
"EIGHT ", "NINE ", "TEN ", "ELEVEN ", "TWELVE ", "THIRTEEN ",
"FOURTEEN ", "FIFTEEN ", "SEXTEEN ", "SEVENTEEN ", "EIGHTEEN ",
"NINETEEN "
};
static char *tens[] = {
"", "", "TWENTY ", "THIRTY ", "FORTY ", "FIFTY ", "SIXTY ", "SEVENTY ",
"EIGHTY ", "NINETY "
};
static char *magnitudes[] = {
"", "THOUSAND ", "MILLION ","BILLION "
};
void print_hundred(unsigned int hundreds, string &buffer)
{
if (hundreds > 99)
{
buffer.append(digits[hundreds/100]);
buffer.append("HUNDRED ");
}
hundreds %= 100;
if (hundreds > 19)
{
buffer.append(tens[hundreds/10]);
hundreds %= 10;
buffer.append(digits[hundreds]);
}
else
{
buffer.append(digits[hundreds]);
}
}
void written_amount(unsigned int amount, string &buffer)
{
if (amount == 0)
{
buffer.append("ZERO");
return;
}
UIntVector blocks;
blocks.reserve(4); // the greatest unsigned integer can be divided into 4 blocks
unsigned int value = amount;
while (value > 0)
{
unsigned int tmp = value%1000;
blocks.push_back(tmp);
value /= 1000;
}
size_t blocks_size = blocks.size();
for(UIntVector::reverse_iterator rIt = blocks.rbegin(); rIt != blocks.rend(); ++rIt, blocks_size--)
{
if (*rIt > 0)
{
print_hundred(*rIt, buffer);
buffer.append(magnitudes[blocks_size-1]);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int myAmount = 16312;
std::string buffer;
written_amount(myAmount, buffer);
cout << buffer << endl;
getchar();
return 0;
}
0 0
- C和指针第七章written_amount C++实现
- c 和 指针 第七章
- c 和 指针 第七章
- C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
- C和指针(第七章--函数)
- 第七章 指针和C字符串
- 《C和指针》第七章 函数
- C和指针读书笔记(第七章)
- C和指针 第七章笔记
- 第七章 C++/C指针.数组和字符串
- C和指针第七章——函数
- C和指针的复习系列一:第一章~第七章
- C和指针课后习题(第七章)
- C和指针第七章的两个题
- c语言教程 第七章 指针
- 【笔记】C与指针 第七章 函数
- 第五章 操作符和表达式 第六章 指针第七章 函数[C和指针]
- 【C】【笔记】《C和指针》 第六章 指针 第七章 函数 第八章 数组 第九章 字符串、字符和字节
- ssl连接客户端报缺少证书错误解决方式
- Manacher算法--O(n)回文子串算法 .
- 玩转Linux之内存管理-free
- 常见设计模式—单例模式/代理模式/责任链模式
- 使用ZXing工具类生成和解析二维码
- C和指针第七章written_amount C++实现
- python log文档
- iOS 引入支付宝 缺少 #include <openssl/asn1.h>
- 【Javaweb】网页表单调试中后退的大忌
- 文章标题Eigen的矩阵运算使用
- 产品背后不可靠的数字
- Java中的10颗语法糖
- 线程理解之yield方法
- java collection