2016-09-03 3 views
0
#include "stdafx.h" 
#include <iostream> 
#include <string> 

void WorldBuilder(); 
bool Acceptor(); 

int main() 
{ 
bool IsAcceptable = (false); 

while (IsAcceptable == (false)) 
    { 
     WorldBuilder(); // build world 
      IsAcceptable = Acceptor(); 
    } 
    return 0; 
} 

// Builds the world 
void WorldBuilder() 
{ 
std::cout << "Building World...\n"; 
return; 
} 

bool Acceptor() 
    { 
     std::cout << "Is world build acceptable? (y/n) "; 
     std::string qIsAcceptable = ""; 
     std::cin >> qIsAcceptable; 

if (qIsAcceptable[1] == 'y') 
    { 
     return (true); 
    } 
else if (qIsAcceptable[1] == 'n') 
    { 
     return (false); 
    } 

} 

私がデバッグすると、IsAcceptableブール値を変更せずにelsesからWorldBuilder()に戻り、ブール値がtrueの場合はtrueに戻ります。私はブール値のアクセプタに問題があります

ブーリアンについてはわからないことがあるように感じます。

+0

デバッガまたはcoutステートメントを使用して、コード内の変数の値を表示することをお勧めします。 –

答えて

1

変更:

if (qIsAcceptable[1] == 'y') 
    { 
     return (true); 
    } 
else if (qIsAcceptable[1] == 'n') 
    { 
     return (false); 
    } 

if (qIsAcceptable[0] == 'y') 
    { 
     return (true); 
    } 
else if (qIsAcceptable[0] == 'n') 
    { 
     return (false); 
    } 

C/C++の配列算術演算0、ない1から始まります。この機能で

+0

ニース。本当に基本的なものがあることは分かっていましたが、それが何であるかは分かりませんでした。助けてくれてありがとう。 –

+0

@BrendanSleanbeck問題ありません! –

0

bool Acceptor() 
{ 
    std::cout << "Is world build acceptable? (y/n) "; 
    std::string qIsAcceptable = ""; 
    std::cin >> qIsAcceptable; 

    if (qIsAcceptable[1] == 'y') 
    { 
     return (true); 
    } 
    else if (qIsAcceptable[1] == 'n') 
    { 
     return (false); 
    } 

} 

あなたは文字に間違った方法をチェックしています。配列のサブスクリプティングは1ではなく0で始まります。あなたのコードは次のようになります。また

#include <cctype> 
//.... 
bool Acceptor() 
{ 
    std::cout << "Is world build acceptable? (y/n) "; 
    char qIsAcceptable = 'b'; 
    std::cin >> qIsAcceptable; 

    if (std::tolower(qIsAcceptable) == 'y') 
    { 
     return true; 
    } 
    else if (std::tolower(qIsAcceptable) == 'n') 
    { 
     return false; 
    } 

} 

、あなたが気づいた場合、私は(true)(false)の周りに括弧を削除しました。それらは必要ないので、削除する必要があります。私は自分のコードに変更を加えました。あなたが望めばそれを見ることができます。 1つは、ユーザー入力をcharに変換し、次にstd::tolowerを使用してすべての可能性をチェックします。上記を参照。

+0

なぜ私の答えにdownvote? –

+0

ここにエラッタがある場合は、気をつけてください! –

関連する問題