Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <windows.h>
- #include <limits.h>//minimalny i maksymalny zakres liczb calkowitych INT MIN INT MAX
- #define czas 9000 //Czas wyœwietlania wyniku na konsoli
- using namespace std;
- class OperacjaArytmetyczna
- {
- public:
- float silnia(int n) {
- if (n == 0)
- {
- return 1;
- }
- else return n*silnia(n - 1);
- }
- float dodaj(float a, float b) {
- return a + b;
- }
- float przeciwny(float b) {
- return -b;
- }
- float odejmij(float a, float b) {
- return dodaj(a, przeciwny(b));
- }
- float mnoz(float a, float b) {
- return a*b;
- }
- int poteguj(float a, int p) {
- if (p == 0) return 1;
- while (p != 0)
- return mnoz(a, poteguj(a, --p));
- }
- float odwrotny(float b) {
- return 1 / b;
- }
- float dziel(float a, float b) {
- if (b != 0)
- return mnoz(a, odwrotny(b));
- }
- };
- class Menu
- {
- private:
- float x, y;
- int n, wybor;
- OperacjaArytmetyczna* operacja = new OperacjaArytmetyczna();
- void podajLiczby()
- {
- cout << "podaj pierwsza liczbe: ";
- cin >> x;
- cout << "podaj druga liczbe: ";
- cin >> y;
- }
- void podajLiczbyDoDzielenia() {
- if (y == 0)
- cout << "nie mozna dzielic przez zero! Sprobuj ponownie\n";
- cout << "podaj pierwsza liczbe: ";
- cin >> x;
- cout << "podaj druga liczbe: ";
- cin >> y;
- }
- inline void podajLiczbeDoSilni() {
- cout << "podaj liczbe ktorej silnia zostanie obliczona: ";
- cin >> n;
- n = n%INT_MAX;
- }
- inline void podajLiczbyDoPotegowania() {
- cout << "podaj liczbe: ";
- cin >> x;
- cout << "Wykladnik potegi musi byc liczba naturalna\nw przeciwnym przypadku liczba zostanie zastapiona jej czescia calkowita\na dzialanie programu zakonczy sie po podaniu wyniku" << endl;
- cout << "podaj wykladnik potegi: ";
- cin >> n;
- n = n%INT_MAX;//dla opornych jesli chca podac cos innego niz calkowita
- }
- void wyswietlMenu() {
- system("CLS");
- cout << "MENU KAKLULATORA:" << endl;
- cout << "(czas wyswietlanie wyniku ustalony na 3 sekundy)" << endl;
- cout << "------------------------------------------" << endl;
- cout << "1. Operacja dodawania " << endl;
- cout << "2. Operacja odejmowania " << endl;
- cout << "3. Operacja mnozenia " << endl;
- cout << "4. Operacja dzielenia " << endl;
- cout << "5. Operacja potegowania" << endl;
- cout << "6. Silnia" << endl;
- cout << "0. Koniec programu" << endl;
- cout << "------------------------------------------" << endl;
- cout << "Start: ";
- }
- public:
- bool Start()
- {
- wyswietlMenu();
- cin >> wybor;
- switch (wybor)
- {
- case 1:
- podajLiczby();
- cout << endl << "Wynik: " << operacja->dodaj(x, y) << endl;
- Sleep(czas);
- return true;
- case 2:
- podajLiczby();
- cout << endl << "Wynik: " << operacja->odejmij(x, y) << endl;
- Sleep(czas);
- return true;
- case 3:
- podajLiczby();
- cout << endl << "Wynik: " << operacja->mnoz(x, y) << endl;
- Sleep(czas);
- return true; break;
- case 4:
- podajLiczby();
- while (y == 0) {
- podajLiczbyDoDzielenia();
- }
- cout << endl << "Wynik: " << operacja->dziel(x, y) << endl;
- Sleep(czas);
- return true;
- case 5:
- podajLiczbyDoPotegowania();
- cout << endl << "Wynik: " << operacja->poteguj(x, n) << endl;
- Sleep(czas);
- return true;;
- case 6:
- podajLiczbeDoSilni();
- cout << endl << "Wynik: " << operacja->silnia(n) << endl;
- Sleep(czas);
- return true;
- case 0:
- return false;
- }
- }
- };
- int main()
- {
- Menu* menu = new Menu();
- do
- {
- }
- while (menu->Start());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement