Далее на странице...
Начинаем работу с очередной практической задачей. Это третья по счету задача - Задача кодирования №3.
Если вторая задача кодирования была продолжением первой, то сейчас мы будем работать с иным условием.
Чтобы выполнить это задание нужно вспомнить как работают логические операторы if и else. В решении необходимо будет использовать несколько блоков else if.
Также в коде будет задействован логический оператор И &&.
Условие задачи:
У нас есть две команды гимнастов - это Дельфины и Коалы. И они соревнуются друг с другом три раза/три тайма. Команда с высокими оценками является победителем и выигрывает трофей.
Каковы ваши задачи?
1. Вычислить средний балл каждой команды, используя данные ниже.
Счет Дельфинов: 96, 108 и 89. Счет Коал: 88, 91 и 110.
2. Сравнить средние баллы команд, чтобы определить победителя соревнования. Вывести результат в консоль. Стоит учесть, что в игре может быть ничья (средние баллы команд при этом равны) и это должно быть отражено в коде.
Следующие пункты задачи немного сложнее.
Дополнительное задание №1
Включить условие минимального счета 100 баллов. Это означает, что команда выиграла, если не только имеет больший счет, чем у другой команды, но и в тоже время этот счет не меньше 100 баллов (больше или равен 100).
Дополнительное задание №2
Теперь условие минимального счета относится и к ничьей. То есть ничья будет иметь место не только при условии, если обе команды имеют одинаковый счет, но при этом счет должен быть больше или равный 100 баллам.
Ниже приведены исходные данные для выполнения дополнительных заданий.
Дополнительное задание №1
Счет Дельфинов: 97, 112 и 101. Счет Коал: 109, 95 и 123.
Дополнительное задание №2
Счет Дельфинов: 97, 112 и 101. Счет Коал: 109, 95 и 106.
Здесь можно экспериментировать и менять исходные данные как вам угодно.
Решение задачи - Проверка основного кода
Решение для основной/первой части задачи. Здесь необходимо составить несколько условий if else.
Решение 1.1 - Исходные баллы
const dolphinScore = (96 + 108 + 89) / 3 // Счет Дельфинов
const koalaScore = (88 + 91 + 110) / 3 // Счет Коал
console.log(dolphinScore, koalaScore);
if (dolphinScore > koalaScore) {
console.log('Dolphin team are wins a trophy') // Команда Дельфинов выигрывает трофей
}
else if (koalaScore > dolphinScore) {
console.log('Koalas team are wins a trophy') // Команда коал выигрывает трофей
}
else if (dolphinScore === koalaScore) {
console.log('The game is a draw') // Результат игры - ничья
}
Результат
97.66666666666667 96.33333333333333
Dolphin team are wins a trophy
В результате, работая с исходными баллами, мы видим, что команда Дельфинов выигрывает трофей: Dolphin team are wins a trophy.
Далее меняем исходные данные, чтобы убедиться в правильной работе кода: сейчас в том, что второй блок else if работает.
Решение 1.2
Меняем исходные баллы в пользу Коал.
const dolphinScore = (96 + 108 + 89) / 3 // Счет Дельфинов
const koalaScore = (88 + 98 + 110) / 3 // Счет Коал - 98 новое значение
console.log(dolphinScore, koalaScore);
if (dolphinScore > koalaScore) {
console.log('Dolphin team are wins a trophy') // Команда Дельфинов выигрывает трофей
}
else if (koalaScore > dolphinScore) {
console.log('Koalas team are wins a trophy') // Команда коал выигрывает трофей
}
else if (dolphinScore === koalaScore) {
console.log('The game is a draw') // Результат игры - ничья
}
Результат
97.66666666666667 98.66666666666667
Koalas team are wins a trophy
Здесь мы видим, что победила команда Коал: Koalas team are wins a trophy.
И далее мы работаем с баллами, при которых должна быть ничья.
Решение 1.3
Здесь результатом игры должна быть ничья. То есть проверяем работу третьего блока else if.
const dolphinScore = (96 + 108 + 89) / 3 // Счет Дельфинов
const koalaScore = (88 + 95 + 110) / 3 // Счет Коал - 95 новое значение
console.log(dolphinScore, koalaScore);
if (dolphinScore > koalaScore) {
console.log('Dolphin team are wins a trophy') // Команда Дельфинов выигрывает трофей
}
else if (koalaScore > dolphinScore) {
console.log('Koalas team are wins a trophy') // Команда коал выигрывает трофей
}
else if (dolphinScore === koalaScore) {
console.log('The game is a draw') // Результат игры - ничья
}
Результат
97.66666666666667 97.66666666666667
The game is a draw
Все верно - в игре ничья: The game is a draw.
Дополнительное задание №1
Здесь дополнительным условием, при котором одна из команд получает трофей, является наличие счета большего или равного 100 баллам. Логические выражения в условиях if усложняются - добавляется логический оператор И &&.
Бонус 1.1
const dolphinScore = (97 + 112 + 101) / 3 // Счет Дельфинов
const koalaScore = (109 + 95 + 123) / 3 // Счет Коал
console.log(dolphinScore, koalaScore);
if (dolphinScore > koalaScore && dolphinScore >= 100) {
console.log('Dolphin team are wins a trophy') // Команда Дельфинов выигрывает трофей
}
else if (koalaScore > dolphinScore && koalaScore >= 100) {
console.log('Koalas team are wins a trophy') // Команда коал выигрывает трофей
}
else if (dolphinScore === koalaScore) {
console.log('The game is a draw') // Результат игры - ничья
}
Результат
103.33333333333333 109
Koalas team are wins a trophy
Если же вернуться к исходным данным, когда счет был меньше 100 баллов, то в результате мы не увидим ничего, кроме счета команд.
Бонус 1.2
const dolphinScore = (96 + 108 + 89) / 3 // Счет Дельфинов
const koalaScore = (88 + 91 + 110) / 3 // Счет Коал
console.log(dolphinScore, koalaScore);
if (dolphinScore > koalaScore && dolphinScore >= 100) {
console.log('Dolphin team are wins a trophy') // Команда Дельфинов выигрывает трофей
}
else if (koalaScore > dolphinScore && koalaScore >= 100) {
console.log('Koalas team are wins a trophy') // Команда коал выигрывает трофей
}
else if (dolphinScore === koalaScore) {
console.log('The game is a draw') // Результат игры - ничья
}
Результат
97.66666666666667 96.33333333333333
Итак, здесь счет Дельфинов больше счета Коал, но оба счета меньше 100 баллов. При этом мы не имеем результата. Мы не увидим сообщения о выигрыше ни одной из команд, ни сообщения о ничьей.
Чтобы при таком решении был какой-то результат, необходимо выполнить Дополнительное задание №2.
Дополнительное задание №2
Используя оператор И, добавляем условие минимального счета, в том числе, для результата ничья.
Бонус 2.1
const dolphinScore = (97 + 112 + 81) / 3 // Счет Дельфинов
const koalaScore = (109 + 95 + 86) / 3 // Счет Коал
console.log(dolphinScore, koalaScore);
if (dolphinScore > koalaScore && dolphinScore >= 100) {
console.log('Dolphin team are wins a trophy') // Команда Дельфинов выигрывает трофей
}
else if (koalaScore > dolphinScore && koalaScore >= 100) {
console.log('Koalas team are wins a trophy') // Команда коал выигрывает трофей
}
else if (dolphinScore === koalaScore && dolphinScore >= 100 && koalaScore >= 100) {
console.log('The game is a draw') // Результат игры - ничья
}
else {
console.log('No wins a trophy') // Никто не выигрывает трофей
}
Результат
96.66666666666667 96.66666666666667
No wins a trophy
Здесь в результате команды имеют одинаковый счет, но так как он меньше 100 баллов, то вместо ничьей мы видим, что ни одна из команд не выиграет трофей No wins a trophy.
Теперь вернемся к данным из примера Бонус 1.2, где счет был различен, но также меньше 100 баллов.
Бонус 2.2
const dolphinScore = (96 + 108 + 89) / 3 // Счет Дельфинов
const koalaScore = (88 + 91 + 110) / 3 // Счет Коал
console.log(dolphinScore, koalaScore);
if (dolphinScore > koalaScore && dolphinScore >= 100) { // true И false --> false
console.log('Dolphin team are wins a trophy')
}
else if (koalaScore > dolphinScore && koalaScore >= 100) { // false И false --> false
console.log('Koalas team are wins a trophy')
}
else if (dolphinScore === koalaScore && dolphinScore >= 100 && koalaScore >= 100) { // false И false И false --> false
console.log('The game is a draw')
}
else {
console.log('No wins a trophy') // Никто не выигрывает трофей
}
Результат
97.66666666666667 96.33333333333333
No wins a trophy
Здесь счет различен, но опять ни одна из команд не является победителем и не получает трофей, так как счет меньше 100 баллов.
Соответственно при различном счете, но большем, чем 100 баллов мы увидим одну из команд в качестве победителя. А при равном счете и также большем, чем 100 баллов мы увидим ничью.
Этот код окончательный и учитывает все варианты игры.
В последнем примере в комментариях показано, как JavaScript видит логические выражения в булевой интерпретации - в значениях true и false. Также должны видеть их и мы. В данном случае результатом всех этих выражений является ложь false. То есть условием каждого из блоков if является false. Поэтому выполняется последний блок else.
Соответственно во всех предыдущих примерах в результатах сравнений >, >= и === мы также работаем с логическими значениями true и false.
Итак, эта задача кодирования была направлена на закрепление материала по работе с условиями - несколькими блоками else if, в которых составлялись логические выражения с использованием операторов сравнения >, >= и === и логического оператора И.