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
OrtaHatalara 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,divZeroveyaunknownOpyazdı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=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 İstatistikleriKendi başına pratik yap: Swift playground