{$APPTYPE CONSOLE}
Program Kalkulator;
Uses SysUtils;

Function GetInput(Title: String): Integer;
Var Temp: String;
    Out : Integer;
Begin
 Write(Title+' ');
 Readln(Temp);
 if (not TryStrToInt(Temp, Out)) Then
 Begin
  Writeln('', Title, ''' nie jest liczba!');
  Readln;
  Halt;
 End;
 GetInput := Out;
End;

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);
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
  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');
Var Opcja: String;
    I, Op: Integer;
Begin
 Op := -1;
 Repeat
  Writeln;
  Write('Podaj nazwe dzialania do wykonania: ');
  Readln(Opcja);
  Opcja := LowerCase(Opcja);
  For I := Low(Opcje) To High(Opcje) Do
   if (Opcja = Opcje[I]) Then
    Op := I;
 Until (Op >= 0);
 Case Op Of
  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;
End;
Begin
 Writeln('--------------');
 Writeln('- Kalkulator -');
 Writeln('--------------');
 Writeln;
 Writeln('Dostepne funkcje:');
 Writeln;
 Writeln('dodawanie, odejmowanie, dzielenie, mnozenie, pierwiastek, potega, silnia,wyjscie');
 Writeln;
 MainMenu;
End.