Menu
Coddy logo textTech

Récapitulatif - Températures

Fait partie de la section Programmation orientée objet du Journey R de Coddy. Leçon 6 sur 57.

challenge icon

Défi

Moyen

Construisez la classe S3 temperature dans Temperature.R. Une température est un nombre doté d’un attribut unit (C ou F).

  • new_temperature(value, unit) vérifie les types avec stopifnot() et renvoie structure(value, unit = unit, class = "temperature").
  • validate_temperature(x) s’arrête avec unit must be C or F, ou avec below absolute zero lorsque la valeur est inférieure à -273.15 C ou -459.67 F.
  • temperature(value, unit = "C") convertit la valeur avec as.double(), met l’unité en majuscules et renvoie une température validée.
  • format.temperature() renvoie 21.5 C avec une décimale, et print.temperature() affiche Temperature: 21.5 C et renvoie invisible(x).
  • convert_to(t, unit) renvoie une température dans l’unité indiquée (la même valeur lorsque l’unité correspond déjà).

Utilisez call. = FALSE dans chaque stop(). Le code fourni lit des lignes 21.5 c F (valeur, unité, unité cible), affiche la température et la température convertie, ou error: ainsi que le message.

Votre code doit être placé dans Temperature.R. main.R contient le code d’entrée/sortie fourni et ne peut pas être modifié.

Essayez vous-même

source("Temperature.R")

# Code d'entrée/sortie fourni : le garder tel quel
input <- suppressWarnings(readLines(file("stdin")))
for (line in input) {
  p <- strsplit(line, " ")[[1]]
  result <- tryCatch({
    t <- temperature(p[1], p[2])
    print(t)
    print(convert_to(t, p[3]))
    NULL
  }, error = function(e) cat("error: ", conditionMessage(e), "\n", sep = ""))
}

Toutes les leçons de Programmation orientée objet

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