您的位置:首页 > 其它

zoj 2476 Total Amount

2012-02-22 20:54 405 查看
/*
zoj_2476    字符串处理
简单的字符串处理,但有很多小问题需要注意,wa了数次才过。
注意点:
1.应该*100把小数点去掉,不要用double处理
2.结果小于10和100时的特判
3.不要在最前面输出','

收获:
这题用double做时导致了各种错误。。double在比较的时候不能直接比较大小,
而要用eps控制。
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <math.h>
using namespace std;

int count( string s )
{
int i;
int num=0,mul=100;
num+=( 10*( s[s.size()-2]-'0' )+( s[s.size()-1]-'0' ) ) ;
for( i=s.size()-4;i>=1;i-- )
{
if( s[i]!=',' )
{
num+=( mul*(s[i]-'0') );
mul*=10;
}
}
return num;
}

void print( string s )
{
int i,co=0;
string re="";
if( s.size()==1 )
{
re+=s[ s.size()-1 ];
re+="0.0";
}
else if( s.size()==2 )
{
re+=s[ s.size()-1 ];
re+=s[ s.size()-2 ];
re+=".0";
}
else
{
re+=s[ s.size()-1 ];
re+=s[ s.size()-2 ];
re+='.';
for( i=s.size()-3;i>=0;i-- )
{
re+=s[i];
co++;
if( co%3==0 && i!=0 )  re+=',';
}
}
re+='


; for( i=re.size()-1;i>=0;i-- ) cout<<re[i]; cout<<endl;}int main(){ int n,i,sum; string s; char temp[20]; while( cin>>n && n ) { sum=0; for( i=0;i<n;i++ ) { cin>>s; sum+=count(s); } sprintf( temp,"%d",sum ); s=""; s.append(temp); print( s ); } return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: