Recapitulação - Calculadora Segura
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 56 de 64.
Desafio
DifícilComplete 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 numberquando não houver exatamente três partes'<part>' is not a numberpara a primeira parte numérica que não puder ser convertida, como'x' is not a numberunknown 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
1Strings em Profundidade
Substrings com substr()Formatação com sprintf()Dividindo e UnindoPesquisando StringsSubstituindo TextoRecapitulação - Criador de Nome de Usuário4Matrizes
Criando MatrizesIndexando MatrizesResumos de Linhas e ColunasAritmética de MatrizesRecapitulação - Tabela de Assentos10Fluxo de Controle Avançado
A Função switch()ifelse() Vetorizadorepeat e breakFunções RecursivasRevisão — Classificador de Notas2Consultas de Chave-Valor
Consultas em Vetores NomeadosVerificando ChavesAdicionando e Removendo ChavesPercorrendo NomesRecapitulação - Mesa de Ações5Projeto - Boletim de Notas
Adicionando AlunosRegistrando Notas8Ordenação e Agrupamento
Ordenando VetoresOrdenando por uma ChaveAgrupando com split()Resumos de GruposRecapitulação - Tabela de Classificação11Tratamento de Erros
Gerando Erros com stop()Capturando com tryCatch()Avisos e finallyValidando a EntradaRecapitulação - Calculadora Segura3Conjuntos e Contagem
Valores ÚnicosOperações com ConjuntosTestes de PertinênciaContagem com table()Recapitulação - Convidados do Evento6Funções como Valores
Funções AnônimasPassando FunçõesRetornando FunçõesClosures com EstadoRecapitulação - Regras de Desconto9Data Frames
Criando Data FramesColunas e LinhasFiltrando LinhasAdicionando e OrdenandoRecapitulação - Relatório de Vendas12Projeto - Rastreador de Despesas
Registro de DespesasGastos TotaisPratique por conta própria: Compilador de R online