Menu
Coddy logo textTech

Итоговый код

Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 19 из 66.

challenge icon

Задание

Легко

Вы получите четыре входных значения, представляющих полный рабочий процесс списка дел: во-первых, список начальных задач, разделенных запятыми; во-вторых, новую задачу для добавления; в-третьих, номер задачи для просмотра (индексация начинается с 1); и в-четвертых, номер задачи для удаления (индексация начинается с 1). Создайте полноценный менеджер списка дел, который обрабатывает все эти операции и отображает конечное состояние.

Требования:

  • Прочитайте первый ввод, содержащий описания задач, разделенные запятыми (например, Buy groceries,Call dentist,Finish homework)
  • Разделите строку по запятым и создайте изменяемый вектор (mutable vector) с этими начальными задачами
  • Прочитайте второй ввод и добавьте эту новую задачу в вектор, используя .push()
  • Прочитайте третий ввод, преобразуйте его в целое число (номер задачи для просмотра, начиная с 1)
  • Прочитайте четвертый ввод, преобразуйте его в целое число (номер задачи для удаления, начиная с 1)
  • Удалите указанную задачу, преобразовав индекс из формата «с 1» в формат «с 0» и используя .remove()
  • Выведите Total tasks: X, где X — итоговое количество задач
  • Выведите Viewing task: Y, где Y — номер задачи, которую запрашивали для просмотра
  • Переберите финальный список задач и выведите каждую задачу с ее номером (начиная с 1)
  • Для задачи, номер которой совпадает с номером просмотра (после корректировок удаления), выведите: [X] [task description] (selected)
  • Для всех остальных задач выведите: [X] [task description]

Ввод:

  • Первая строка: Описания задач, разделенные запятыми (например, Buy groceries,Call dentist,Finish homework)
  • Вторая строка: Новая задача для добавления (например, Study for exam)
  • Третья строка: Целое число, представляющее номер задачи для просмотра (индексация с 1)
  • Четвертая строка: Целое число, представляющее номер задачи для удаления (индексация с 1)

Вывод:

  • Первая строка: Total tasks: X, где X — итоговое количество задач
  • Вторая строка: Viewing task: Y, где Y — запрошенный номер для просмотра
  • Последующие строки: Каждая задача со своим номером в формате [X] [task description]
  • К выбранной задаче (совпадающей с номером просмотра) должно быть добавлено (selected)

Попробуйте сами

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Прочитать начальные задачи, разделенные запятыми
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // Прочитать новую задачу для добавления
    let new_task = lines.next().unwrap().unwrap();
    
    // Прочитать номер задачи для просмотра (начиная с 1)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // Прочитать номер задачи для удаления (начиная с 1)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: Напишите свой код ниже
    // 1. Разделите initial_tasks по запятым и создайте изменяемый вектор
    // 2. Добавьте new_task в вектор
    // 3. Удалите задачу по номеру remove_number (преобразуйте в индекс с 0)
    // 4. Выведите общее количество задач и информацию о просматриваемой задаче
    // 5. Пройдите по финальному списку и выведите каждую задачу
    
}

Все уроки раздела Logic & Flow