2013-11-20 1 views
0

У меня есть задание для моего курса Intro to Comp Sci в колледже. Нам предлагается использовать только Loops & Булевы выражения для создания программы. Вот ссылка на лист назначения непосредственно:C++ Loops & Boolean Expressions

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

Я получил это работает с кучей Итак, если 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;` 
+1

В качестве примера, если у вас есть целочисленная переменная 'x' и вы хотите знать, если она находится между 10 и 25, вы можете использовать логическое выражение типа' (10 <= x) && (x <= 25) '. –

+0

Добро пожаловать в переполнение стека! Отправьте код, который у вас есть. Выберите фрагмент кода и нажмите кнопку '[{}]' в редакторе, чтобы отформатировать код. – dasblinkenlight

+0

Как подсказка, всегда будет введена инструкция типа 'if ('M') ... – Cameron

ответ

1

Вы можете сделать это без если заявления. Вы должны использовать циклы do-while для каждого входа, так что вы выполняете цикл, пока вход недействителен. Затем, вы можете установить переменные BOOL, как это:

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

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

Вы могли бы сделать это все в одну строку, но получает трудно читать, ИМО. Вы должны иметь возможность установить weightOK таким же образом.

EDIT: цикл do-while запрашивает и получает вход. Затем оператор while проверяет ввод на достоверность.

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

Если вы хотите, чтобы сообщить пользователю, что вход является недопустимым, вы можете использовать время цикла после получения на вход в первый раз.

+0

Что будет делать тест while? – user3011390

0

Вот выражение показывает, что тройной оператор является допустимой булевой функцией по отношению к

(р ∧ д) ∨ (¬ р ∧ г)

«(р, д) или ((не р) и г))»или„ если р, то д, еще г“

Смотрите также: http://en.wikipedia.org/wiki/%3F:, http://en.wikipedia.org/wiki/Conditioned_disjunction

Полное раскрытие, я не читал ASSIG nment. Я просто заметил, что в вашем сообщении подразумевается, что вы ограничены использованием утверждений «if then else» и думаете, что я предлагаю творческий способ обмануть.