Codice finale
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 19 di 66.
Sfida
FacileRiceverai quattro input che rappresentano un flusso di lavoro completo per una lista di cose da fare: primo, un elenco di attività iniziali separate da virgole; secondo, una nuova attività da aggiungere; terzo, il numero di un'attività da visualizzare (indicizzazione a partire da 1); quarto, il numero di un'attività da rimuovere (indicizzazione a partire da 1). Crea un gestore completo di liste di cose da fare che elabori tutte queste operazioni e mostri lo stato finale.
Requisiti:
- Leggi il primo input contenente descrizioni di attività separate da virgole (ad es.,
Buy groceries,Call dentist,Finish homework) - Dividi la stringa in corrispondenza delle virgole e crea un vettore mutabile con queste attività iniziali
- Leggi il secondo input e aggiungi questa nuova attività al vettore usando
.push() - Leggi il terzo input e convertilo in un intero (numero dell'attività da visualizzare, a partire da 1)
- Leggi il quarto input e convertilo in un intero (numero dell'attività da rimuovere, a partire da 1)
- Rimuovi l'attività specificata convertendo l'indice da base 1 a base 0 e usando
.remove() - Stampa
Total tasks: Xdove X è il numero finale di attività - Stampa
Viewing task: Ydove Y è il numero dell'attività di cui è stata richiesta la visualizzazione - Scorri l'elenco finale delle attività e stampa ciascuna attività con il suo numero (a partire da 1)
- Per l'attività corrispondente al numero da visualizzare (dopo gli eventuali aggiustamenti dovuti alla rimozione), stampa:
[X] [task description] (selected) - Per tutte le altre attività, stampa:
[X] [task description]
Input:
- Prima riga: descrizioni di attività separate da virgole (ad es.,
Buy groceries,Call dentist,Finish homework) - Seconda riga: una nuova attività da aggiungere (ad es.,
Study for exam) - Terza riga: un intero che rappresenta il numero dell'attività da visualizzare (indicizzazione a partire da 1)
- Quarta riga: un intero che rappresenta il numero dell'attività da rimuovere (indicizzazione a partire da 1)
Output:
- Prima riga:
Total tasks: Xdove X è il numero finale di attività - Seconda riga:
Viewing task: Ydove Y è il numero richiesto per la visualizzazione - Righe successive: ogni attività con il suo numero nel formato
[X] [task description] - All'attività selezionata (corrispondente al numero da visualizzare) va aggiunto
(selected)
Provalo tu
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Leggi le attività iniziali separate da virgole
let initial_tasks = lines.next().unwrap().unwrap();
// Leggi la nuova attività da aggiungere
let new_task = lines.next().unwrap().unwrap();
// Leggi il numero dell'attività da visualizzare (a partire da 1)
let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// Leggi il numero dell'attività da rimuovere (a partire da 1)
let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: Scrivi il tuo codice qui sotto
// 1. Dividi initial_tasks usando le virgole e crea un vettore mutabile
// 2. Aggiungi new_task al vettore
// 3. Rimuovi l'attività alla posizione remove_number (converti in un indice a partire da 0)
// 4. Stampa il numero totale di attività e le informazioni sull'attività da visualizzare
// 5. Scorri l'elenco finale e stampa ogni attività
}Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
L'espressione 'match'Corrispondenza di più valoriCorrispondenza di intervalliL'espressione 'if let'Cicli come espressioniRipasso - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi delle structStruct mutabiliStruct come parametri di funzioneStruct tuplaRiepilogo - Creare una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreIterare su un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker dei punteggi di base5Coppie chiave-valore con mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriScorrere una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: inventario semplice degli articoli
Configurazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere tutto insieme3Lista di attività da riga di comando
Configurazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finaleEsercitati da solo: Compilatore Rust online