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.
Görev
OrtaBir 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,divZeroveyaunknownOpyazdı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=14Kendin 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
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri