Итоги: поиск элемента
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 41 из 66.
Задание
ЛегкоВы получите два входных значения. Первое значение — это список чисел, разделенных запятыми (например, 10,20,30,40), а второе значение — целевое число для поиска. Преобразуйте числа, разделенные запятыми, в вектор, а затем выполните поиск целевого числа. Используйте .iter().position() для поиска индекса целевого числа, который возвращает Option<usize>. Обработайте оба случая с помощью match и выведите соответствующее сообщение.
Требования:
- Прочитайте первый ввод (числа, разделенные запятыми) и удалите лишние пробелы
- Разделите строку по запятым и преобразуйте каждую часть в
i32для создания вектора - Прочитайте второй ввод (целевое число) и удалите лишние пробелы
- Преобразуйте целевое число в
i32 - Используйте
.iter().position(|&x| x == target)для поиска цели в векторе - Используйте выражение
matchдля обработкиOption, возвращаемого методом.position() - В ветке
Some(index)выведите:Found at index [index] - В ветке
Noneвыведите:Not found
Ввод:
- Первая строка: Числа, разделенные запятыми (например,
10,20,30,40) - Вторая строка: Целевое число для поиска (например,
30)
Вывод:
- Если цель найдена:
Found at index [index] - Если цель не найдена:
Not found
Попробуйте сами
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Прочитать числа, разделенные запятыми
let numbers_input = lines.next().unwrap().unwrap().trim().to_string();
// Прочитать целевое число
let target_input = lines.next().unwrap().unwrap().trim().to_string();
// Разобрать числа, разделенные запятыми, в вектор
let numbers: Vec<i32> = numbers_input
.split(',')
.map(|s| s.trim().parse().unwrap())
.collect();
// Разобрать целевое число
let target: i32 = target_input.parse().unwrap();
// TODO: Напишите свой код ниже
// Используйте .iter().position(), чтобы найти цель, и match для обработки результата
}Все уроки раздела Logic & Flow
1Продвинутое управление потоком выполнения
Выражение 'match'Сопоставление нескольких значенийСопоставление диапазоновВыражение 'if let'Циклы как выраженияИтоги — Простой парсер команд4Группировка данных с помощью структур
Что такое структура?Обзор структурДоступ к полям структурыИзменяемые структурыСтруктуры как параметры функцийКортежные структурыИтоги: создание структуры Book7Обработка ошибок с помощью 'Result'
Что такое 'Result'?Использование 'match' с 'Result'is_ok() и is_err()Сокращения: unwrap и expectОператор вопросительного знака '?'Парсинг строк в числаИтоги: функция безопасного деления10Замыкания и анонимные функции
Что такое замыкание?Определение простого замыканияЗамыкания с параметрамиЗахват окруженияИтоги: Простое замыкание-сумматор2Введение в векторы
Что такое вектор?Создание вектораДобавление элементов с помощью pushДоступ к элементам вектораИтерация по векторуИзменяемая итерацияУдаление элементовИтоги — Простой счетчик очков5Пары «ключ-значение» в Hash Map
Что такое Hash Map?Создание Hash MapВставка пар «ключ-значение»Доступ к значениямИтерация по Hash MapОбновление значенияУдаление парыИтоги — Счетчик слов8Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элемента