Powtórka – podsumowanie ocen
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 66 z 66.
Wyzwanie
ŁatwyOtrzymasz wiele danych wejściowych reprezentujących oceny uczniów. Pierwsza dana wejściowa to liczba określająca, ile ocen zostanie podanych. Następnie otrzymasz tyle wartości ocen (po jednej w każdym wierszu). Przetwórz te oceny i przedstaw ich pełne podsumowanie.
Wymagania:
- Odczytaj pierwszą daną wejściową (liczbę ocen), usuń białe znaki i sparsuj ją jako
i32 - Utwórz pusty wektor do przechowywania ocen
- Użyj pętli, aby odczytać każdą ocenę, usunąć białe znaki, sparsować ją jako
i32i dodać do wektora - Oblicz średnią ocen (sumę wszystkich ocen podzieloną przez ich liczbę)
- Znajdź najwyższą ocenę w wektorze
- Znajdź najniższą ocenę w wektorze
- Policz, ile ocen jest zaliczających (70 lub więcej)
- Policz, ile ocen jest niezaliczających (poniżej 70)
- Wypisz wyniki dokładnie w formacie pokazanym poniżej
Format wyjściowy:
- Wiersz 1:
Average: X(gdzie X to średnia jako liczba całkowita) - Wiersz 2:
Highest: X(gdzie X to najwyższa ocena) - Wiersz 3:
Lowest: X(gdzie X to najniższa ocena) - Wiersz 4:
Passing: X(gdzie X to liczba ocen zaliczających) - Wiersz 5:
Failing: X(gdzie X to liczba ocen niezaliczających)
Dane wejściowe:
- Pierwszy wiersz: liczba ocen (np.
5) - Kolejne wiersze: pojedyncze wartości ocen (np.
85,92,67,78,95)
Wynik:
- Pięć wierszy zawierających średnią, najwyższą i najniższą ocenę oraz liczbę ocen zaliczających i niezaliczających
Spróbuj swoich sił
use std::io;
fn main() {
// Wczytaj liczbę ocen
let mut count_input = String::new();
io::stdin().read_line(&mut count_input).expect("Failed to read line");
let count: i32 = count_input.trim().parse().expect("Invalid number");
// Utwórz wektor do przechowywania ocen
let mut grades: Vec<i32> = Vec::new();
// Wczytaj każdą ocenę
for _ in 0..count {
let mut grade_input = String::new();
io::stdin().read_line(&mut grade_input).expect("Failed to read line");
let grade: i32 = grade_input.trim().parse().expect("Invalid number");
grades.push(grade);
}
// TODO: Napisz poniżej swój kod
// Oblicz średnią, znajdź najwyższą i najniższą ocenę oraz policz oceny zaliczające i niezaliczające
// Wyświetl wyniki w wymaganym formacie
// println!("Average: {}", average);
// println!("Highest: {}", highest);
// println!("Lowest: {}", lowest);
// println!("Passing: {}", passing_count);
// println!("Failing: {}", failing_count);
}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ść11Wyzwania końcowe
Powtórka – unikalne elementyPowtórka – walidator profilu użytkownikaPowtórka – podsumowanie ocen3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kodPoćwicz samodzielnie: Kompilator Rust online