#c
#c
Вопрос:
Я только начал c не так давно. Я хочу найти наименьшую из 4 переменных, используя только операторы if-else. Пока это то, о чем я мог подумать. Есть ли способ сократить это?
float lowest;
if (assignment1<assignment2 amp;amp; assignment1<assignment3 amp;amp; assignment1<assignment4)
assignment1 == lowest;
else if (assignment2<assignment1 amp;amp; assignment2<assignment3 amp;amp; assignment2<assignment4)
assignment2 == lowest;
else if (assignment3<assignment1 amp;amp; assignment3<assignment2 amp;amp; assignment3<assignment4)
assignment3 == lowest;
else
assignment4 == lowest;
Комментарии:
1. Этот код даже ничего не делает. Я также не уверен, что понимаю ограничения на это — есть ли причина, по которой вам не разрешено использовать другие языковые конструкции, кроме
if
andelse
?2. определите сокращение. меньше проверок или меньше кода?
3. наименьший = присваиваниеx;
4. Как насчет наименьших 5 переменных? 6 переменных? 10 переменных? 100 переменных? В какой-то момент вы увидите, что становится бессмысленным использовать операторы if-else для подобных вещей.
5. @PaulMcKenzie Вероятно, это задание предназначено для того, чтобы показать им, насколько болезненной была бы жизнь без цикла, поскольку следующий урок покажет, что тогда циклы и попросят повторно реализовать его с помощью циклов. Именно так это обычно делается.
Ответ №1:
Разрешено ли вам выполнять несколько назначений lowest
? Если это так:
float lowest = assignment1;
if (assignment2 < lowest)
lowest = assignment2;
if (assignment3 < lowest)
lowest = assignment3;
if (assignment4 < lowest)
lowest = assignment4;
Сохраняя наименьшее значение внутри lowest
, мы можем просто проверять каждое значение lowest
и обновлять lowest
, когда найдено меньшее значение.