Końcowy kod
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 19 z 66.
Wyzwanie
ŁatwyOtrzymasz 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
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kodPoćwicz samodzielnie: Kompilator Rust online