2013-10-02 3 views
0

Я новичок на C++, и я действительно застрял в этой проблеме: Когда пользователь вводит 2 номера EX: 1 и 2, чем код должен выяснить, первая цифра терма или не из первого, проблема заключается в том, что код не приносит истинный или ложный текст в качестве текста:/ (0 = false 1 = true)Как вернуть функцию true или false

Код здесь:

#include <iostream> 

/* run this program using the console pauser or add your own getch, system("pause") or input loop */ 

bool GraterFunct(int num1, int num2); 

int main(int argc, char** argv) 

{ 
    std::cout <<" \n Hello there! This is a test to test how good you are with math. \n "; 
    std::cout <<" Now enter G or L (Grater, less) to know if a number is grater or less than the number you choose \n "; 
    char answer [1]; 
    std::cin >> answer; 

    if(answer == "G" || "g") 
    { 
     int number1; 
     int number2; 
     std::cout << "You selected: Grater than, \n"; 
     std::cout << "Now type 2 numbers and see which one is grater than the other one. \n" << std::endl; 
     std::cin >> number1; 
     std::cout << "Your first number: " << number1 << std::endl; 
     std::cout << "Select your second number \n"; 
     std::cin >> number2; 
     std::cout << "The answer is: " << GraterFunct(number1, number2); 
    } 

    return 0; 
} 

bool GraterFunct(int num1, int num2) 
{ 
    if(num1 >= num2) 
    { 
     { 
      return true; 
     } 
    } 
    else 
    { 
     if(num2 >= num1) 
     { 
      return false; 
     } 
    } 
} 

Помогите! Заранее спасибо!

+0

Дубликат http://stackoverflow.com/questions/29383 – us2012

+0

это пишется "больше" –

+1

Сокращенно: 'BOOL GraterFunct (интермедиат num1, внутр num2) {вернуться num1> = num1 ; } ' – deepmax

ответ

1

Для форматирования логических значений в true и false вы можете установить std::ios_base::boolalpha флаг с помощью std::boolalpha манипулятором:

std::cout << std::boolalpha << "true=" << true << " false=" << false << '\n'; 

В случае, если вы не являетесь носителем английского языка, как я, вы можете захотеть изменить форматирование этих значений. Предполагая, что есть подходящие локали, установленные вы можете просто imbue() в поток или вы можете создать собственный локали с тем, что предоставление true и false вы хотите, например:

#include <iostream> 
#include <locale> 

class numpunct 
    : public std::numpunct<char> 
{ 
    std::string do_truename() const { return "wahr"; } 
    std::string do_falsename() const { return "falsch"; } 
}; 

int main() 
{ 
    std::cout.imbue(std::locale(std::locale(), new numpunct)); 
    std::cout << std::boolalpha << "true=" << true << " false=" << false << '\n'; 
} 

Кстати, вы всегда необходимо убедиться, что вы вход был успешным, например:

if (std::cin >> number1) { 
    // deal with the successful input here 
} 
else { 
    // deal with the wrong input here 
} 
+0

Если цель программы является образовательной, проверка ввода может затенять фактический код. – riv

+0

@ riv: Если люди не учатся правильно читать данные, они никогда не будут проверять! Не проверка кода примера - это плохая идея: я вижу слишком большой производственный код, не проверяющий успешный ввод. –

+0

Эй, ребята, спасибо за все советы, которые я могу теперь сделать, чтобы вернуть текст! – Lolechi

Смежные вопросы