Menu
CoddyTech

Ajouter des élèves

Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 22 sur 64.

Dans ce projet, tu construis un carnet de notes qui lit des commandes, une par ligne, et répond à chacune d’elles. En cinq étapes, il apprend à ajouter des élèves, à enregistrer des notes, à communiquer les moyennes et à trouver le meilleur élève. Chaque étape étend la même fonction gradebook(commands).

ADD ada
GRADE ada 90
AVG ada
REPORT
TOP

Les notes sont stockées dans une liste nommée : le nom de chaque étudiant correspond à un vecteur numérique contenant ses notes. Une liste convient, car chaque étudiant possède plusieurs valeurs.

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

Résultat :

[1] 1
[1] "ada"

numeric(0) est un vecteur numérique vide. Utiliser c() ne fonctionnerait pas ici : cela donne NULL, et affecter NULL supprime une entrée de la liste.

Chaque commande est séparée aux espaces, donc parts[1] est la commande et parts[2] le nom. Une chaîne if / else if détermine quoi faire :

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

Les réponses sont regroupées avec replies <- c(replies, ...) et renvoyées à la fin.

challenge icon

Défi

Facile

Complète gradebook(commands) pour la première commande :

  • ADD <name> : si l’élève est nouveau, enregistre-le sans notes et réponds added <name>. Si le nom est déjà enregistré, réponds <name> already exists.

Le code fourni transmet chaque ligne d’entrée à gradebook() comme une commande et affiche chaque réponse renvoyée sur sa propre ligne. Un nom est un seul mot en minuscules, et l’entrée ne contient que les commandes décrites jusqu’à présent.

Essayez vous-même

gradebook <- function(commands) {
  grades <- list()
  replies <- c()
  for (cmd in commands) {
    parts <- strsplit(cmd, " ")[[1]]
    name <- parts[2]
    # Écrivez votre code ici
  }
  replies
}

# Code d'entrée/sortie fourni : conservez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur R en ligne