Menu
Coddy logo textTech

Adicionando Alunos

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

Neste projeto, você construirá um livro de notas que lê comandos, um por linha, e responde a cada um deles. Ao longo de cinco etapas, ele aprende a adicionar alunos, registrar notas, informar médias e encontrar o melhor aluno. Cada etapa amplia a mesma função gradebook(commands).

ADD ada
GRADE ada 90
AVG ada
REPORT
TOP

As notas ficam em uma lista nomeada: o nome de cada estudante é associado a um vetor numérico com as notas desse estudante. Uma lista é adequada porque cada estudante tem vários valores.

grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))

Saída:

[1] 1
[1] "ada"

numeric(0) é um vetor numérico vazio. Atribuir c() não funcionaria aqui: ele é NULL, e atribuir NULL remove uma entrada da lista.

Cada comando é dividido nos espaços, então parts[1] é o comando e parts[2] é o nome. Uma cadeia de if / else if escolhe o que fazer:

for (cmd in commands) {
  parts <- strsplit(cmd, " ")[[1]]
  name <- parts[2]
  if (parts[1] == "ADD") {
    # lidar com ADD
  }
}

As respostas são coletadas com replies <- c(replies, ...) e retornadas ao final.

challenge icon

Desafio

Fácil

Complete gradebook(commands) para o primeiro comando:

  • ADD <name>: se o estudante for novo, armazene-o sem notas e responda added <name>. Se o nome já estiver armazenado, responda <name> already exists.

O código fornecido passa cada linha de entrada para gradebook() como um comando e imprime cada resposta retornada em sua própria linha. Um nome é uma palavra em letras minúsculas, e a entrada contém apenas os comandos descritos até agora.

REQUIRED OUTPUT FORMAT: [Your translated content here]

Experimente você mesmo

gradebook <- function(commands) {
  grades <- list()
  replies <- c()
  for (cmd in commands) {
    parts <- strsplit(cmd, " ")[[1]]
    name <- parts[2]
    # Escreva seu código aqui
  }
  replies
}

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

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

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

Pratique por conta própria: Compilador de R online