{$APPTYPE CONSOLE} //Ja korzystam z Delphi, gdzie aby mieć aplikację konsolową trzeba dodać taką dyrektywę
Program Kalkulator; //Nazwa programu
Uses SysUtils; //Funkcja TryStrToInt użyta niżej
Function GetInput( Title: String ) : Integer ; //Funkcja pobiera od użytkownika wpisaną liczbę
Var Temp: String ;
Out : Integer ;
Begin
Write ( Title+ ' ' ) ;
Readln ( Temp) ;
if ( not TryStrToInt( Temp, Out) ) Then //Jeżeli tego, co wpisał nie da się zamienić na liczbę (wpisał np. 123foo123), to wyświetlamy błąd
Begin
Writeln ( '' , Title, '' ' nie jest liczba!' ) ;
Readln ;
Halt; //i wyłączamy program
End ;
GetInput : = Out;
End ;
(* Tych funkcji niżej chyba nie trzeba komentować *)
Procedure Dodawanie( A, B: Integer ) ; pascal;
Begin
Writeln ;
Writeln ( A, '+' , B, '=' , A+ B) ;
End ;
Procedure Odejmowanie( A, B: Integer ) ; pascal;
Begin
Writeln ;
Writeln ( A, '-' , B, '=' , A- B) ;
End ;
Procedure Dzielenie( A, B: Integer ) ; pascal;
Begin
Writeln ;
Writeln ( A, '/' , B, '=' , A/ B: 6 : 4 , ' (reszta ' , A mod B, ')' ) ;
End ;
Procedure Mnozenie( A, B: Integer ) ; pascal;
Begin
Writeln ;
Writeln ( A, '*' , B, '=' , A* B) ;
End ;
Procedure Pierwiastek( A: Integer ) ; pascal;
Begin
Writeln ;
Writeln ( 'sqrt(' , A, ')=' , sqrt ( A) : 6 : 4 ) ; //sqrt = square root = pierwiastek
End ;
Procedure Potega( A, B: Integer ) ; pascal;
Function Power( iBase, iExponent: Integer ) : Extended;
Begin
Power : = Exp ( Ln ( iBase) * iExponent) ;
End ;
Begin
Writeln ;
Writeln ( A, '^' , B, '=' , round( Power( A, B) ) ) ;
End ;
Procedure Silnia( A: Integer ) ; pascal;
Var Res, I: Integer ;
Begin
Res : = 1 ;
For I : = 1 To A Do //Prosty algorytm iteracyjny na silnię
Res : = Res* I;
Writeln ;
Writeln ( A, '!=' , Res) ;
End ;
Procedure MainMenu;
Const Opcje: Array [ 0 .. 7 ] of String = ( 'dodawanie' , 'odejmowanie' , 'dzielenie' , 'mnozenie' , 'pierwiastek' , 'potega' , 'silnia' , 'wyjscie' ) ; //Nasza lista opcji (to jest wygodniejsze, zamiast korzystania z drabinki if'ow typu: if opcja='foo' then foo else if opcja='cos_innego' then cos_innego else (itd)
Var Opcja: String ; //wprowadzona przez użytkownika opcja
I, Op: Integer ; //"I" jest używane do iteracji po w/w tablicy, Op to numer naszej opcji (czyli dla 'dodawanie' jest to 0, dla 'odejmowanie' jest to 1, itd.)
Begin
Op : = - 1 ;
Repeat
Writeln ;
Write ( 'Podaj nazwe dzialania do wykonania: ' ) ;
Readln ( Opcja) ;
Opcja : = LowerCase( Opcja) ;
For I : = Low( Opcje) To High( Opcje) Do //Iterujemy po całej tablicy
if ( Opcja = Opcje[ I] ) Then //Jeżeli aktualnie sprawdzany indeks z tablicy jest równy temu, co wprowadził użytkownik
Op : = I; //to zapisujemy numer indeksu do zmiennej
Until ( Op >= 0 ) ; //Jeżeli opcja została odnaleziona
Case Op Of //To jest coś a'la if
0 : Dodawanie( GetInput( 'Podaj skladnik:' ) , GetInput( 'Podaj skladnik:' ) ) ;
1 : Odejmowanie( GetInput( 'Podaj odjemna:' ) , GetInput( 'Podaj odjemnik:' ) ) ;
2 : Dzielenie( GetInput( 'Podaj dzielna:' ) , GetInput( 'Podaj dzielnik:' ) ) ;
3 : Mnozenie( GetInput( 'Podaj czynnik:' ) , GetInput( 'Podaj czynnik:' ) ) ;
4 : Pierwiastek( GetInput( 'Podaj liczbe:' ) ) ;
5 : Potega( GetInput( 'Podaj podstawe:' ) , GetInput( 'Podaj wykladnik:' ) ) ;
6 : Silnia( GetInput( 'Podaj liczbe:' ) ) ;
7 : Halt;
End ;
MainMenu; //I od nowa
End ;
Begin
Writeln ( '--------------' ) ;
Writeln ( '- Kalkulator -' ) ;
Writeln ( '--------------' ) ;
Writeln ;
Writeln ( 'Dostepne funkcje:' ) ;
Writeln ;
Writeln ( 'dodawanie, odejmowanie, dzielenie, mnozenie, pierwiastek, potega, silnia,wyjscie' ) ;
Writeln ;
MainMenu;
End .
eyRBUFBUWVBFIENPTlNPTEV9IC8vSmEga29yenlzdGFtIHogRGVscGhpLCBnZHppZSBhYnkgbWllxIcgYXBsaWthY2rEmSBrb25zb2xvd8SFIHRyemViYSBkb2RhxIcgdGFrxIUgZHlyZWt0eXfEmQpQcm9ncmFtIEthbGt1bGF0b3I7IC8vTmF6d2EgcHJvZ3JhbXUKVXNlcyBTeXNVdGlsczsgLy9GdW5rY2phIFRyeVN0clRvSW50IHXFvHl0YSBuacW8ZWoKCkZ1bmN0aW9uIEdldElucHV0KFRpdGxlOiBTdHJpbmcpOiBJbnRlZ2VyOyAvL0Z1bmtjamEgcG9iaWVyYSBvZCB1xbx5dGtvd25pa2Egd3Bpc2FuxIUgbGljemLEmQpWYXIgVGVtcDogU3RyaW5nOwogICAgT3V0IDogSW50ZWdlcjsKQmVnaW4KIFdyaXRlKFRpdGxlKycgJyk7CiBSZWFkbG4oVGVtcCk7CiBpZiAobm90IFRyeVN0clRvSW50KFRlbXAsIE91dCkpIFRoZW4gLy9KZcW8ZWxpIHRlZ28sIGNvIHdwaXNhxYIgbmllIGRhIHNpxJkgemFtaWVuacSHIG5hIGxpY3pixJkgKHdwaXNhxYIgbnAuIDEyM2ZvbzEyMyksIHRvIHd5xZt3aWV0bGFteSBixYLEhWQKIEJlZ2luCiAgV3JpdGVsbignJywgVGl0bGUsICcnJyBuaWUgamVzdCBsaWN6YmEhJyk7CiAgUmVhZGxuOwogIEhhbHQ7IC8vaSB3ecWCxIVjemFteSBwcm9ncmFtCiBFbmQ7CiBHZXRJbnB1dCA6PSBPdXQ7CkVuZDsKCigqIFR5Y2ggZnVua2NqaSBuacW8ZWogY2h5YmEgbmllIHRyemViYSBrb21lbnRvd2HEhyAqKQpQcm9jZWR1cmUgRG9kYXdhbmllKEEsIEI6IEludGVnZXIpOyBwYXNjYWw7CkJlZ2luCiBXcml0ZWxuOwogV3JpdGVsbihBLCcrJyxCLCc9JyxBK0IpOwpFbmQ7CgpQcm9jZWR1cmUgT2Rlam1vd2FuaWUoQSwgQjogSW50ZWdlcik7IHBhc2NhbDsKQmVnaW4KIFdyaXRlbG47CiBXcml0ZWxuKEEsJy0nLEIsJz0nLEEtQik7CkVuZDsKClByb2NlZHVyZSBEemllbGVuaWUoQSwgQjogSW50ZWdlcik7IHBhc2NhbDsKQmVnaW4KIFdyaXRlbG47CiBXcml0ZWxuKEEsJy8nLEIsJz0nLEEvQjo2OjQsJyAocmVzenRhICcsQSBtb2QgQiwnKScpOwpFbmQ7CgpQcm9jZWR1cmUgTW5vemVuaWUoQSwgQjogSW50ZWdlcik7IHBhc2NhbDsKQmVnaW4KIFdyaXRlbG47CiBXcml0ZWxuKEEsJyonLEIsJz0nLEEqQik7CkVuZDsKClByb2NlZHVyZSBQaWVyd2lhc3RlayhBOiBJbnRlZ2VyKTsgcGFzY2FsOwpCZWdpbgogV3JpdGVsbjsKIFdyaXRlbG4oJ3NxcnQoJyxBLCcpPScsc3FydChBKTo2OjQpOyAvL3NxcnQgPSBzcXVhcmUgcm9vdCA9IHBpZXJ3aWFzdGVrCkVuZDsKClByb2NlZHVyZSBQb3RlZ2EoQSwgQjogSW50ZWdlcik7IHBhc2NhbDsKICBGdW5jdGlvbiBQb3dlcihpQmFzZSwgaUV4cG9uZW50OiBJbnRlZ2VyKTogRXh0ZW5kZWQ7CiAgQmVnaW4KICAgUG93ZXIgOj0gRXhwKExuKGlCYXNlKSAqIGlFeHBvbmVudCk7CiAgRW5kOwpCZWdpbgogV3JpdGVsbjsKIFdyaXRlbG4oQSwnXicsQiwnPScscm91bmQoUG93ZXIoQSwgQikpKTsKRW5kOwoKUHJvY2VkdXJlIFNpbG5pYShBOiBJbnRlZ2VyKTsgcGFzY2FsOwpWYXIgUmVzLCBJOiBJbnRlZ2VyOwpCZWdpbgogUmVzIDo9IDE7CiBGb3IgSSA6PSAxIFRvIEEgRG8gLy9Qcm9zdHkgYWxnb3J5dG0gaXRlcmFjeWpueSBuYSBzaWxuacSZCiAgUmVzIDo9IFJlcypJOwogV3JpdGVsbjsKIFdyaXRlbG4oQSwnIT0nLFJlcyk7CkVuZDsKClByb2NlZHVyZSBNYWluTWVudTsKQ29uc3QgT3BjamU6IEFycmF5WzAuLjddIG9mIFN0cmluZyA9ICgnZG9kYXdhbmllJywgJ29kZWptb3dhbmllJywgJ2R6aWVsZW5pZScsICdtbm96ZW5pZScsICdwaWVyd2lhc3RlaycsICdwb3RlZ2EnLCAnc2lsbmlhJywgJ3d5anNjaWUnKTsgLy9OYXN6YSBsaXN0YSBvcGNqaSAodG8gamVzdCB3eWdvZG5pZWpzemUsIHphbWlhc3Qga29yenlzdGFuaWEgeiBkcmFiaW5raSBpZidvdyB0eXB1OiBpZiBvcGNqYT0nZm9vJyB0aGVuIGZvbyBlbHNlIGlmIG9wY2phPSdjb3NfaW5uZWdvJyB0aGVuIGNvc19pbm5lZ28gZWxzZSAoaXRkKQpWYXIgT3BjamE6IFN0cmluZzsgIC8vd3Byb3dhZHpvbmEgcHJ6ZXogdcW8eXRrb3duaWthIG9wY2phCiAgICBJLCBPcDogSW50ZWdlcjsgLy8iSSIgamVzdCB1xbx5d2FuZSBkbyBpdGVyYWNqaSBwbyB3L3cgdGFibGljeSwgT3AgdG8gbnVtZXIgbmFzemVqIG9wY2ppIChjenlsaSBkbGEgJ2RvZGF3YW5pZScgamVzdCB0byAwLCBkbGEgJ29kZWptb3dhbmllJyBqZXN0IHRvIDEsIGl0ZC4pCkJlZ2luCiBPcCA6PSAtMTsKIFJlcGVhdAogIFdyaXRlbG47CiAgV3JpdGUoJ1BvZGFqIG5hendlIGR6aWFsYW5pYSBkbyB3eWtvbmFuaWE6ICcpOwogIFJlYWRsbihPcGNqYSk7CiAgT3BjamEgOj0gTG93ZXJDYXNlKE9wY2phKTsKICBGb3IgSSA6PSBMb3coT3BjamUpIFRvIEhpZ2goT3BjamUpIERvIC8vSXRlcnVqZW15IHBvIGNhxYJlaiB0YWJsaWN5CiAgIGlmIChPcGNqYSA9IE9wY2plW0ldKSBUaGVuICAgICAgICAgICAvL0plxbxlbGkgYWt0dWFsbmllIHNwcmF3ZHphbnkgaW5kZWtzIHogdGFibGljeSBqZXN0IHLDs3dueSB0ZW11LCBjbyB3cHJvd2FkemnFgiB1xbx5dGtvd25pawogICAgT3AgOj0gSTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90byB6YXBpc3VqZW15IG51bWVyIGluZGVrc3UgZG8gem1pZW5uZWoKIFVudGlsIChPcCA+PSAwKTsgLy9KZcW8ZWxpIG9wY2phIHpvc3RhxYJhIG9kbmFsZXppb25hCiBDYXNlIE9wIE9mIC8vVG8gamVzdCBjb8WbIGEnbGEgaWYKICAwOiBEb2Rhd2FuaWUoR2V0SW5wdXQoJ1BvZGFqIHNrbGFkbmlrOicpLCBHZXRJbnB1dCgnUG9kYWogc2tsYWRuaWs6JykpOwogIDE6IE9kZWptb3dhbmllKEdldElucHV0KCdQb2RhaiBvZGplbW5hOicpLCBHZXRJbnB1dCgnUG9kYWogb2RqZW1uaWs6JykpOwogIDI6IER6aWVsZW5pZShHZXRJbnB1dCgnUG9kYWogZHppZWxuYTonKSwgR2V0SW5wdXQoJ1BvZGFqIGR6aWVsbmlrOicpKTsKICAzOiBNbm96ZW5pZShHZXRJbnB1dCgnUG9kYWogY3p5bm5pazonKSwgR2V0SW5wdXQoJ1BvZGFqIGN6eW5uaWs6JykpOwogIDQ6IFBpZXJ3aWFzdGVrKEdldElucHV0KCdQb2RhaiBsaWN6YmU6JykpOwogIDU6IFBvdGVnYShHZXRJbnB1dCgnUG9kYWogcG9kc3Rhd2U6JyksIEdldElucHV0KCdQb2RhaiB3eWtsYWRuaWs6JykpOwogIDY6IFNpbG5pYShHZXRJbnB1dCgnUG9kYWogbGljemJlOicpKTsKICA3OiBIYWx0OwogRW5kOwogTWFpbk1lbnU7IC8vSSBvZCBub3dhCkVuZDsKQmVnaW4KIFdyaXRlbG4oJy0tLS0tLS0tLS0tLS0tJyk7CiBXcml0ZWxuKCctIEthbGt1bGF0b3IgLScpOwogV3JpdGVsbignLS0tLS0tLS0tLS0tLS0nKTsKIFdyaXRlbG47CiBXcml0ZWxuKCdEb3N0ZXBuZSBmdW5rY2plOicpOwogV3JpdGVsbjsKIFdyaXRlbG4oJ2RvZGF3YW5pZSwgb2Rlam1vd2FuaWUsIGR6aWVsZW5pZSwgbW5vemVuaWUsIHBpZXJ3aWFzdGVrLCBwb3RlZ2EsIHNpbG5pYSx3eWpzY2llJyk7CiBXcml0ZWxuOwogTWFpbk1lbnU7CkVuZC4=