Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

3157読解ミス、それともポカミス?なぜか解けません。

Posted by sinapusu2002 at 2011-12-12 15:17:16
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator