Usuwanie zadania
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 18 z 66.
Wyzwanie
ŁatwyOtrzymasz trzy dane wejściowe: najpierw listę istniejących zadań rozdzielonych przecinkami, następnie numer zadania do usunięcia (indeksowanie od 1), a na końcu nowe zadanie do dodania po usunięciu. Wczytaj wszystkie dane, utwórz tablicę zadań, usuń wskazane zadanie, dodaj nowe zadanie i wyświetl zaktualizowaną listę zadań.
Wymagania:
- Wczytaj pierwsze dane wejściowe zawierające opisy zadań rozdzielone przecinkami (np.
Buy groceries,Call dentist,Finish homework) - Podziel ciąg znaków po przecinkach, aby uzyskać pojedyncze zadania
- Utwórz modyfikowalny wektor i dodaj do niego każde zadanie
- Wczytaj drugie dane wejściowe i zamień je na liczbę całkowitą (numer zadania do usunięcia, z indeksowaniem od 1)
- Przekształć indeks od 1 na indeks od 0 i użyj
.remove(), aby usunąć zadanie o tym indeksie - Wczytaj trzecie dane wejściowe zawierające nowe zadanie do dodania
- Użyj
.push(), aby dodać nowe zadanie do wektora - Wypisz łączną liczbę zadań w formacie:
Total tasks: X - Wypisz każde zadanie w osobnym wierszu w formacie:
Task: [task description]
Dane wejściowe:
- Pierwszy wiersz: opisy zadań rozdzielone przecinkami (np.
Buy groceries,Call dentist,Finish homework) - Drugi wiersz: liczba całkowita oznaczająca numer zadania do usunięcia (indeksowanie od 1)
- Trzeci wiersz: nowe zadanie do dodania (np.
Study for exam)
Dane wyjściowe:
- Pierwszy wiersz:
Total tasks: X, gdzie X oznacza łączną liczbę zadań po usunięciu i dodaniu - Kolejne wiersze: każde zadanie wypisane jako
Task: [task description]
Spróbuj swoich sił
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Wczytaj zadania oddzielone przecinkami
let tasks_input = lines.next().unwrap().unwrap();
// Wczytaj numer zadania do usunięcia (indeksowanie od 1)
let task_to_remove = lines.next().unwrap().unwrap();
let task_number: usize = task_to_remove.trim().parse().unwrap();
// Wczytaj nowe zadanie do dodania
let new_task = lines.next().unwrap().unwrap();
// TODO: Napisz swój kod poniżej
// Podziel tasks_input według przecinków i utwórz modyfikowalny wektor
// Usuń zadanie o podanym indeksie (przelicz indeksowanie od 1 na indeksowanie od 0)
// Dodaj nowe zadanie do wektora
// Wyświetl wyniki
// Wyświetl łączną liczbę zadań w formacie: Total tasks: X
// Wyświetl każde zadanie w formacie: Task: [opis zadania]
}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