Podsumowanie – znajdowanie elementu
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 41 z 66.
Wyzwanie
ŁatwyOtrzymasz dwa dane wejściowe. Pierwsze to lista liczb oddzielonych przecinkami (np. 10,20,30,40), a drugie to liczba, której należy szukać. Przekształć liczby oddzielone przecinkami w wektor, a następnie wyszukaj podaną liczbę. Użyj .iter().position(), aby znaleźć indeks szukanej liczby. Metoda ta zwraca wartość typu Option<usize>. Obsłuż oba przypadki za pomocą match i wypisz odpowiedni komunikat.
Wymagania:
- Odczytaj pierwsze dane wejściowe (liczby oddzielone przecinkami) i usuń białe znaki z początku i końca
- Podziel dane wejściowe po przecinkach i przekształć każdą część w
i32, aby utworzyć wektor - Odczytaj drugie dane wejściowe (szukaną liczbę) i usuń białe znaki z początku i końca
- Przekształć szukaną liczbę w
i32 - Użyj
.iter().position(|&x| x == target), aby wyszukać podaną liczbę w wektorze - Użyj wyrażenia
match, aby obsłużyć wartośćOptionzwracaną przez.position() - W gałęzi
Some(index)wypisz:Found at index [index] - W gałęzi
Nonewypisz:Not found
Dane wejściowe:
- Pierwszy wiersz: liczby oddzielone przecinkami (np.
10,20,30,40) - Drugi wiersz: szukana liczba (np.
30)
Wynik:
- Jeśli liczba zostanie znaleziona:
Found at index [index] - Jeśli liczba nie zostanie znaleziona:
Not found
Spróbuj swoich sił
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Wczytaj liczby rozdzielone przecinkami
let numbers_input = lines.next().unwrap().unwrap().trim().to_string();
// Wczytaj szukaną liczbę
let target_input = lines.next().unwrap().unwrap().trim().to_string();
// Przekształć liczby rozdzielone przecinkami w wektor
let numbers: Vec<i32> = numbers_input
.split(',')
.map(|s| s.trim().parse().unwrap())
.collect();
// Przekształć szukaną liczbę
let target: i32 = target_input.parse().unwrap();
// TODO: Napisz swój kod poniżej
// Użyj .iter().position(), aby znaleźć szukaną liczbę, oraz match, aby obsłużyć wynik
}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 kod6Obsługa braku wartości za pomocą „Option”
Czym jest „Option”?Używanie „match” z „Option”is_some() i is_none()Rozpakowywanie „Option”Metoda expectPodawanie wartości domyślnej: unwrap_orPodsumowanie – znajdowanie elementuPoćwicz samodzielnie: Kompilator Rust online