Menu
CoddyTech

Padrão Numérico

Parte da seção Fundamentos do Journey de Rust da Coddy. Lição 73 de 75.

Ao criar padrões como pirâmides, muitas vezes precisamos criar strings com caracteres repetidos. Em Rust, há várias maneiras de fazer isso, mas aqui está um dos métodos mais simples:

let str = "a".repeat(10);

str conterá "aaaaaaaaaa"

O método repeat() exige especificamente um argumento usize, não um tipo inteiro comum como i32.

usize é o tipo inteiro sem sinal do tamanho de um ponteiro do Rust — seu tamanho depende da sua arquitetura (32 bits em sistemas de 32 bits, 64 bits em sistemas de 64 bits).

let count: usize = 5;
let repeated = "x".repeat(count);  // Isso funciona

Se você tiver um i32 ou outro tipo inteiro, precisará convertê-lo:

let num: i32 = 7;
let repeated = "y".repeat(num as usize);
// Converta com 'as usize'

Isto não será compilado:

let repeated = "z".repeat(num);
// Erro: esperado usize, encontrado i32
challenge icon

Desafio

Fácil

Cada caso de teste tem uma entrada: um número inteiro ímpar.
Sua tarefa é imprimir uma pirâmide de n usando *. Veja alguns exemplos:

Pirâmide de 1

*

Pirâmide de 5

*
***
*****

Pirâmide de 7

*
***
*****
*******

Entrada

  • Um número inteiro ímpar n informado pelo usuário
  • 1 <= n < 1000

Dicas

  • Tente começar pelos triângulos pequenos
  • Consulte a dica se você ficar em dúvida ;)

n representa o número de  * na linha de baixo

Observação: Em Rust, funções que lidam com o "tamanho" ou o "comprimento" de algo (como .repeat()) exigem um tipo chamado usize em vez de i32; você pode tratar usize como um número inteiro comum que nunca é negativo.

Experimente você mesmo

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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Rust online