蛋疼的ACM
= =重庆市的ACM比赛,规模估计比不上别的市,问题是还是要培训,今天写了道蛋疼的题
Description:
计算机经常用于工资和帐号支付应用等支票写入系统。许多怪事常常出现。如每月工资支票上错误的多写一百万美元。由于人和机器的错误,使支票写入系统写出不正常数值。系统设计人员在系统中建立控制,防止发生出这种错误支票。另一个严重的问题是有些人故意改变支票金额,想窃取钱财。要防止改变支票金额,大多数支票写入系统采用支票保护(Check Protection)技术。一个常用的安全方法是写出支票金额的大写,即使支票的数字好改,大写金额也难篡改。编写一个程序,输入数字金额,输出大写金额。如112.43写成ONE HUNDRED TWELVE Dollars and 43/100。
Input:
输入数据有若干,数据范围在0.00到999.99。
Output:
对于每个数据输出其大写的英语表示。如12.45写成TWELVE Dollars and 45/100。如果是整数部分是零或一美元,则Dollar不加s。如果没有角分,则角分不用输出。
Sample Input:
0.45
34
56.89
Sample Output:
ZERO Dollar and 45/100
THIRTY FOUR Dollars
FIFTY SIX Dollars and 89/100
代码如下
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
int main(void)
{
ifstream fin("test17.txt");
ofstream fout("estdout.pc2");
bool point;
string num[] = {"ZERO","ONE","TWO","THERE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN","ELEVEN","TWELVE", "THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
string ten[] = {"TWENTY","THIRTY", "FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY"};
while (!fin.eof())
{
string number;
string integer;
string decimal;
fin >> number;
if (number == "")
break;
if (find(number.begin(),number.end(),'.' != *number.end()))
{
point = false;
for (int i = 0 ;i < number.size(); ++i)
{
if ( number[i] == '.')
{
point = true;
continue;
}
if (!point)
integer += number[i];
else
decimal += number[i];
}
}
else
{
point = false;
for (int i = 0; i < number.size(); ++i)
{
integer += number[i];
}
}
if (integer.size() == 3)
{
fout << num[integer[0] - '0'] <<' ';
if (integer[0] == '1')
fout << "HUNDRED ";
else
fout << "HUNDREDS ";
}
if (integer.size() >= 2)
{
if (integer[integer.size() - 2] > '1')
{
fout << ten[ ( integer[integer.size() - 2] - '2')] << ' ';
}
else if(integer[integer.size() - 2] == '1')
{
fout << num[10 * (integer[integer.size() - 2] - '0') + (integer[integer.size() - 1] - '0')] << ' ';
}
}
if (integer.size() == 1)
fout << num[integer[integer.size()-1] - '0']<< ' ';
if (integer.size() > 1 && integer[integer.size() - 2] != '1' && integer[integer.size() - 1] != '0')
fout << num[integer[integer.size()-1] - '0']<< ' ';
if (integer.size() == 1 && integer[integer.size()-1] <= '1')
fout << "Dollar";
else
fout << "Dollars";
if (point)
{
fout << " and ";
fout << decimal <<"/100";
}
fout << endl;
}
return 0;
}
#include <string>
#include <algorithm>
using namespace std;
int main(void)
{
ifstream fin("test17.txt");
ofstream fout("estdout.pc2");
bool point;
string num[] = {"ZERO","ONE","TWO","THERE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN","ELEVEN","TWELVE", "THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
string ten[] = {"TWENTY","THIRTY", "FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY"};
while (!fin.eof())
{
string number;
string integer;
string decimal;
fin >> number;
if (number == "")
break;
if (find(number.begin(),number.end(),'.' != *number.end()))
{
point = false;
for (int i = 0 ;i < number.size(); ++i)
{
if ( number[i] == '.')
{
point = true;
continue;
}
if (!point)
integer += number[i];
else
decimal += number[i];
}
}
else
{
point = false;
for (int i = 0; i < number.size(); ++i)
{
integer += number[i];
}
}
if (integer.size() == 3)
{
fout << num[integer[0] - '0'] <<' ';
if (integer[0] == '1')
fout << "HUNDRED ";
else
fout << "HUNDREDS ";
}
if (integer.size() >= 2)
{
if (integer[integer.size() - 2] > '1')
{
fout << ten[ ( integer[integer.size() - 2] - '2')] << ' ';
}
else if(integer[integer.size() - 2] == '1')
{
fout << num[10 * (integer[integer.size() - 2] - '0') + (integer[integer.size() - 1] - '0')] << ' ';
}
}
if (integer.size() == 1)
fout << num[integer[integer.size()-1] - '0']<< ' ';
if (integer.size() > 1 && integer[integer.size() - 2] != '1' && integer[integer.size() - 1] != '0')
fout << num[integer[integer.size()-1] - '0']<< ' ';
if (integer.size() == 1 && integer[integer.size()-1] <= '1')
fout << "Dollar";
else
fout << "Dollars";
if (point)
{
fout << " and ";
fout << decimal <<"/100";
}
fout << endl;
}
return 0;
}
坏习惯改不了了…………老是不习惯写成函数…………每次都是直接堆到主函数里= =不过我有接口,函数调用需要时间,比赛是有时限的。不过其实可以弄成内联函数的= =
posted on 2011-08-25 15:04 coder?coder! 阅读(494) 评论(0) 编辑 收藏 举报