Yeni yığın tabanlı dilimi uygulama zamanı! Adı StackyMath. Bu, yığında 8 işlem ve yığına sayı eklemenin yolları olan yığın tabanlı bir dil olacaktır.
İşlemler listesi:
/: Bölünme. Yığının ilk 2 sayısında gerçekleştirilir. Sonucu yığına geri iter.*: Çarpma işlemi. Yığının ilk 2 sayısında gerçekleştirilir. Sonucu yığına geri iter-: Çıkarma. Yığının ilk 2 sayısında gerçekleştirilir. Sonucu yığına geri iter+: İlave. Yığının ilk 2 sayısında gerçekleştirilir. Sonucu yığına geri iter^: Üs. Yığının ilk 2 sayısında gerçekleştirilir. Sonucu yığına geri iter%: Modulo. Yığının ilk 2 sayısında gerçekleştirilir. Sonucu yığına geri iter!: Faktöriyel. Yığının en üstündeki numarada gerçekleştirilir. Sonucu yığına geri iterD: Yığında en üstteki sayıyı çoğalt
Sahte kodda tanımlanan işlemler:
/: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)
Sayılar yığına nasıl aktarılır:
Yığına sayı eklemek kolaydır, ham sayıyı ihtiyacınız olan yere programınıza koyun. Yığına birden fazla sayı koymanız gerekirse, bunları virgülle ( ,) ayırabilirsiniz . Programınızın -girişteki sayıları işlemesine gerek yoktur , Kullanıcı bir tane isterse, negatif, sıfır ve istediği sayıyı itmelidir -. Program girişindeki sayılar da pozitif tamsayılarla sınırlıdır.
Giriş:
Programınız girdiyi komut satırından veya std girişinden almalıdır. Giriş yalnızca ,gerektiğinde sınırlanan sayılardan (bilimsel gösterim veya ondalık sayılar olmadan) ve yukarıda tanımlanan işlemlerden oluşur.
Çıktı:
Programınız numarayı yığının üstüne yazmalıdır.
Hata durumları:
- Program yığını aşırı doldurmaya çalışırsa, yazdırmalısınız
StackUnderflowException!!!. - Sıfıra bölme işleminiz varsa yazdırın
DivisionByZeroException!!! - Programı yürütürken veya girişteki bir sayıyı işlerken 64 biti geçen bir sayı varsa,
NumberOverflowException!!! - Bir şekilde yığının üstünde negatif bir sayı alırsanız ve bir faktöriyel yapmanız gerekiyorsa, yazdırın
NegativeFactorialException!!! - Yığının üstünde bir kayan nokta numaranız varsa ve bir sonraki işlem faktöriyelse,
FloatingFactorialException!!! - Program çıkarken (örn. Program boşken) yığınta sayı yoksa yazdırma
EmptyProgram!!!
Notlar:
- Tüm hata çıkışı yo std err veya en yakın eşdeğeri olmalıdır.
- Tüm sayılar 64 bit kayan nokta ile sınırlıdır.
Örnek programlar:
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!!!
(Gerekirse daha fazlasını ekleyebilirim)
654,489,48,43/5*7D+-*%dönmelidir 77.6875. ( 43/48*5-(7+7)olması gerekir (7+7)-43/48*5)
!içinF).