Menu
CoddyTech

Rata-Rata Siswa

Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 24 dari 64.

challenge icon

Tantangan

Mudah

Tambahkan perintah AVG. Pastikan setiap perintah dari langkah sebelumnya tetap berfungsi persis seperti sebelumnya.

  • AVG <name>: balas no student <name> untuk siswa yang tidak dikenal, <name>: no grades untuk siswa yang belum memiliki nilai, dan selain itu balas <name>: diikuti dengan rata-rata nilainya hingga satu angka desimal, seperti ada: 88.8.

Fungsi pembantu yang mengubah vektor nilai menjadi no grades atau rata-rata berformat akan berguna lagi pada langkah berikutnya.

Kode yang disediakan meneruskan setiap baris input ke gradebook() sebagai satu perintah dan mencetak setiap balasan yang dikembalikan pada barisnya sendiri. Nama berupa satu kata huruf kecil, dan input hanya berisi perintah yang telah dijelaskan sejauh ini.

Coba sendiri

gradebook <- function(commands) {
  grades <- list()
  replies <- c()
  for (cmd in commands) {
    parts <- strsplit(cmd, " ")[[1]]
    name <- parts[2]
    if (parts[1] == "ADD") {
      if (name %in% names(grades)) {
        replies <- c(replies, paste(name, "already exists"))
      } else {
        grades[[name]] <- numeric(0)
        replies <- c(replies, paste("added", name))
      }
    } else if (parts[1] == "GRADE") {
      if (!(name %in% names(grades))) {
        replies <- c(replies, paste("no student", name))
      } else {
        score <- as.numeric(parts[3])
        grades[[name]] <- c(grades[[name]], score)
        replies <- c(replies, paste("recorded", score, "for", name))
      }
    }
  }
  replies
}

# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler R online