Menu
Coddy logo textTech

Özet - Personel Bordrosu

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

challenge icon

Görev

Orta

Üç dosya üzerinden bir bordro oluşturun. Genel pay() işlevi Employee.R içinde verilmiştir.

  • Employee.R: new_employee(name, salary, ..., class = character()); pay.employee() maaşın 12'ye bölünmüş hâlidir; format.employee(), pay() işlevi iki ondalık basamağa biçimlendirilmiş olarak Ada: 5000.00 döndürür; ayrıca manager_cost(staff), manager'dan miras alan herkesin aylık toplam ücretini verir.
  • Manager.R: ek bonus alanıyla new_manager(name, salary, bonus); pay.manager(), NextMethod() ile bonusun on ikide birini çalışan ücretine ekler; format.manager(), NextMethod() ile çalışan metninin sonuna (manager) ekler.
  • Intern.R: new_intern(name, salary); pay.intern(), NextMethod() kullanarak çalışan ücretinin yarısıdır. Stajyerler çalışan biçimini korur.

Sağlanan kod employee Bo 36000, manager Ada 60000 12000 veya intern Cy 24000 satırlarını okur, her kişinin biçimini ve ardından yöneticilerin toplamını yazdırır.

Kodunuz Employee.R, Manager.R ve Intern.R dosyalarına gider. main.R, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

source("Employee.R")
source("Manager.R")
source("Intern.R")

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
staff <- list()
for (line in input) {
  p <- strsplit(line, " ")[[1]]
  staff[[length(staff) + 1]] <- switch(p[1],
    employee = new_employee(p[2], as.numeric(p[3])),
    manager = new_manager(p[2], as.numeric(p[3]), as.numeric(p[4])),
    intern = new_intern(p[2], as.numeric(p[3])))
}
for (x in staff) cat(format(x), "\n", sep = "")
cat(sprintf("managers cost %.2f per month", manager_cost(staff)), "\n", sep = "")

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

Kendi başına pratik yap: Online R derleyicisi