100分求将阿拉伯数字转化为大写数字的类

xyr1981 2003-10-18 11:47:43
吃过中饭结贴!
...全文
38 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyr1981 2003-10-18
  • 打赏
  • 举报
回复
合用!Thanks
taogx 2003-10-18
  • 打赏
  • 举报
回复
我从VCKbase上面的来的
CgStrtoCnUpper.h
// CgStrtoCnUpper.h: interface for the CCgStrtoCnUpper class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CGSTRTOCNUPPER_H__6C016E06_DDAE_11D7_A10E_CAEB62ABF026__INCLUDED_)
#define AFX_CGSTRTOCNUPPER_H__6C016E06_DDAE_11D7_A10E_CAEB62ABF026__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <string>
#include <iostream>
using namespace std;

class CCgStrtoCnUpper
{
public:
void CreateOutputString();
void SeperateOriginString();
bool ExaminateOrigin();
CCgStrtoCnUpper(string strInput);
virtual ~CCgStrtoCnUpper();
bool CanBeCg()
{
return m_bCgable;
};
string GetOutputString()
{
return m_strOutput;
};
private:
string GetCnWeishu(int nInput);
string GetCnUpper(string strInput);
bool ExaminateDotCount();
string TrimSpace(string strInput);
bool ExaminateOneChar(string strInput);
string m_strOrigin;
string m_strFirst;
string m_strSecond;
bool m_bCgable;
string m_strOutput;
};

#endif // !defined(AFX_CGSTRTOCNUPPER_H__6C016E06_DDAE_11D7_A10E_CAEB62ABF026__INCLUDED_)


CgStrtoCnUpper.cpp
// CgStrtoCnUpper.cpp: implementation of the CCgStrtoCnUpper class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CgStrtoCnUpper.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCgStrtoCnUpper::CCgStrtoCnUpper(string strInput)
{
m_strOrigin=TrimSpace(strInput);
m_bCgable=true;
m_bCgable=ExaminateDotCount()*ExaminateOrigin();
SeperateOriginString();
m_strOutput="";
CreateOutputString();
}

CCgStrtoCnUpper::~CCgStrtoCnUpper()
{

}

bool CCgStrtoCnUpper::ExaminateOrigin()
{
bool bRetval=true;
int n=m_strOrigin.length();
string strtmp;
for(int i=0;i<n;i++)
{
strtmp=m_strOrigin.at(i);
bRetval*=ExaminateOneChar(strtmp);
}
return bRetval;
}

bool CCgStrtoCnUpper::ExaminateOneChar(string strInput)
{
if(strInput=="0") return true;
if(strInput=="1") return true;
if(strInput=="2") return true;
if(strInput=="3") return true;
if(strInput=="4") return true;
if(strInput=="5") return true;
if(strInput=="6") return true;
if(strInput=="7") return true;
if(strInput=="8") return true;
if(strInput=="9") return true;
if(strInput==".") return true;
return false;
}

string CCgStrtoCnUpper::TrimSpace(string strInput)
{
string strretval="";
string strtmp;
int n=strInput.length();
for(int i=0;i<n;i++)
{
strtmp=strInput.at(i);
if(strtmp!=" " && strtmp!=",")
{
strretval+=strtmp;
}
}

return strretval;
}

void CCgStrtoCnUpper::SeperateOriginString()
{
if(!m_bCgable)
return;

int i;
int n=m_strOrigin.length();
i=m_strOrigin.find_first_of(".",0);

if(i!=-1)
{
m_strFirst=m_strOrigin.substr(0,i);
m_strSecond=m_strOrigin.substr(i+1,n-1-i);
}
else
{
m_strFirst=m_strOrigin;
m_strSecond="";
}
}

bool CCgStrtoCnUpper::ExaminateDotCount()
{
int n=m_strOrigin.length();
string strtmp;
int DotCount=0;
for(int i=0;i<n;i++)
{
strtmp=m_strOrigin.at(i);
if(strtmp==".")
{
DotCount++;
}
}

if(DotCount<2)
return true;
else
return false;
}

void CCgStrtoCnUpper::CreateOutputString()
{
int i,n;
//1
n=m_strFirst.length();
string strtmp;
for(i=0;i<n;i++)
{
strtmp=m_strFirst.at(i);

if(GetCnUpper(strtmp)!="零")
{
m_strOutput+=GetCnUpper(strtmp);
m_strOutput+=GetCnWeishu(n-i-1);
}
}

if(m_strSecond=="")
{
m_strOutput+="圆整";
return;
}
m_strOutput+="点";

//2
n=m_strSecond.length();
for(i=0;i<n;i++)
{
strtmp=m_strSecond.at(i);
m_strOutput+=GetCnUpper(strtmp);
}
}

string CCgStrtoCnUpper::GetCnUpper(string strInput)
{
if(strInput=="0") return "零";
if(strInput=="1") return "壹";
if(strInput=="2") return "贰";
if(strInput=="3") return "叁";
if(strInput=="4") return "肆";
if(strInput=="5") return "伍";
if(strInput=="6") return "陆";
if(strInput=="7") return "柒";
if(strInput=="8") return "捌";
if(strInput=="9") return "玖";
return "";
}

string CCgStrtoCnUpper::GetCnWeishu(int nInput)
{
if(nInput==0) return "";
if(nInput==1) return "拾";
if(nInput==2) return "佰";
if(nInput==3) return "仟";
if(nInput==4) return "萬";

if(nInput<8 && nInput>4)
{
return (GetCnWeishu(nInput-4)+"萬");
}

if(nInput==8) return "亿";

if(nInput>8)
{
return (GetCnWeishu(nInput-8)+"亿");
}
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧