Menu
Coddy logo textTech

Özet - Güvenli Hesap Makinesi

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

challenge icon

Görev

Orta

Hatalı girişlere karşı güvenli olan küçük bir hesap makinesi oluşturun.

Şu durumlara (cases) sahip bir CalcError: Error tanımlayın: parse, divideByZero, unknownOp.

Şunları yapan, hata fırlatabilen (throwing) bir compute(_ a: String, _ op: String, _ b: String) throws -> Int fonksiyonu tanımlayın:

  • a ve b değerlerini tam sayı olarak ayrıştırır, biri başarısız olursa .parse hatası fırlatır
  • op değeri +, -, *, / operatörlerinden biri değilse .unknownOp hatası fırlatır
  • op == "/" ve b == 0 olduğunda .divideByZero hatası fırlatır
  • Aksi takdirde tam sayı sonucunu döndürür

Tek bir satır girdi okuyun: virgülle ayrılmış a:op:b ifadelerinden oluşan bir liste. Her birini sırayla bir do/catch bloğu ile işleyin. Her ifade için bir satır yazdırın:

  • Başarı durumunda = <n>
  • Her hata durumu için parse error, div by zero veya unknown op

İfade başına yazdırılan satırlardan sonra, bir özet satırı yazdırın: Başarıyla tamamlanan ifade sayısını içeren OK: <n>.

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

= 8
div by zero
parse error
unknown op
= 8
OK: 2

Kendin dene

let exprs = readLine()!.components(separatedBy: ",")

// TODO: enum CalcError; func compute(...) throws -> Int;
// döngü, do/try, her expr için sonucu yazdır; son olarak 'OK: <n>' yazdır

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