Médio Rust
Soma com loop e break
Enunciado
Use um loop infinito para somar números inteiros começando em 1. O loop deve parar quando a soma ultrapassar 50, e então imprimir a soma final e o último número somado.
Requisitos
- Use
loopcombreakpara encerrar. - O
breakdeve retornar uma tupla(soma, ultimo_numero). - Imprima no formato
Soma: X, Último número: Y.
Código inicial
fn main() {
// use loop e break com valor
}
Saída esperada
Soma: 55, Último número: 10
Ver dica
A soma de 1 a 10 é 55. O break pode retornar uma tupla com os valores desejados.
Mostrar solução
fn main() {
let mut soma = 0;
let mut numero = 1;
// loop infinito que retorna uma tupla no break
let (soma_final, ultimo) = loop {
soma += numero;
if soma > 50 {
break (soma, numero); // retorna a soma e o número que fez ultrapassar
}
numero += 1;
};
println!("Soma: {}, Último número: {}", soma_final, ultimo);
}
Passo a passo
- Inicializamos
somacom 0 enumerocom 1. - Entramos em um
loopinfinito. - Dentro do loop, somamos
numeroàsoma. - Verificamos se
soma > 50. Se sim, usamosbreakpara sair do loop retornando uma tupla(soma, numero). - Se não, incrementamos
numeroe continuamos. - O valor retornado pelo
breaké atribuído às variáveissoma_finaleultimovia desestruturação. - Imprimimos o resultado.
Por que funciona
O loop é a única construção de repetição que pode retornar um valor através do break. Isso é útil quando você precisa acumular um resultado e só sabe quando parar dentro do próprio loop. A tupla permite retornar múltiplos valores de uma vez.
Erros comuns
- Esquecer de incrementar
numerodentro do loop: isso causaria um loop infinito sem fim. - Tentar usar
break valorem umwhileoufor: isso não é permitido; apenasloopaceita valor nobreak. - Declarar
soma_finaleultimocomo mutáveis sem necessidade: elas são imutáveis após a atribuição.
Outra forma de resolver
Poderia usar while soma <= 50 com uma variável mutável para armazenar o último número, mas o loop com break é mais direto e evita estado extra.
Saída esperada
Soma: 55, Último número: 10