Menu
Coddy logo textTech

Tekrar - Sıcaklıklar

Coddy'nin R Journey'sinin Nesne Tabanlı Programlama bölümünün bir parçası. Ders 6 / 57.

challenge icon

Görev

Orta

Temperature.R içinde temperature S3 sınıfını oluşturun. Bir sıcaklık, unit özniteliğine sahip bir sayıdır (C veya F).

  • new_temperature(value, unit), türleri stopifnot() ile kontrol eder ve structure(value, unit = unit, class = "temperature") döndürür.
  • validate_temperature(x), unit must be C or F mesajıyla durur veya değer -273.15 C ya da -459.67 F değerinin altındaysa below absolute zero mesajıyla durur.
  • temperature(value, unit = "C"), değeri as.double() ile dönüştürür, birimi büyük harfe çevirir ve doğrulanmış bir sıcaklık döndürür.
  • format.temperature(), bir ondalık basamakla 21.5 C döndürür; print.temperature() ise Temperature: 21.5 C yazdırır ve invisible(x) döndürür.
  • convert_to(t, unit), verilen birimde bir sıcaklık döndürür (birim zaten eşleşiyorsa aynı değeri döndürür).

Her stop() çağrısında call. = FALSE kullanın. Sağlanan kod, 21.5 c F satırlarını (değer, birim, hedef birim) okur, sıcaklığı ve dönüştürülmüş sıcaklığı yazdırır veya error: iletisini ve mesajı yazdırır.

Kodunuz Temperature.R içinde olmalıdır. main.R, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

source("Temperature.R")

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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 = ""))
}

Nesne Tabanlı Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi