Menu
Coddy logo textTech

Recapitulação - Calculadora Segura

Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 56 de 64.

challenge icon

Desafio

Difícil

Complete evaluate(expr). Uma expressão é <number> <operator> <number> com espaços ao redor do operador, como 8 / 2. Gere erros com stop() para cada problema, verificando nesta ordem:

  • expected: number operator number quando não houver exatamente três partes
  • '<part>' is not a number para a primeira parte numérica que não puder ser convertida, como 'x' is not a number
  • unknown operator <op> quando o operador não for +, -, * ou /
  • division by zero

Caso contrário, retorne o resultado, arredondado para quatro casas decimais com round(value, 4).

Depois, complete run_all(exprs): avalie cada expressão dentro de tryCatch() e retorne uma linha por expressão, 8 / 2 = 4 ou 5 / 0 -> error: division by zero.

O código fornecido passa cada linha de entrada para run_all() e imprime cada linha retornada.

Experimente você mesmo

evaluate <- function(expr) {
  # Escreva seu código aqui
  0
}

run_all <- function(exprs) {
  # Escreva seu código aqui
  character(0)
}

# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de R online