Menu
CoddyTech

Tổng chi tiêu

Thuộc phần Logic và luồng điều khiển trong hành trình R của Coddy. Bài học 58 trên 64.

challenge icon

Thử thách

Dễ

Thêm lệnh TOTAL vào tracker(). Giữ cho mọi lệnh từ các bước trước vẫn hoạt động chính xác như trước.

  • TOTAL: trả lời bằng total: , theo sau là tổng tất cả số tiền đã ghi nhận với hai chữ số thập phân, rồi đến , count: và số khoản chi, chẳng hạn như total: 512.50, count: 2. Khi chưa ghi nhận khoản nào, câu trả lời là total: 0.00, count: 0.

Code được cung cấp truyền từng dòng đầu vào cho tracker() dưới dạng một lệnh và in mỗi câu trả lời được trả về trên một dòng riêng. Ngày được viết theo định dạng YYYY-MM-DD, danh mục là các từ viết thường và đầu vào chỉ chứa những lệnh đã mô tả đến thời điểm này.

Tự làm thử

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))
      }
    }
  }
  replies
}

# Đoạn code đầu vào/đầu ra được cung cấp: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
cat(tracker(input), sep = "\n")

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch R online