Menu
Coddy logo textTech

Kategoriye Göre Harcama

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

challenge icon

Görev

Kolay

CATEGORY komutunu ekleyin. Önceki adımlardaki tüm komutların tam olarak daha önceki gibi çalışmasını sağlayın.

  • CATEGORY: kategori başına alfabetik sırayla bir satır yanıt verin: food: 20.50; kategorinin toplamını iki ondalık basamakla gösterin. Hiçbir kayıt yoksa no expenses yanıtını verin.

Bir CATEGORY komutu birden fazla yanıt üretir ve her biri kendi satırına yazdırılır.

Sağlanan kod, her giriş satırını tek bir komut olarak tracker() işlevine aktarır ve döndürülen her yanıtı kendi satırına yazdırır. Tarihler YYYY-MM-DD biçiminde yazılır, kategoriler küçük harfli kelimelerdir ve giriş yalnızca şimdiye kadar açıklanan komutları içerir.

GEREKLİ ÇIKTI BİÇİMİ: [Çevrilmiş içeriğiniz burada]

Kendin dene

tracker <- function(commands) {
  expenses <- data.frame(date = character(0), category = character(0), amount = numeric(0))
  replies <- c()
  for (cmd in commands) {
    parts <- strsplit(cmd, " ")[[1]]
    if (parts[1] == "ADD") {
      amount <- suppressWarnings(as.numeric(parts[4]))
      if (length(parts) != 4 || is.na(amount) || amount <= 0) {
        replies <- c(replies, paste("invalid:", cmd))
      } else {
        expenses <- rbind(expenses, data.frame(date = parts[2], category = parts[3], amount = amount))
        replies <- c(replies, sprintf("added %s %.2f", parts[3], amount))
      }
    } else if (parts[1] == "TOTAL") {
      replies <- c(replies, sprintf("total: %.2f, count: %d", sum(expenses$amount), nrow(expenses)))
    }
  }
  replies
}

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

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

Kendi başına pratik yap: Online R derleyicisi