Повторение — Сводка оценок
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 66 из 66.
Задание
ЛегкоВы получите несколько входных данных, представляющих оценки студентов. Первое входное значение — это число, указывающее, сколько оценок последует далее. Затем вы получите соответствующее количество значений оценок (по одному в строке). Обработайте эти оценки и предоставьте подробный отчет.
Требования:
- Считайте первый ввод (количество оценок), удалите лишние пробелы и преобразуйте его в
i32 - Создайте пустой вектор для хранения оценок
- Используйте цикл для чтения каждой оценки, удаления лишних пробелов, преобразования в
i32и добавления в вектор - Вычислите средний балл (сумма всех оценок, деленная на их количество)
- Найдите самую высокую оценку в векторе
- Найдите самую низкую оценку в векторе
- Подсчитайте количество проходных оценок (70 или выше)
- Подсчитайте количество непроходных оценок (ниже 70)
- Выведите результаты в точном формате, указанном ниже
Формат вывода:
- Строка 1:
Average: X(где X — среднее значение в виде целого числа) - Строка 2:
Highest: X(где X — самая высокая оценка) - Строка 3:
Lowest: X(где X — самая низкая оценка) - Строка 4:
Passing: X(где X — количество проходных оценок) - Строка 5:
Failing: X(где X — количество непроходных оценок)
Ввод:
- Первая строка: Количество оценок (например,
5) - Следующие строки: Индивидуальные значения оценок (например,
85,92,67,78,95)
Вывод:
- Пять строк, показывающих среднее значение, самую высокую и самую низкую оценки, а также количество проходных и непроходных баллов
Попробуйте сами
use std::io;
fn main() {
// Считать количество оценок
let mut count_input = String::new();
io::stdin().read_line(&mut count_input).expect("Failed to read line");
let count: i32 = count_input.trim().parse().expect("Invalid number");
// Создать вектор для хранения оценок
let mut grades: Vec<i32> = Vec::new();
// Считать каждую оценку
for _ in 0..count {
let mut grade_input = String::new();
io::stdin().read_line(&mut grade_input).expect("Failed to read line");
let grade: i32 = grade_input.trim().parse().expect("Invalid number");
grades.push(grade);
}
// TODO: Напишите свой код ниже
// Вычислить среднее значение, найти самое высокое, найти самое низкое, подсчитать количество сданных и проваленных оценок
// Вывести результаты в требуемом формате
// println!("Average: {}", average);
// println!("Highest: {}", highest);
// println!("Lowest: {}", lowest);
// println!("Passing: {}", passing_count);
// println!("Failing: {}", failing_count);
}Все уроки раздела Logic & Flow
1Продвинутое управление потоком выполнения
Выражение 'match'Сопоставление нескольких значенийСопоставление диапазоновВыражение 'if let'Циклы как выраженияИтоги — Простой парсер команд4Группировка данных с помощью структур
Что такое структура?Обзор структурДоступ к полям структурыИзменяемые структурыСтруктуры как параметры функцийКортежные структурыИтоги: создание структуры Book7Обработка ошибок с помощью 'Result'
Что такое 'Result'?Использование 'match' с 'Result'is_ok() и is_err()Сокращения: unwrap и expectОператор вопросительного знака '?'Парсинг строк в числаИтоги: функция безопасного деления10Замыкания и анонимные функции
Что такое замыкание?Определение простого замыканияЗамыкания с параметрамиЗахват окруженияИтоги: Простое замыкание-сумматор2Введение в векторы
Что такое вектор?Создание вектораДобавление элементов с помощью pushДоступ к элементам вектораИтерация по векторуИзменяемая итерацияУдаление элементовИтоги — Простой счетчик очков5Пары «ключ-значение» в Hash Map
Что такое Hash Map?Создание Hash MapВставка пар «ключ-значение»Доступ к значениямИтерация по Hash MapОбновление значенияУдаление парыИтоги — Счетчик слов8Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино11Финальные испытания
Повторение — Уникальные элементыПовторение — Валидатор профиля пользователяПовторение — Сводка оценок3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элемента