Итоги — Простой счетчик очков
Часть раздела Логика и управление потоком путешествия по Rust на Coddy. Урок 14 из 66.
Задание
ЛегкоВы получите два входных значения: сначала список тестовых оценок, разделённых запятыми, а затем оценку для добавления. Создайте vector из исходных оценок, добавьте новую оценку, вычислите average всех оценок и выведите результаты.
Требования:
- Прочитайте первый ввод, содержащий оценки, разделённые запятыми (например,
85,92,78) - Разделите String по запятым и выполните trim каждого отдельного токена перед convert в integer (например, используйте
.trim()для каждого элемента после разделения) - Создайте mutable vector из этих оценок
- Прочитайте второй ввод и convert его в integer (сначала выполните trim)
- Используйте
.push(), чтобы add новую оценку в vector - Вычислите average всех оценок в vector
- Выведите общее number оценок
- Выведите average оценку (как integer)
Ввод:
- Первая строка: разделённые запятыми integer, представляющие исходные оценки (например,
85,92,78) - Вторая строка: integer, представляющее новую оценку для добавления
Вывод:
- Первая строка: общее number оценок
- Вторая строка: average оценка (как integer, усечённая)
Примечание: Всегда вызывайте .trim() для всей входной строки и для каждого отдельного токена оценки после разделения по запятой. Входные строки могут содержать невидимые пробельные символы или символы новой строки, которые вызовут panic при разборе, если их не удалить.
Попробуйте сами
use std::io;
fn main() {
// Прочитать оценки, разделённые запятыми
let mut scores_input = String::new();
io::stdin().read_line(&mut scores_input).expect("Failed to read line");
// Прочитать новую оценку для добавления
let mut new_score_input = String::new();
io::stdin().read_line(&mut new_score_input).expect("Failed to read line");
// TODO: Напишите ваш код ниже
// 1. Разделить scores_input по запятым и преобразовать в целые числа
// 2. Создать изменяемый вектор из этих оценок
// 3. Преобразовать new_score_input в целое число
// 4. Добавить новую оценку в вектор
// 5. Вычислить среднее всех оценок
// Вывести общее количество оценок
// println!("{}", total_scores);
// Вывести среднюю оценку
// println!("{}", average);
}Все уроки раздела Логика и управление потоком
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Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элементаПотренируйтесь самостоятельно: Онлайн-компилятор Rust