Riepilogo - Trovare un elemento
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 41 di 66.
Sfida
FacileRiceverai due input. Il primo input è un elenco di numeri separati da virgole (ad es., 10,20,30,40) e il secondo input è il numero da cercare. Analizza i numeri separati da virgole in un vettore, quindi cerca il numero di destinazione. Usa .iter().position() per trovare l'indice del numero di destinazione, che restituisce un Option<usize>. Gestisci entrambi i casi usando match e stampa il messaggio appropriato.
Requisiti:
- Leggi il primo input (numeri separati da virgole) e rimuovi gli spazi bianchi
- Dividi l'input in base alle virgole e analizza ogni parte come
i32per creare un vettore - Leggi il secondo input (numero di destinazione) e rimuovi gli spazi bianchi
- Analizza il numero di destinazione come
i32 - Usa
.iter().position(|&x| x == target)per cercare il numero di destinazione nel vettore - Usa un'espressione
matchper gestire l'Optionrestituito da.position() - Nel ramo
Some(index), stampa:Found at index [index] - Nel ramo
None, stampa:Not found
Input:
- Prima riga: numeri separati da virgole (ad es.,
10,20,30,40) - Seconda riga: un numero da cercare (ad es.,
30)
Output:
- Se il numero di destinazione viene trovato:
Found at index [index] - Se il numero di destinazione non viene trovato:
Not found
Provalo tu
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Leggi i numeri separati da virgole
let numbers_input = lines.next().unwrap().unwrap().trim().to_string();
// Leggi il numero da cercare
let target_input = lines.next().unwrap().unwrap().trim().to_string();
// Converti i numeri separati da virgole in un vettore
let numbers: Vec<i32> = numbers_input
.split(',')
.map(|s| s.trim().parse().unwrap())
.collect();
// Converti il numero da cercare
let target: i32 = target_input.parse().unwrap();
// TODO: Scrivi il tuo codice qui sotto
// Usa .iter().position() per trovare il numero da cercare e match per gestire il risultato
}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 finale6Gestire l'assenza con 'Option'
Che cos'è un 'Option'?Usare 'match' con 'Option'is_some() e is_none()Estrarre il valore da un 'Option'Il metodo expectFornire un valore predefinito: unwrap_orRiepilogo - Trovare un elementoEsercitati da solo: Compilatore Rust online