Saatnya Anda menerapkan bahasa berbasis tumpukan baru saya! Ini disebut StackyMath. Ini akan menjadi bahasa berbasis stack dengan 8 operasi pada stack dan cara-cara untuk menambahkan angka ke stack.
Daftar operasi:
/: Divisi. Dilakukan di 2 angka teratas tumpukan. Dorong kembali hasilnya di tumpukan.*: Perkalian. Dilakukan di 2 angka teratas tumpukan. Dorong kembali hasilnya di tumpukan-: Pengurangan. Dilakukan di 2 angka teratas tumpukan. Dorong kembali hasilnya di tumpukan+: Penambahan. Dilakukan di 2 angka teratas tumpukan. Dorong kembali hasilnya di tumpukan^: Eksponensial. Dilakukan di 2 angka teratas tumpukan. Dorong kembali hasilnya di tumpukan%: Modulo. Dilakukan di 2 angka teratas tumpukan. Dorong kembali hasilnya di tumpukan!: Faktorial. Dilakukan di nomor atas di tumpukan. Dorong kembali hasilnya di tumpukanD: Gandakan nomor teratas di tumpukan
Operasi yang didefinisikan dalam kode semu:
/:push(pop divided by pop)*:push(pop times pop)-:push(pop minus pop)+:push(pop plus pop)^:push(pop to the pop)%:push(pop mod pop)!:push(factorial pop)D:t = pop; push(t); push(t)
Cara mendorong angka ke tumpukan:
Menambahkan nomor ke tumpukan itu mudah, cukup masukkan angka mentah di program Anda di mana Anda membutuhkannya. Jika Anda perlu meletakkan beberapa angka di tumpukan, Anda dapat memisahkannya dengan koma ( ,). Program Anda tidak perlu memproses -angka dalam input, Jika pengguna menginginkannya, mereka harus menekan angka yang ingin dinegasikan, nol, dan -. Angka dalam input program juga dibatasi untuk bilangan bulat positif.
Memasukkan:
Program Anda harus mengambil input pada baris perintah, atau dari std in. Input hanya akan terdiri dari angka (tidak ada notasi ilmiah atau desimal) yang dibatasi oleh ,sesuai kebutuhan, dan operasi yang ditentukan di atas.
Keluaran:
Program Anda harus mencetak nomor di bagian atas tumpukan.
Kasus kesalahan:
- Jika program mencoba untuk over-pop stack, Anda harus mencetak
StackUnderflowException!!!. - Jika Anda memiliki pembagian dengan nol, cetak
DivisionByZeroException!!! - Jika angka yang melebihi 64-bit, baik saat menjalankan program atau memproses angka dalam input, cetak
NumberOverflowException!!! - Jika entah bagaimana Anda mendapatkan angka negatif di bagian atas tumpukan dan Anda perlu melakukan faktorial, cetak
NegativeFactorialException!!! - Jika Anda memiliki nomor floating point di bagian atas tumpukan dan operasi selanjutnya adalah faktorial, cetak
FloatingFactorialException!!! - Jika tidak ada angka pada tumpukan ketika program keluar (mis. Program kosong) cetak
EmptyProgram!!!
Catatan:
- Semua output kesalahan harus mendapat kesalahan atau setara terdekat.
- Semua angka dibatasi ke titik apung 64-bit.
Contoh program:
50,47* -> 2350
50,47/ -> 0.94
100,8! -> 40320
100D* -> 10000
! -> StackUnderflowException!!!
5,2/! -> FloatingFactorialException!!!
4,3!2*/ -> 3
654,489,48,43/5*7D+-*% -> 77.68749999999909
-> EmptyProgram!!!
(Saya dapat menambahkan lebih banyak jika diperlukan)
654,489,48,43/5*7D+-*%harus kembali 77.6875. ( 43/48*5-(7+7)seharusnya (7+7)-43/48*5)
!keF).