Menu
Coddy logo textTech

Geçmişli Hesap Makinesi

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 56 / 56.

challenge icon

Görev

Orta

Bir ifade akışını işleyen, hataları tolere eden ve sonunda operatör bazlı bir geçmiş raporlayan bir hesap makinesi oluşturun.

Tek bir girdi satırı okuyun: virgülle ayrılmış a:op:b ifadelerinden oluşan bir liste. Operatörler +, -, *, / şeklindedir. parse, divideByZero, unknownOp durumlarını içeren bir CalcError: Error enum yapısı tanımlayın.

Her bir ifade için sırasıyla:

  • Başarılı durumlarda = <n> yazdırın
  • Her bir hata durumu için parse, divZero veya unknownOp yazdırın

İfade bazlı satırlardan sonra, en az bir kez başarılı olan her operatör için sabit +, -, *, / sırasına göre birer satır yazdırın:

<op>: count=<n> sum=<total>

count, o operatörün kaç kez başarılı olduğudur; sum ise bu başarılı sonuçların toplamıdır.

3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2 girdisi için çıktı şöyledir:

= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14

Kendin dene

let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]

// YAPILACAK: enum CalcError; func compute(...) throws -> Int;
// döngü, do/try, sonucu yazdır; işlem başına geçmiş oluştur;
// sabit sırada nihai rapor, yalnızca başarılı olan işlemler

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