2014-02-06 81 views
2

我在遇到以下任务时遇到了麻烦,主要是因为我不明白布尔函数是如何工作的。 “写一个叫做Divisible的函数,以两个数字为参数返回True,如果第一个数字是第二个数字可以均匀分割(无余数),则返回True,否则返回False提示:使用%”如何正确使用布尔函数?

目前我所拥有的是:

int Divisible() 
{ 
    int firstNum; 
    int secondNum; 
    int result; 
    cout << "Please enter any integer: "; 
    cin >> firstNum; 
    cout << "Please enter another integer: "; 
    cin >> secondNum; 
    result == firstNum%secondNum; 
} 

我不知道该做什么以外。我认为我可以将bool = 0分配为true,但似乎并非如此。我仍然对C++很陌生,所以任何帮助将不胜感激。

+0

'boolean'值是'true'或'false'。请参阅:http://stackoverflow.com/questions/356726/is-bool-a-basic-datatype-in​​-c – bblincoe

+3

拿起一本基本教科书,并阅读:(1)'bool'类型; (2)功能; (2)算术运算符。 – NPE

+0

该签名中的*布尔值*在哪里,*两个数字*作为参数? –

回答

0

你不回来;或分配结果...

result = firstNum%secondNum; 
return (result == 0); // Assuming you want 0 as true. 

一般来说,价值0是假的,这是没有任何价值(!0)是真实的。按照惯例,即1

0

你所做的是正确的,但在最后一行中,你将未初始化的整数与结果(除法余数)进行比较。

设置int result=0; 然后做到这一点:

return result==firstNum%secondNum; // checks if remainder is zero (true if zero) 

你也可以简单地做return (firstNum%secondNum)==0

而且,你的任务请求,在两个数字作为参数(输入参数)的功能。 所以你的函数原型应该是这样的:

bool Divisible(int a, int b); 

,你应该在功能上,而不是采取输入从标准输入,你正在做的事情用a和b。

0

在赋值中明确写道该函数必须有两个参数。因此,功能可以看看下面的方式(C++)

inline bool Divisible(int n, int m) { return (n % m == 0); } 

或(C)

inline _Bool Divisible(int n, int m) { return (n % m == 0); } 

在最后一种情况下,你可能会替代的返回类型为_Bool INT。在使用C++的情况下,最好使用返回类型bool。 输入两个号码的请求应在功能之外。该功能只允许确定一个数字是否可以被其他数字整除。

0

bool是一种只能容纳两个值的类型:truefalse。你用它来表达真值,就像一个数字是否相互分开一样。

在你的情况下,该功能可能已经实施如下:

bool is_divisible(int a, int b) 
{ 
    return a % b == 0; 
} 
2

问题要求编写,是以数字作为参数的方法,而不是让您将它们从标准输入的输入。

布尔是它自己在C++中的一种类型,所以你希望该方法返回布尔而不是int。 一个易于阅读的解决方案:

bool Divisible(int a, int b) { 
    int remainder = a % b; // Calculate the remainder of a and b. 

    if(remainder == 0) { 
     return true; //If the remainder is 0, the numbers are divisible. 
    } else { 
     return false; // Otherwise, they aren't. 
    } 
} 

或者更简洁:

bool Divisible(int a, int b) { 
    return (a % b) == 0; 
} 

更简洁:

bool Divisible(int a, int b) { 
    return !(a % b); 
} 
1

在对返回boolean的方法,你想先确定什么价值的结果将是方法返回true时,然后使用==运算符来评估针对可接受结果得出的任何结果。

所以在你的情况下,你试图确定是否返回true或false,取决于第一个数字是否能被第二个数字整除。

你做

的第一件事是你把应该工作的情况下,例如:

  • 4, 2

你怎么知道4是整除2?那么这意味着如果我除以4,那么余数应为零。这是%运算符返回的结果。如果你做4 % 2的值是零。

确定,所以现在你有正确的结果,所以你根本就什么现在是评估你对接受的结果,像这样的任何结果:

int isDivisible(int a, int b) 
{ 
    const int acceptedAnswer = 4 % 2; 
    if (a % b == acceptedAnswer) 
     return 1; 
    return 0; 
} 

有你有它,任何价值,你得到的是不等于你接受的答案将返回0not equal (!=)和任何其他的答案将返回1equal (==)

1

当创建功能,或者使用他们永远记住开始与签名。

想一下这个函数需要处理什么,它会返回什么。如果数据类型为bool的值为true或false,则需要返回。就像在有条件的if语句中一样,你可以使用布尔运算符,如==,!=等。

所以你需要返回一个bool,并检查两个数字是否可以被整除。因此:

bool Divisible(int a, int b){ 

      // == boolean operator that will return true if a%b evaluates to 0 
      // false if not 
      return (a % b) == 0 
} 

一旦以这种方式开始思考函数,每个程序就成为一个巨大的难题!