C ++循环&布尔表达式

时间:2013-11-20 03:07:36

标签: c++ loops boolean-expression

我在大学的Comp Sci课程上有一个作业。我们被告知只使用循环和放大器Boolean表达式用于创建程序。 以下是指向工作表的链接:

http://cs.saddleback.edu/michele/Teaching/CS1A/Assignments/AS8%20-%20Boolean%20Expressions.pdf

我使用了一堆If,Then,Else语句,直到我再次阅读说明并不得不改变它。

我得到了'm''f''M''F'部分工作,但我无法得到heightOK或weightOK(方向#2和#3)。

请帮助,谢谢!

PS我是编程的新手......

这是我到目前为止所做的:`

    char gender;
    int weight;
    int height;
    bool heightOK;
    bool weightOK;

cout << "Please enter the candidate’s information (enter ‘X’ to exit).";

cout << "Gender: ";
cin.get(gender);
cin.getline(100 , '\n');

if (gender == 'm' || 'M' || 'f' || 'F')
{

}
else
{
    cout << "***** Invalid gender; please enter M or F *****";
}

cout << "Height: ";
cin >> height;

cout << "Weight: ";
cin >> weight;`

2 个答案:

答案 0 :(得分:1)

您可以在没有if语句的情况下执行此操作。您应该为每个输入使用do-while循环,以便在输入无效时循环。然后,您可以设置这样的bool变量:

heightOK = ((gender == 'm' || gender == 'M') &&
(height > MALE_TOO_SHORT && height < MALE_TOO_TALL));

heightOK = (heightOK || (/*same as above, female version*/));

你可以在一行中完成所有这些,但这很难读,IMO。您应该能够以相同的方式设置weightOK。

编辑:do-while循环请求并获取输入。然后,while语句测试输入的有效性。

do {
    cout << "enter gender (m/f)";
    cin  >> gender;
} while ( !(gender == 'm' || gender == 'M' || gender == 'f' || gender == 'F') );

如果您想告诉用户输入无效,您可以在第一次获得输入后使用while循环。

答案 1 :(得分:0)

这是表达三元运算符相对于

的有效布尔函数的表达式

(p∧q)∨(¬p∧r)

“(p和q)或((不是p)和r))”或“如果p则q,否则r”

另请参阅:http://en.wikipedia.org/wiki/%3F:,http://en.wikipedia.org/wiki/Conditioned_disjunction

完全披露,我没有看过作业。我刚看到你帖子中的暗示,你被禁止使用“if then else”语句,并认为我会提供一种创造性的欺骗方式。