Menu
Coddy logo textTech

Removendo uma Tarefa

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 18 de 66.

challenge icon

Desafio

Fácil

Você 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: X onde 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