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

Hatalara tolerans gösteren, bir ifade akışını işleyen ve sonunda operatör başına bir geçmiş bildiren 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. CalcError: Error, parse, divideByZero durumlarına sahip bir unknownOp enum'u tanımlayın.

Her ifade için, sırayla:

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

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

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

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

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

Kendi başına pratik yap: Swift playground