I have tried so much but spoj is constantly giving WA . Can you help me in my code.Following is my code:
#include <bits/stdc++.h>
using namespace std;
string convertor(string s)
{
bool isjava=true,iscplusplus=true,isothercharacter=false;
if(s[0]=='_' || s[s.length()-1]=='_')
return "Error!";
for(int i=0;i<s.length();i++)
{
if((s[i]>='1' && s[i]<='9')|| (s[i]=='0'))
return "Error!";
if(s[i]!='_' && !(s[i]>='A' && s[i]<='Z') && !(s[i]>='a' || s[i]<='z') )
return "Error!";
if(i!=0 && (s[i]=='_' && s[i-1]=='_'))
return "Error!";
}
for(int i=0;i<s.length();i++)
{
if(s[i]=='_')
isjava=false;
if(s[i]>='A' && s[i]<='Z')
iscplusplus=false;
}
char arr[2*s.length()+1];
if(isjava && iscplusplus)
return s;
if(!isjava && !iscplusplus)
return "Error!";
if(isjava)
{
int i=0,j=0;
for(i=0;i<s.length();i++,j++)
{
if(s[i]>='A' && s[i]<='Z')
{
arr[j]='_';
j++;
arr[j]=s[i]+32;
}
else
arr[j]=s[i];
}
string answer;
for(int k=0;k<j;k++)
answer+=arr[k];
return answer;
}
if(iscplusplus)
{
int i=0,j=0;
char arr[s.length()];
for(int i=0;i<s.length();i++,j++)
{
if(s[i]=='_')
{
i++;
arr[j]=s[i]-32;
}
else
{
arr[j]=s[i];
}
}
string answer;
for(int k=0;k<j;k++)
answer+=arr[k];
return answer;
}
}
int main()
{
char t[105];
while(scanf("%s",t)!=EOF)
{
cout << convertor(t) << endl;
}
}