Motif de nombres
Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 73 sur 75.
Lors de la création de motifs tels que des pyramides, nous avons souvent besoin de créer des chaînes avec des caractères répétés. En Rust, il existe plusieurs façons d'y parvenir, mais voici l'une des méthodes les plus simples :
let str = "a".repeat(10);str contiendra "aaaaaaaaaa"
La méthode repeat() nécessite spécifiquement un argument usize, et non un type d'entier standard comme i32.
usize est le type d'entier non signé de la taille d'un pointeur de Rust - sa taille dépend de votre architecture (32 bits sur les systèmes 32 bits, 64 bits sur les systèmes 64 bits).
let count: usize = 5;
let repeated = "x".repeat(count); // Cela fonctionneSi vous avez un i32 ou un autre type d'entier, vous devrez le convertir :
let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Convertir avec 'as usize'Ceci ne compilera pas :
let repeated = "z".repeat(num);
// Erreur : usize attendu, i32 trouvéDéfi
FacileChaque cas de test a une entrée - un nombre entier impair.
Votre tâche consiste à imprimer une n - pyramide en utilisant *, voici quelques exemples :
1 - pyramide
*5 - pyramide
*
***
*****7 - pyramide
*
***
*****
*******Entrée
- un entier impair
nfourni par l'utilisateur - 1 <=
n< 1000
Conseils
- Essayez de commencer par les petits triangles
- Consultez l'indice si vous êtes bloqué ;)
nreprésente le nombre de*dans la rangée du bas
Remarque : En Rust, les fonctions qui traitent de la "taille" ou de la "longueur" de quelque chose (comme .repeat()) nécessitent un type appelé usize au lieu de i32 ; vous pouvez traiter usize comme un nombre entier normal qui n'est jamais négatif.
Aide-mémoire
Pour créer des chaînes de caractères avec des caractères répétés en Rust, utilisez la méthode repeat() :
let str = "a".repeat(10);Cela crée "aaaaaaaaaa" (10 répétitions de "a").
La méthode repeat() n'accepte que le type usize (entier non signé de la taille d'un pointeur), et non i32 ou d'autres types d'entiers.
let count: usize = 5;
let repeated = "x".repeat(count); // Works
let num: i32 = 7;
let repeated = "y".repeat(num as usize); // Works
let repeated = "z".repeat(num); // Error: expected usize, found i32Essayez vous-même
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();
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fundamentals
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Afficher dans la consoleLire la saisie utilisateurRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 33Variables - Partie 2
Déclaration de typeConventions de nommageInférence de typeRécapitulatif - Initialiser des variablesConversion de type9Boucles
Boucle For sur une sérieBoucle WhileBreakContinueBoucles imbriquéesÉtiquettes de boucleBoucle infinieRécapitulatif - Entrée dynamique12Bases des tableaux
Déclaration de tableauxTableau comme paramètreAccès aux élémentsModification de tableauxRécapitulatif - Affichage formaté d'un tableau15Opérations sur les chaînes
Méthodes de chaînesMacro format!Conversion de chaînesRécapitulatif - Format