Menu
Coddy logo textTech

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 fonctionne

Si 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é
challenge icon

Défi

Facile

Chaque 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 n fourni par l'utilisateur
  • 1 <= n < 1000

Conseils

  • Essayez de commencer par les petits triangles
  • Consultez l'indice si vous êtes bloqué ;)

n repré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 i32

Essayez 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();

    
}
quiz iconTestez-vous

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