SHARE
TWEET

Untitled

a guest Jun 19th, 2017 50 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cmath>
  3. #include <windows.h>
  4. #include <limits.h>//minimalny i maksymalny zakres liczb calkowitych INT MIN INT MAX
  5. #define czas 9000 //Czas wyœwietlania wyniku na konsoli
  6. using namespace std;
  7.  
  8. static class OperacjaArytmetyczna
  9. {
  10. public:
  11.     static float silnia(int n) {
  12.         if (n == 0)
  13.         {
  14.             return 1;
  15.         }
  16.         else return n*silnia(n - 1);
  17.     }
  18.     static float dodaj(float a, float b) {
  19.         return a + b;
  20.     }
  21.     static float przeciwny(float b) {
  22.         return -b;
  23.     }
  24.     static float odejmij(float a, float b) {
  25.         return dodaj(a, przeciwny(b));
  26.     }
  27.     static float mnoz(float a, float b) {
  28.         return a*b;
  29.     }
  30.     static int poteguj(float a, int p) {
  31.         if (p == 0) return 1;
  32.         while (p != 0)
  33.             return mnoz(a, poteguj(a, --p));
  34.     }
  35.     static float odwrotny(float b) {
  36.         return 1 / b;
  37.     }
  38.     static float dziel(float a, float b) {
  39.         if (b != 0)
  40.             return mnoz(a, odwrotny(b));
  41.     }
  42. };
  43. class Menu
  44. {
  45. private:
  46.     float x, y;
  47.     int n, wybor;
  48.     OperacjaArytmetyczna* operacja = new OperacjaArytmetyczna();
  49.  
  50.     void podajLiczby()
  51.     {
  52.         cout << "podaj pierwsza liczbe: ";
  53.         cin >> x;
  54.         cout << "podaj druga liczbe: ";
  55.         cin >> y;
  56.     }
  57.     void podajLiczbyDoDzielenia() {
  58.         if (y == 0)
  59.             cout << "nie mozna dzielic przez zero! Sprobuj ponownie\n";
  60.         cout << "podaj pierwsza liczbe: ";
  61.         cin >> x;
  62.         cout << "podaj druga liczbe: ";
  63.         cin >> y;
  64.  
  65.     }
  66.     inline void podajLiczbeDoSilni() {
  67.         cout << "podaj liczbe ktorej silnia zostanie obliczona: ";
  68.         cin >> n;
  69.         n = n%INT_MAX;
  70.     }
  71.     inline void podajLiczbyDoPotegowania() {
  72.  
  73.         cout << "podaj liczbe: ";
  74.         cin >> x;
  75.         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;
  76.         cout << "podaj wykladnik potegi: ";
  77.         cin >> n;
  78.         n = n%INT_MAX;//dla opornych jesli chca podac cos innego niz calkowita
  79.     }
  80.     void wyswietlMenu() {
  81.         system("CLS");
  82.         cout << "MENU KAKLULATORA:" << endl;
  83.         cout << "(czas wyswietlanie wyniku ustalony na 3 sekundy)" << endl;
  84.         cout << "------------------------------------------" << endl;
  85.         cout << "1. Operacja dodawania " << endl;
  86.         cout << "2. Operacja odejmowania " << endl;
  87.         cout << "3. Operacja mnozenia " << endl;
  88.         cout << "4. Operacja dzielenia " << endl;
  89.         cout << "5. Operacja potegowania" << endl;
  90.         cout << "6. Silnia" << endl;
  91.         cout << "0. Koniec programu" << endl;
  92.         cout << "------------------------------------------" << endl;
  93.         cout << "Start: ";
  94.     }
  95.  
  96. public:
  97.    
  98.     bool Start()
  99.     {
  100.         wyswietlMenu();
  101.         cin >> wybor;
  102.         switch (wybor)
  103.         {
  104.            
  105.         case 1:
  106.  
  107.             podajLiczby();
  108.             cout << endl << "Wynik: " << operacja->dodaj(x, y) << endl;
  109.             Sleep(czas);
  110.             return true;
  111.         case 2:
  112.             podajLiczby();
  113.             cout << endl << "Wynik: " << operacja->odejmij(x, y) << endl;
  114.             Sleep(czas);
  115.             return true;
  116.         case 3:
  117.             podajLiczby();
  118.             cout << endl << "Wynik: " << operacja->mnoz(x, y) << endl;
  119.             Sleep(czas);
  120.             return true; break;
  121.         case 4:
  122.             podajLiczby();
  123.             while (y == 0) {
  124.                 podajLiczbyDoDzielenia();
  125.             }
  126.             cout << endl << "Wynik: " << operacja->dziel(x, y) << endl;
  127.             Sleep(czas);
  128.             return true;
  129.         case 5:
  130.  
  131.             podajLiczbyDoPotegowania();
  132.             cout << endl << "Wynik: " << operacja->poteguj(x, n) << endl;
  133.             Sleep(czas);
  134.             return true;;
  135.         case 6:
  136.             podajLiczbeDoSilni();
  137.             cout << endl << "Wynik: " << operacja->silnia(n) << endl;
  138.             Sleep(czas);
  139.             return true;
  140.  
  141.         case 0:
  142.             return false;
  143.         }
  144.    
  145.     }
  146. };
  147.  
  148. int main()
  149. {
  150.  
  151.     Menu* menu = new Menu();
  152.     do
  153.     {
  154.            
  155.     }
  156.     while (menu->Start());
  157.  
  158. return 0;
  159. }
RAW Paste Data
Want to get better at C++?
Learn to code C++ in 2017
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top