2011-06-24 10 views
2

私はこのspoj質問に答えるた:私はC++で提出をコード化 http://www.spoj.pl/problems/JAVAC/SPOJ質問 - ここで間違っていますか?

を。私はそれを下に貼り付けています。提出は一貫して間違った答えを与える。私はそれが失敗するテストケースを見つけることができません。誰か助けてくれますか?

ありがとうございました。

#include<iostream> 
#include<string> 
#include<algorithm> 

using namespace std; 

char *ans; 

bool iscapital(char c) 
{ 
    if(c >='A' && c <='Z') 
    return true; 
    else 
    return false; 
} 

string translate(string current) 
{ 
    ans = new char[2*current.length() + 1]; 
    int jflag = 0, cflag = 0,j = 0, i = 0; 

    if(iscapital(current[0])) 
    { 
    return "Error!"; 
    } 

    while(i < current.length()) 
    { 
    if(current[i] !='_') 
    { 
     if(!(current[i] >= 'A' && current[i] <= 'Z')) 
     { 
    ans[j] = current[i]; 
    i++; 
    j++; 
     } 
    } 

    if(current[i] == '_') 
    { 
     if(jflag == 1) 
    return "Error!"; 

     cflag = 1; 
     i++; 
     if(i < current.length()) 
     { 
    //convert to capital 
    if(iscapital(current[i])) 
     return "Error!"; 

    ans[j] = (char)((int)current[i] - 32); 
    i++; 
    j++; 
     } 
    } 

    if(iscapital(current[i])) 
    { 
     if(cflag == 1) 
    return "Error!"; 

     jflag = 1; 

     ans[j] = '_'; 
     j++; 
     ans[j] = (char)((int)current[i] + 32); 
     j++; 
     i++; 
    } 
    } 
    ans[j] = '\0'; 
    string ret = ans; 
    return ret; 
} 



int main() 
{ 

    string current; 

    while(cin>>current) 
    { 
    cout<<translate(current)<<endl; 
    } 
    return 0; 
} 
+1

私は通常、そのような詳細で問題を解決する方法を人々に伝えませんが、この問題の説明は実際には非常に曖昧です。がんばろう! –

答えて

5

私はそれを試していません(SPOJを使用したことはありません)が、他の無効なフォーマットがある可能性がありますか?例えば、私は今、あなたのコードをいじっています:

123asd

_asd

asd___a

、私はそれが動作させることができるかどうかを確認。がんばろう!

EDIT:合格!以下を追加してみてください。

  1. 最初または最後の文字が連続した '_年代(例えば、「a__b')がある場合は、 '_'

  2. が検出されたときにエラーを検出し

  3. 検出ここに他の文字(例えば、 'adq21#')

すべての3例は、ERRする必要がありますors。乾杯!

+0

これを指摘してくれてありがとう!問題の説明から、私はこれがチェックされていないと仮定しました。ありがとう! – Nick

関連する問題