Recapitulação - Encontrar um Elemento
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 41 de 66.
Desafio
FácilVocê receberá duas entradas. A primeira entrada é uma lista de números separados por vírgulas (ex: 10,20,30,40), e a segunda entrada é um número alvo para pesquisar. Analise os números separados por vírgulas em um vetor e, em seguida, procure pelo número alvo. Use .iter().position() para encontrar o índice do número alvo, que retorna um Option<usize>. Trate ambos os casos usando match e imprima a mensagem apropriada.
Requisitos:
- Leia a primeira entrada (números separados por vírgulas) e remova os espaços em branco
- Divida a entrada por vírgulas e analise cada parte em
i32para criar um vetor - Leia a segunda entrada (número alvo) e remova os espaços em branco
- Analise o número alvo para
i32 - Use
.iter().position(|&x| x == target)para procurar o alvo no vetor - Use uma expressão
matchpara tratar oOptionretornado por.position() - No braço
Some(index), imprima:Found at index [index] - No braço
None, imprima:Not found
Entrada:
- Primeira linha: Números separados por vírgulas (ex:
10,20,30,40) - Segunda linha: Um número alvo para pesquisar (ex:
30)
Saída:
- Se o alvo for encontrado:
Found at index [index] - Se o alvo não for encontrado:
Not found
Experimente você mesmo
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Leia os números separados por vírgula
let numbers_input = lines.next().unwrap().unwrap().trim().to_string();
// Leia o número alvo
let target_input = lines.next().unwrap().unwrap().trim().to_string();
// Analise os números separados por vírgula em um vetor
let numbers: Vec<i32> = numbers_input
.split(',')
.map(|s| s.trim().parse().unwrap())
.collect();
// Analise o número alvo
let target: i32 = target_input.parse().unwrap();
// TODO: Escreva seu código abaixo
// Use .iter().position() para encontrar o alvo e match para lidar com o resultado
}Todas as lições de Logic & Flow
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo Final6Lidando com a Ausência com 'Option'
O que é um 'Option'?Usando 'match' com 'Option'is_some() e is_none()Fazendo o unwrap de um 'Option'O método expectFornecendo um valor padrão: unwrap_orRecapitulação - Encontrar um Elemento