Kalkulator dengan Riwayat
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 56 dari 56.
Tantangan
SedangBuat kalkulator yang memproses aliran ekspresi, menangani error, dan melaporkan riwayat tiap operator di akhir.
Baca satu baris input: daftar ekspresi a:op:b yang dipisahkan dengan koma. Operatornya adalah +, -, *, /. Definisikan enum CalcError: Error dengan kasus parse, divideByZero, unknownOp.
Untuk setiap ekspresi, secara berurutan:
- Cetak
= <n>jika berhasil - Cetak
parse,divZero, atauunknownOpuntuk setiap kasus error
Setelah baris untuk setiap ekspresi, cetak satu baris untuk setiap operator yang berhasil setidaknya sekali, dengan urutan tetap +, -, *, /:
<op>: count=<n> sum=<total>count adalah berapa kali operator tersebut berhasil, sedangkan sum adalah total dari hasil yang berhasil.
Untuk input 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2, output-nya adalah:
= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14Coba sendiri
let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]
// TODO: buat enum CalcError; func compute(...) throws -> Int;
// buat perulangan, gunakan do/try, cetak hasil; susun riwayat tiap operator;
// buat laporan akhir dengan urutan tetap, hanya untuk operator yang berhasil
Semua pelajaran di Logika dan Alur
1Mendalami string
Jumlah dan indeksHuruf besar, huruf kecil, dan hapus spasiMencari dalam stringMemisahkan dan menggabungkanMengganti substringUlasan: Memeriksa nama pengguna4set
Membuat setGabungan dan IrisanSelisih dan Selisih SimetrisHimpunan Bagian dan Himpunan SupersetRingkasan: Filter Tag7Proyek: Pelacak Kebiasaan
Gambaran Umum ProyekTandai Selesai2Rentang dan Langkah
Rentang Tertutup vs Setengah TerbukaLangkahMetode RentangRentang dalam SwitchRangkuman: Kisi KalenderLatihan sendiri: Playground Swift