我在大学的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;`
答案 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”语句,并认为我会提供一种创造性的欺骗方式。