2016-11-15 16 views
-1

エラーは表示されませんが、出力が正しくありません。私は何が間違っているのか分かりません。私は文字列ライブラリの関数しか使用できません。Pig Latin Program

#include <iostream> 
#include <string> 
#include <cstdlib> 


using namespace std; 



int main() { 


    string message, pig_message; 
    getline(cin, message); 

    unsigned int x = message.find_first_of("aeiou"); 
    if (message[x] == 'a' || 'e' || 'i' || 'o' || 'u') { 
     pig_message = message + "yay"; 
     cout << pig_message; 

    } 
    else if (!(message[x] == 'a' || 'e' || 'i' || 'o' || 'u')) { 
     pig_message = message.substr(1) + message[0] + "ay"; 
     cout << pig_message; 
    } 



    system("pause"); 
    return 0; 
} 
+0

http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Biffen

+3

'message [x] == 'a' || 'e' || '私' || 'o' || 'あなたはそれが意味することを意味するものではありません。 – Biffen

+1

これは 'if(message [x] == 'a' ||メッセージ[x] == 'e' || ...){'である必要があります。 – songyuanyao

答えて

0

比較文が正しくありません。 関数が実際に文字を繰り返し処理していることと、文字列を正しく連結していることを確認してください。

So: unsigned int x = message.find_first_of( "aeiou"); //最初の一致を返します if(message [x] == 'a' || message [x] == 'e' ...)//現在、あなたのコードはaのチェックのみとして読み込まれます。私は、メッセージが[X] = 対 場合場合、それの

と思いますが、メッセージが[x]は、IF Eを=としてのIF、IFメッセージ[X] = I

あなたのコードがない何それの後マッチを見つける? pig_message = message + 'yay'はメッセージ文字列全体に「yay」を追加します。 それはそれを印刷し、他の母音に何もせずに移動します。

私はC++を初めて使っていますが、これがあなたのコードを理解した方法です。

ループ内に文字列を追加するには、if文でforループ内の入力文字列全体を一度に1文字ずつ調べる方がよい場合があります。

+0

あなたの答えを詳述してください。 – Mistalis

0

最初のif文は常にtrueです。あなたは文が成立しない場合には、毎回最初に実行したい場合は、あなただけの

else { 

else if (...) {ラインを変更することができ、また

if (message[x] == 'a' || message[x] == 'e' || message[x] == 'i' || message[x] == 'o' || message[x] == 'u') { 

にそれを変更する必要があります。