Wzór liczbowy
Część sekcji Podstawy ścieżki Rust w Coddy. Lekcja 73 z 75.
Podczas tworzenia wzorów, takich jak piramidy, często musimy tworzyć ciągi znaków z powtarzającymi się znakami. W Rust można to osiągnąć na kilka sposobów, ale oto jedna z najprostszych metod:
let str = "a".repeat(10);str będzie zawierać "aaaaaaaaaa"
Metoda repeat() wymaga konkretnie argumentu typu usize, a nie zwykłego typu całkowitoliczbowego, takiego jak i32.
usize to typ liczby całkowitej bez znaku o rozmiarze wskaźnika w Rust — jego rozmiar zależy od architektury (32 bity w systemach 32-bitowych, 64 bity w systemach 64-bitowych).
let count: usize = 5;
let repeated = "x".repeat(count); // To działaJeśli masz i32 lub inny typ całkowity, musisz go przekonwertować:
let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Konwertuj za pomocą 'as usize'To się nie skompiluje:
let repeated = "z".repeat(num);
// Błąd: oczekiwano usize, znaleziono i32Wyzwanie
ŁatwyKażdy przypadek testowy zawiera jedno wejście — nieparzystą liczbę całkowitą.
Twoim zadaniem jest wypisać piramidę o wysokości n za pomocą *. Oto kilka przykładów:
Piramida o wysokości 1
*Piramida o wysokości 5
*
***
*****Piramida o wysokości 7
*
***
*****
*******Dane wejściowe
- nieparzysta liczba całkowita
nod użytkownika - 1 <=
n< 1000
Wskazówki
- Spróbuj zacząć od małych trójkątów
- Jeśli utkniesz, sprawdź podpowiedź ;)
noznacza liczbę*w dolnym wierszu
Uwaga: W Rust funkcje, które obsługują „rozmiar” lub „długość” czegoś (takie jak .repeat()), wymagają typu o nazwie usize zamiast i32; możesz traktować usize jak zwykłą liczbę całkowitą, która nigdy nie jest ujemna.
Spróbuj swoich sił
use std::io;
fn main() {
let mut input_n = String::new();
io::stdin().read_line(&mut input_n).unwrap();
let n: usize = input_n.trim().parse().unwrap();
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloSkrócone operacje arytmetyczneOperatory porównaniaPorównywanie ciągów znaków7Podstawowe wejście i wyjście
Wyświetlanie w konsoliOdczytywanie danych od użytkownikaPowtórka – do 120Powtórka – prawda czy fałsz5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka — prosta logikaOperatory logiczne, część 311Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneWiele wartości zwracanychPowtórka – funkcja SigmaPowtórka – funkcja walidująca14Iterowanie po tablicach
Przewodnik po zakresachUlepszona pętla forPożyczanie w pętliTypowe operacje na tablicach3Zmienne – część 2
Deklarowanie typuKonwencje nazewnictwaWnioskowanie o typiePodsumowanie – inicjalizacja zmiennychRzutowanie typów9Pętle
Pętla for dla sekwencjiPętla whileInstrukcja breakInstrukcja continuePętle zagnieżdżoneEtykiety pętliPętla nieskończonaPodsumowanie — dynamiczne dane wejściowe12Podstawy tablic
Deklarowanie tablicTablica jako parametrDostęp do elementówModyfikowanie tablicPodsumowanie — czytelny wydruk tablicy15Operacje na ciągach znaków
Metody ciągów znakówMakro format!Konwersja ciągów znakówPowtórka — formatowaniePoćwicz samodzielnie: Kompilator Rust online