Menu
Coddy logo textTech

Öğrenci Ortalamaları

Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 24 / 64.

challenge icon

Görev

Kolay

AVG komutunu ekle. Önceki adımlardaki her komutun tam olarak eskisi gibi çalışmaya devam etmesini sağla.

  • AVG <name>: bilinmeyen bir öğrenci için no student <name>, notu olmayan bir öğrenci için <name>: no grades yanıtını ver; diğer durumlarda <name>: ifadesinin ardından notlarının bir ondalık basamakla biçimlendirilmiş ortalamasını ver; örneğin ada: 88.8.

Bir puan vektörünü no grades değerine veya biçimlendirilmiş ortalamaya dönüştüren bir yardımcı işlev, bir sonraki adımda da yararlı olacaktır.

Sağlanan kod, her girdi satırını tek bir komut olarak gradebook() işlevine aktarır ve döndürülen her yanıtı kendi satırında yazdırır. Bir ad, küçük harflerden oluşan tek bir kelimedir ve girdi yalnızca şimdiye kadar açıklanan komutları içerir.

Kendin dene

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
}

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi