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
).