| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么我的程序老通不过?一直RE/WA?我在devc++上运行正确啊 Problem 2121// it appears to be right in my dev c++
#include <iostream>
#include <string>
using namespace std;
char *keywords[32]={
"zero","one","two","three","four","five","six","seven","eight","nine",//0-9
"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen",//10-19
"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety",//20-27
"hundred","thousand","million","negative"//28-31
};
int mean(char *src)
{
for(int i=0;i<32;++i)
{
if(!strcmp(src,keywords[i]))
return(i);
}
return(32);
}
void parse(char *src)
{
char temp[15];
char *t=temp;
char *p=src;
bool error=false;
int result[20];//store meaned value
int counter=0;//use for result
long value=0;//temp value
long final=0;//final value
bool negativeflag=false;
while('\0'!=*p)
{
if( ' '==*p )
{//string termal
*t='\0';
result[counter]=mean(temp);
t=temp;
++counter;
}
else
{
*t=*p;
++t;
}
++p;
}
//last one
*t='\0';
result[counter]=mean(temp);
t=temp;
++counter;
///////////
for(int i=0;i<counter;++i)
{
if(result[i]<20)//0-19
{
value+=result[i];
}
else if(result[i]<28)//20,30,40,50,60,70,80,90(20-27)
{
value+=(result[i]-18)*10;
}
else if(28==result[i])//hundred
{
value*=100;
}
else if(29==result[i])//thousand.termal
{
value*=1000;
final+=value;
value=0;
}
else if(30==result[i])//million.termal
{
value*=1000000;
final+=value;
value=0;
}
else if(31==result[i])//negative
{
negativeflag=true;
}
else//parse error
{
error=true;
}
}
//last one:
final+=value;
if(negativeflag)
final*=-1;
if(!error)
cout<<final<<endl;
}
int main()
{
char *str[100];
int n=0;
str[n]=new char[150];
do
{
str[n]=new char[150];
cin.getline(str[n],150);
++n;
}
while(strcmp("\0",str[n-1]));
for(int i=0;i<(n-1);++i)
{
parse(str[i]);
}
//system("pause");
for(int i=0;i<n;++i)
{
delete[] str[i];
}
return(0);
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator