Оценки
Каждый результат получает оценку. Учитель ставит её по количеству баллов:
- от 45 до 50 баллов: A
- от 38 до 44 баллов: B
- от 30 до 37 баллов: C
- от 20 до 29 баллов: D
- меньше 20 баллов: F
Это выбор из нескольких вариантов, а для него нужен else if. Вынесите его в функцию, которая получает результат и возвращает оценку. В функции может быть несколько return, и условие решает, какой из них выполнится. Оценка — это буква, поэтому функция возвращает char: напишите char перед её именем, а буквы возвращайте в одинарных кавычках, например 'A'. Вот пример с размерами футболок:
#include <iostream>
char shirtSize(int height) {
if (height < 150) {
return 'S';
} else if (height < 175) {
return 'M';
} else {
return 'L';
}
}
int main() {
std::cout << shirtSize(140) << std::endl;
std::cout << shirtSize(160) << std::endl;
std::cout << shirtSize(185) << std::endl;
return 0;
}S
M
LПорядок условий важен. Программа проверяет их сверху вниз и выполняет только первое истинное. Поэтому каждое следующее условие проверяется, только если ни одно из предыдущих не было истинным. Человек ростом 140 см тоже подходит под условие height < 175, но программа до него не доходит. В grade() начинайте с самой высокой границы. Если бы первым стояло условие score >= 20, оно было бы истинным и для Тимура с 48 баллами, и он получил бы D.
Следите и за границами: 45 баллов — это ещё A, поэтому условие score >= 45, а не score > 45.
И следите за кавычками: "A" в двойных кавычках — это текст (строка), а не char, и компилятор сообщает об ошибке:
main.cpp:8:16: error: cannot initialize return object of type 'char' with an lvalue of type 'const char[2]'Новую функцию пишите над printResults(), которая будет её вызывать. Если бы она стояла ниже, то в месте вызова компилятор ещё не знал бы о ней и сообщил бы об ошибке:
main.cpp:9:76: error: use of undeclared identifier 'grade'Функцию, которая возвращает значение, можно вызвать прямо внутри вывода: std::cout << grade(scores[i]) выводит оценку ученика с индексом i.
Задание
- 1
Над
printResults()напишите функциюchar grade(int score), которая возвращает'A'при 45 баллах и больше,'B'при 38 и больше,'C'при 30 и больше,'D'при 20 и больше и'F'в остальных случаях. - 2
В
printResults()добавьте в конец строки каждого ученика запятую, пробел, словооценка, пробел и оценку, которую вычислилаgrade():Адам, баллы: 42, оценка B Эмма, баллы: 38, оценка B Тимур, баллы: 48, оценка A Павел, баллы: 14, оценка F Лиза, баллы: 27, оценка DЕсли у Эммы с 38 баллами получилась C, проверьте, что в условии для B стоит
>=.