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 iniziale di attività 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 visualizzi lo stato finale.
Requisiti:
- Leggi il primo input contenente le descrizioni delle attività separate da virgole (ad es.,
Buy groceries,Call dentist,Finish homework) - Dividi la stringa in corrispondenza delle virgole e crea un vettore modificabile 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 numero intero (numero dell’attività da visualizzare, a partire da 1)
- Leggi il quarto input e convertilo in un numero 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: X, dove X è il numero finale di attività - Stampa
Viewing task: Y, dove Y è il numero dell’attività che è stato richiesto di visualizzare - Scorri l’elenco finale delle attività e stampa ciascuna attività con il suo numero (a partire da 1)
- Per l’attività che corrisponde al numero da visualizzare (dopo gli aggiustamenti dovuti alla rimozione), stampa:
[X] [task description] (selected) - Per tutte le altre attività, stampa:
[X] [task description]
Input:
- Prima riga: descrizioni delle 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 numero intero che rappresenta il numero dell’attività da visualizzare (indicizzazione a partire da 1)
- Quarta riga: un numero intero che rappresenta il numero dell’attività da rimuovere (indicizzazione a partire da 1)
Output:
- Prima riga:
Total tasks: X, dove X è il numero finale di attività - Seconda riga:
Viewing task: Y, dove Y è il numero richiesto da visualizzare - Righe successive: ciascuna 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 (con indice a partire da 1)
let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// Leggi il numero dell'attività da rimuovere (con indice 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 in corrispondenza delle 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'I cicli come espressioniRiepilogo - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi di una structStruct mutabiliLe struct come parametri di funzioneStruct tuplaRiepilogo - Crea una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreScorrere un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker di punteggi di base5Coppie chiave-valore con le mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriIterare su una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: semplice inventario di articoli
Impostazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere insieme il tutto3Lista di cose da fare da riga di comando
Impostazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finaleEsercitati da solo: Compilatore Rust online