Removendo uma Tarefa
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 18 de 66.
Desafio
FácilVocê receberá três entradas: primeiro, uma lista de tarefas existentes separadas por vírgulas; segundo, o número de uma tarefa para remover (indexação baseada em 1); e terceiro, uma nova tarefa para adicionar após a remoção. Leia todas as entradas, crie um vetor a partir das tarefas, remova a tarefa especificada, adicione a nova tarefa e exiba a lista de tarefas atualizada.
Requisitos:
- Leia a primeira entrada contendo descrições de tarefas separadas por vírgulas (ex:
Buy groceries,Call dentist,Finish homework) - Divida a string por vírgulas para obter as tarefas individuais
- Crie um vetor mutável e adicione cada tarefa a ele
- Leia a segunda entrada e converta-a em um número inteiro (o número da tarefa a ser removida, usando indexação baseada em 1)
- Converta o índice baseado em 1 para baseado em 0 e use
.remove()para remover a tarefa naquele índice - Leia a terceira entrada contendo uma nova tarefa para adicionar
- Use
.push()para adicionar a nova tarefa ao vetor - Imprima o número total de tarefas no formato:
Total tasks: X - Imprima cada tarefa em uma linha separada no formato:
Task: [task description]
Entrada:
- Primeira linha: Descrições de tarefas separadas por vírgulas (ex:
Buy groceries,Call dentist,Finish homework) - Segunda linha: Um número inteiro representando o número da tarefa a ser removida (indexação baseada em 1)
- Terceira linha: Uma nova tarefa para adicionar (ex:
Study for exam)
Saída:
- Primeira linha:
Total tasks: Xonde X é o número total de tarefas após a remoção e adição - Linhas seguintes: Cada tarefa impressa como
Task: [task description]
Experimente você mesmo
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Ler as tarefas separadas por vírgula
let tasks_input = lines.next().unwrap().unwrap();
// Ler o número da tarefa a ser removida (indexação baseada em 1)
let task_to_remove = lines.next().unwrap().unwrap();
let task_number: usize = task_to_remove.trim().parse().unwrap();
// Ler a nova tarefa a ser adicionada
let new_task = lines.next().unwrap().unwrap();
// TODO: Escreva seu código abaixo
// Dividir o tasks_input por vírgulas e criar um vetor mutável
// Remover a tarefa no índice especificado (converter de base 1 para base 0)
// Adicionar a nova tarefa ao vetor
// Exibir os resultados
// Imprimir o total de tarefas no formato: Total tasks: X
// Imprimir cada tarefa no formato: Task: [task description]
}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 Final