Menu
Coddy logo textTech

סיכום – שכר העובדים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-R של Coddy. שיעור 16 מתוך 57.

challenge icon

אתגר

בינוני

בנו מערכת שכר בשלושה קבצים. הפונקציה הגנרית pay() נתונה בקובץ Employee.R.

  • Employee.R: new_employee(name, salary, ..., class = character()); pay.employee() היא המשכורת חלקי 12; format.employee() מחזירה Ada: 5000.00 כאשר pay() מעוצבת עם שתי ספרות אחרי הנקודה העשרונית; ו-manager_cost(staff), סך התשלום החודשי לכל מי שיורש מ-manager.
  • Manager.R: new_manager(name, salary, bonus) עם השדה הנוסף bonus; pay.manager() מוסיפה לתשלום העובד שתים-עשרה מהבונוס באמצעות NextMethod(); format.manager() מוסיפה (manager) אחרי הטקסט של העובד באמצעות NextMethod().
  • Intern.R: new_intern(name, salary); pay.intern() היא מחצית מתשלום העובד, באמצעות NextMethod(). המתמחים שומרים על פורמט העובד.

הקוד שסופק קורא שורות employee Bo 36000, manager Ada 60000 12000 או intern Cy 24000, מדפיס את הפורמט של כל אדם, ואז את הסכום הכולל של המנהלים.

הקוד שלכם ייכתב בקבצים Employee.R, Manager.R ו-Intern.R. הקובץ main.R מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.

נסו בעצמכם

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

# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
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 = "")

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר R אונליין