Menu
Coddy logo textTech

Końcowy kod

Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 19 z 66.

challenge icon

Wyzwanie

Łatwy

Otrzymasz cztery dane wejściowe reprezentujące kompletny proces zarządzania listą zadań do wykonania: po pierwsze, rozdzieloną przecinkami listę początkowych zadań; po drugie, nowe zadanie do dodania; po trzecie, numer zadania do wyświetlenia (indeksowanie od 1); po czwarte, numer zadania do usunięcia (indeksowanie od 1). Utwórz kompletny program do zarządzania listą zadań, który wykona wszystkie te operacje i wyświetli końcowy stan listy.

Wymagania:

  • Odczytaj pierwsze dane wejściowe zawierające opisy zadań rozdzielone przecinkami (np. Buy groceries,Call dentist,Finish homework)
  • Podziel ciąg znaków po przecinkach i utwórz z tych początkowych zadań modyfikowalny wektor
  • Odczytaj drugie dane wejściowe i dodaj nowe zadanie do wektora za pomocą .push()
  • Odczytaj trzecie dane wejściowe i przekonwertuj je na liczbę całkowitą (numer zadania do wyświetlenia, indeksowanie od 1)
  • Odczytaj czwarte dane wejściowe i przekonwertuj je na liczbę całkowitą (numer zadania do usunięcia, indeksowanie od 1)
  • Usuń wskazane zadanie, przekształcając indeks z indeksowania od 1 na indeksowanie od 0 i używając .remove()
  • Wyświetl Total tasks: X, gdzie X to końcowa liczba zadań
  • Wyświetl Viewing task: Y, gdzie Y to numer zadania, które wskazano do wyświetlenia
  • Przejdź przez końcową listę zadań i wyświetl każde zadanie wraz z jego numerem (indeksowanie od 1)
  • W przypadku zadania o numerze odpowiadającym numerowi zadania do wyświetlenia (po uwzględnieniu zmian wynikających z usunięcia) wyświetl: [X] [task description] (selected)
  • W przypadku pozostałych zadań wyświetl: [X] [task description]

Dane wejściowe:

  • Pierwszy wiersz: opisy zadań rozdzielone przecinkami (np. Buy groceries,Call dentist,Finish homework)
  • Drugi wiersz: nowe zadanie do dodania (np. Study for exam)
  • Trzeci wiersz: liczba całkowita określająca numer zadania do wyświetlenia (indeksowanie od 1)
  • Czwarty wiersz: liczba całkowita określająca numer zadania do usunięcia (indeksowanie od 1)

Wynik:

  • Pierwszy wiersz: Total tasks: X, gdzie X to końcowa liczba zadań
  • Drugi wiersz: Viewing task: Y, gdzie Y to wskazany numer zadania do wyświetlenia
  • Kolejne wiersze: każde zadanie wraz z numerem w formacie [X] [task description]
  • Do wybranego zadania (odpowiadającego numerowi zadania do wyświetlenia) należy dopisać (selected)

Spróbuj swoich sił

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

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // Wczytaj początkowe zadania oddzielone przecinkami
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // Wczytaj nowe zadanie do dodania
    let new_task = lines.next().unwrap().unwrap();
    
    // Wczytaj numer zadania do wyświetlenia (numeracja od 1)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // Wczytaj numer zadania do usunięcia (numeracja od 1)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: Napisz swój kod poniżej
    // 1. Podziel initial_tasks według przecinków i utwórz modyfikowalny wektor
    // 2. Dodaj new_task do wektora
    // 3. Usuń zadanie o numerze remove_number (przelicz na indeks liczony od 0)
    // 4. Wypisz łączną liczbę zadań i informacje o wyświetlanym zadaniu
    // 5. Przejdź przez końcową listę i wypisz każde zadanie
    
}

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Rust online