| ||||||||||
| 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 | |||||||||
3157読解ミス、それともポカミス?なぜか解けません。http://poj.org/problem?id=3157
コードのおかしな部分をご指摘だください。
#include<stdio.h>
#include<string>
#include<iostream>
bool cChange(const std::string& name,std::string& ans){
int p=0,i=0;
ans=name;
if(name.substr(0,2)=="c_"){
ans.erase(0,1);
ans="java"+ans;
p=4;
i=1;
}
for(;i<name.size();i++){
if('A'<=name[i] && name[i]<='Z'){
return false;
}else if(name[i]=='_'&&name[i+1]=='_'){
return false;
}else if(name[i]=='_' && 'a'<=name[i+1] && name[i+1]<='z'){
ans[p]=name[i+1]-'a'+'A';
i++;
}else{
ans[p]=name[i];
}
p++;
}
char last=name[name.size()-1];
if(!('a'<=last && last<='z')||!('a'<=name[0]&&name[0]<='z'))return false;
ans[p]='\0';
return true;
}
bool javaChange(const std::string name,std::string& ans){
ans="";
int i=0;
if(name.substr(0,4)=="java"){
i=4;
ans="c_";
}
for(;i<name.size();i++){
if(name[i]=='_' || (i==0 && !('a'<=name[0]&&name[0]<='z'))){
return false;
}else if('A'<=name[i]&&name[i]<='Z'){
ans.append("_");
ans+=(name[i]-'A'+'a');
}else{
ans+=name[i];
}
}
return true;
}
int main(){
std::string d,no,name,ans;
while(!std::cin.eof()){
std::cin>>no;
if(std::cin.eof()) break;
std::cin>>d>>no;
std::getline(std::cin,name);
//std::cout<<"("<<name<<")\n";
std::cout<<"sample output "<<no<<"\n";
if(cChange(name,ans)){
printf("%s\n",ans.c_str());
}else if(javaChange(name,ans)){
printf("%s\n",ans.c_str());
}else{
printf("Error!\n");
}
std::getline(std::cin,no);
if(std::cin.eof()) break;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator