Menu
Coddy logo textTech

Otopark

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

challenge icon

Görev

Zor

Bir otopark garajı oluşturun. Vehicle.R, sanal S4 sınıfı Vehicle'ı ( plate yuvası), size_rank(v) ve rate(v) jeneriklerini ve 1, 2 ve 3. sıralar için SIZES adlarını: small, medium, large tanımlar.

  • Motorbike.R, Car.R ve Van.R dosyalarında sınıflar tanımlanır; yöntemlerini ekleyin: bir motosikletin sırası 1'dir ve saat başına 1 öder, bir arabanın sırası 2'dir ve saat başına 3 öder, bir minibüsün sırası 3'tür ve saat başına 5 öder.
  • Garage.R içinde Reference Class Garage'ı tamamlayın. free alanı her sıra için boş yerleri tutar ve parked, plakalara göre bir listedir. park(v), aracın kendi sırasındaki boş bir yeri veya boş yer yoksa bir sonraki büyük sıradaki yeri alır ve parked AB12 in medium, full for AB12 ya da AB12 is already parked yanıtlarından birini verir. leave(plate, hours) yeri boşaltır ve AB12 paid 9 (saatlik ücret ile saat sayısının çarpımı, en az 1 saat) ya da no vehicle AB12 yanıtını verir. status() ise free: small 1, medium 0, large 2; parked: 1 yanıtını verir.

Sağlanan kod, boş yerleri small,medium,large olarak okur; ardından park car AB12 (bike, car veya van), leave AB12 3 ya da status komutlarını işler ve her yanıtı yazdırır.

Kodunuz Vehicle.R, Motorbike.R, Car.R, Van.R ve Garage.R dosyalarına gider. main.R, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.

Kendin dene

source("Vehicle.R")
source("Motorbike.R")
source("Car.R")
source("Van.R")
source("Garage.R")

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
garage <- Garage$new(free = as.numeric(strsplit(input[1], ",")[[1]]))
for (line in input[-1]) {
  p <- strsplit(line, " ")[[1]]
  reply <- switch(p[1],
    park = garage$park(switch(p[2],
      bike = new("Motorbike", plate = p[3]),
      car = new("Car", plate = p[3]),
      van = new("Van", plate = p[3]))),
    leave = garage$leave(p[2], as.numeric(p[3])),
    status = garage$status())
  cat(reply, "\n", sep = "")
}

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

Kendi başına pratik yap: Online R derleyicisi