Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <windows.h>
  4. #include <algorithm>
  5. #include "Klasy_Ekspres.h"
  6. #include "AplikacjeKlasyEkspres.h"
  7.  
  8. using namespace std;
  9.  
  10. /*void AplikacjeDodatkowe::WyswietlMenu() {
  11.     short wybor;
  12.  
  13.     cout << "Programy dla roznych typow danych:" << endl;
  14.     cout << "1. Kalkulator" << endl;
  15.     cout << "2. Sortowanie babelkowe" << endl;
  16.     cout << "3. Wyszukiwanie elementu najwiekszego i najmniejszego" << endl;
  17.     cout << "4. Wyszukiwanie indeksu" << endl;
  18.     cout << "5. Zliczanie wystapien" << endl;
  19.  
  20.     cin >> wybor;
  21. }
  22.     WywolanieKalkulator* obj30 = new WywolanieKalkulator();
  23.     WywolanieSortowanie* obj31 = new WywolanieSortowanie();
  24.     WywolanieMinMax* obj32 = new WywolanieMinMax();
  25.     WywolanieWyszukiwanieIndeksu* obj33 = new WywolanieWyszukiwanieIndeksu();
  26.     WywolanieZliczanieWystapien* obj34 = new WywolanieZliczanieWystapien();
  27.  
  28.     switch (wybor) {
  29.     case 1:
  30.         obj30->WywolajKalkulator();
  31.         delete obj30;
  32.         break;
  33.     case 2:
  34.         obj31->WywolajSortowanie();
  35.         delete obj31;
  36.         break;
  37.     case 3:
  38.         obj32->WywolajMinMax();
  39.         delete obj32;
  40.         break;
  41.     case 4:
  42.         obj33->WywolajWyszukiwanieIndeksu();
  43.         delete obj33;
  44.         break;
  45.     case 5:
  46.         obj34->WywolajWyszukiwanieIndeksu();
  47.         delete obj34;
  48.         break;
  49.     }
  50.     default:
  51.         cout << "Brak opcji w menu!" << endl;
  52.         Sleep(3000);
  53.         exit(0);
  54.  
  55. }
  56. //-------------------------------------------------------------------------------------
  57. template<typename Type>
  58. class Kalkulator {
  59.     Type liczba1;
  60. public:
  61.     Kalkulator(Type argument) {
  62.         liczba1 = argument;
  63.     }
  64.  
  65.     Type Dodawanie(Type liczba2) {
  66.         return (liczba1 + liczba2);
  67.     }
  68.     Type Odejmowanie(Type liczba2) {
  69.         return (liczba1 - liczba2);
  70.     }
  71.     Type Mnozenie(Type liczba2) {
  72.         return (liczba1 * liczba2);
  73.     }
  74.     Type Dzielenie(Type liczba2) {
  75.         return (liczba1 / liczba2);
  76.     }
  77. };
  78. void WywolanieKalkulator::WywolajKalkulator() {
  79.     short wyborintdouble;
  80.     short wyboroperacji;
  81.     int x1, x2;
  82.     double y1, y2;
  83.     cout << "Dziala dla int i dla dobule" << endl;
  84.     cout << "1. Int" << endl;
  85.     cout << "2. Double" << endl;
  86.     cin >> wyborintdouble;
  87.     cout << "Operacja: " << endl;
  88.     cout << "1. Dodawanie" << endl;
  89.     cout << "2. Odejmowanie" << endl;
  90.     cout << "3. Mnozenie" << endl;
  91.     cout << "4. Dzielenie" << endl;
  92.     cin >> wyboroperacji;
  93.     if (wyborintdouble == 1) {
  94.         cout << "Pierwsza liczba int: ";
  95.         cin >> x1;
  96.         cout << "Druga liczba int: ";
  97.         cin >> x2;
  98.  
  99.         if (wyboroperacji == 1) {
  100.             Kalkulator<int>* intKalkulator = new Kalkulator<int>(x1);
  101.             cout << "Wynik: " << intKalkulator->Dodawanie(x2) << endl;
  102.         }
  103.         else if (wyboroperacji == 2) {
  104.             Kalkulator<int>* intKalkulator = new Kalkulator<int>(x1);
  105.             cout << "Wynik: " << intKalkulator->Odejmowanie(x2) << endl;
  106.         }
  107.         else if (wyboroperacji == 3) {
  108.             Kalkulator<int>* intKalkulator = new Kalkulator<int>(x1);
  109.             cout << "Wynik: " << intKalkulator->Mnozenie(x2) << endl;
  110.         }
  111.         else if (wyboroperacji == 4) {
  112.             Kalkulator<int>* intKalkulator = new Kalkulator<int>(x1);
  113.             cout << "Wynik: " << intKalkulator->Dzielenie(x2) << endl;
  114.         }
  115.         else cout << "Nie ma opcji w menu."; exit(0);
  116.        
  117.  
  118.     }
  119.     else if (wyborintdouble == 2){
  120.         cout << "Pierwsza liczba double: ";
  121.         cin >> y1;
  122.         cout << "Druga liczba double: ";
  123.         cin >> y2;
  124.         if (wyboroperacji == 1) {
  125.             Kalkulator<double>* intKalkulator = new Kalkulator<double>(y1);
  126.             cout << "Wynik: " << intKalkulator->Dodawanie(y2) << endl;
  127.         }
  128.         else if (wyboroperacji == 2) {
  129.             Kalkulator<double>* intKalkulator = new Kalkulator<double>(y1);
  130.             cout << "Wynik: " << intKalkulator->Odejmowanie(y2) << endl;
  131.         }
  132.         else if (wyboroperacji == 3) {
  133.             Kalkulator<double>* intKalkulator = new Kalkulator<double>(y1);
  134.             cout << "Wynik: " << intKalkulator->Mnozenie(y2) << endl;
  135.         }
  136.         else if (wyboroperacji == 4) {
  137.             Kalkulator<double>* intKalkulator = new Kalkulator<double>(y1);
  138.             cout <<"Wynik: " << intKalkulator->Dzielenie(y2) << endl;
  139.         }
  140.         else cout << "Nie ma opcji w menu."; exit(0);
  141.     }
  142. }
  143. //------------------------------------------------------------
  144. template<typename Type>
  145. class Sortowanie {
  146. public:
  147.     Type Babelkowe(Type tab[], int n) {
  148.         for (int i = 0; i < n; i++)
  149.             for (int j = 1; j < n - i; j++)
  150.                 if (tab[j - 1] > tab[j])
  151.                     swap(tab[j - 1], tab[j]);
  152.  
  153.     }
  154. };
  155. void WywolanieSortowanie::WywolajSortowanie() {
  156.     bool wybor;
  157.     short n;
  158.     int* tabint;
  159.     double* tabdouble;
  160.     cout << "Sortowanie ma sie odbywac dla typu int czy double: " << endl;
  161.     cout << "0. Int" << endl;
  162.     cout << "1. Double" << endl;
  163.     cin >> wybor;
  164.  
  165.     //BYL TU DUZY PROBLEM Z PRZEKAZYWANIEM TABLICY DYNAMICZNEJ POLECENIE CL.EXE ZAKONCZONE PRZEZ KOD 2
  166.     cout << "Ile liczb do posortowania: ";
  167.     cin >> n;
  168.  
  169.  
  170.     if (wybor == false) {
  171.         tabint = new int[n];
  172.         for (int i = 0; i < n; i++)
  173.             cin >> tabint[i];
  174.         Sortowanie<int>* intSortowanie = new Sortowanie<int>();
  175.         intSortowanie->Babelkowe(tabint, n);
  176.         for (int i = 0; i < n; i++)
  177.             cout << tabint[i] << " ";
  178.     }
  179.     else if (wybor == true) {
  180.         tabdouble = new double[n];
  181.         for (int i = 0; i < n; i++)
  182.             cin >> tabdouble[i];
  183.         Sortowanie<double>* doubleSortowanie = new Sortowanie<double>();
  184.         doubleSortowanie->Babelkowe(tabdouble, n);
  185.         for (int i = 0; i < n; i++)
  186.             cout << tabdouble[i] << " ";
  187.     }
  188. }
  189. //----------------------------------------------------------------------------------
  190. template<typename Type>
  191. class MinMax {
  192. public:
  193.     Type WyszukajMin(Type n1, Type n2) {
  194.         return min(n1, n2);
  195.     }
  196.     Type WyszukajMax(Type n1, Type n2) {
  197.         return max(n1, n2);
  198.     }
  199. };
  200. void WywolanieMinMax::WywolajMinMax() {
  201.     bool wybor;
  202.     int x1, x2;
  203.     double y1, y2;
  204.     cout << "Wyszukiwanie min max sposrod dwoch liczb ma byc dla typu: " << endl;
  205.     cout << "0. Int" << endl;
  206.     cout << "1. Double" << endl;
  207.     cin >> wybor;
  208.  
  209.     if (wybor == false) {
  210.         cout << "Pierwsza liczba: ";
  211.         cin >> x1;
  212.         cout << "Druga liczba: ";
  213.         cin >> x2;
  214.         MinMax<int>* intMinMax = new MinMax<int>();
  215.         cout << "Min: " << intMinMax->WyszukajMin(x1, x2) << endl;
  216.         cout << "Max: " << intMinMax->WyszukajMax(x1, x2) << endl;
  217.     }
  218.     else if (wybor == true) {
  219.         cout << "Pierwsza liczba: ";
  220.         cin >> y1;
  221.         cout << "Druga liczba: ";
  222.         cin >> y2;
  223.         MinMax<double>* doubleMinMax = new MinMax<double>();
  224.         cout << "Min: " << doubleMinMax->WyszukajMin(y1, y2) << endl;
  225.         cout << "Max: " << doubleMinMax->WyszukajMax(y1, y2) << endl;
  226.     }
  227.  
  228. }
  229. //---------------------------------------------------------------------------------
  230. template<typename Type>
  231. class Wyszukiwanie {
  232. public:
  233.     Type Indeksu(Type tab[], int n, Type szukana) {
  234.         for (int i = 0; i < n; i++) {
  235.             if (tab[i] == szukana) {
  236.                 return i + 1;
  237.                 break;
  238.             }
  239.  
  240.         }
  241.  
  242.     }
  243. };
  244. void WywolanieWyszukiwanieIndeksu::WywolajWyszukiwanieIndeksu() {
  245.     bool wybor;
  246.     short n;
  247.     int* tabint;
  248.     double* tabdouble;
  249.     int szukanaInt;
  250.     double szukanaDouble;
  251.     cout << "Wyszukiwanie ma sie odbywac dla typu int czy double: " << endl;
  252.     cout << "0. Int" << endl;
  253.     cout << "1. Double" << endl;
  254.     cin >> wybor;
  255.  
  256.     cout << "Ile liczb do wpisania: ";
  257.     cin >> n;
  258.  
  259.  
  260.     if (wybor == false) {
  261.         cout << "Podaj szukana liczbe Int: ";
  262.         cin >> szukanaInt;
  263.         cout << "Wpisuj liczby:" << endl;
  264.         for (int i = 0; i < n; i++)
  265.             cin >> tabint[i];
  266.         tabint = new int[n];
  267.         Wyszukiwanie<int>* intWyszukiwanie = new Wyszukiwanie<int>();
  268.         cout << "Indeks tablicy poszukiwanego elementu to: " << intWyszukiwanie->Indeksu(tabint, n, szukanaInt) << endl;
  269.     }
  270.     else if (wybor == true) {
  271.         cout << "Podaj szukana liczbe Double: ";
  272.         cin >> szukanaDouble;
  273.         cout << "Wpisuj liczby:" << endl;
  274.         for (int i = 0; i < n; i++)
  275.             cin >> tabdouble[i];
  276.         tabdouble = new double[n];
  277.         Wyszukiwanie<double>* doubleWyszukiwanie = new Wyszukiwanie<double>();
  278.         cout << "Indeks tablicy poszukiwanego elementu to: " << doubleWyszukiwanie->Indeksu(tabdouble, n, szukanaDouble) << endl;
  279.     }
  280.  
  281. }
  282. //-------------------------------------------------------------------------------------------------------------------------
  283. template<typename Type>
  284. class Zliczanie {
  285. public:
  286.     Type Wystapienia(Type tab[], int n, Type szukana) {
  287.         return count(tab, tab + n, szukana);
  288.     }
  289. };
  290. void WywolanieZliczanieWystapien::WywolajZliczanieWystapien() {
  291.     bool wybor;
  292.     short n;
  293.     int* tabint;
  294.     double* tabdouble;
  295.     int szukanaInt;
  296.     double szukanaDouble;
  297.     cout << "Zliczanie wystapien ma sie odbywac dla typu int czy double: " << endl;
  298.     cout << "0. Int" << endl;
  299.     cout << "1. Double" << endl;
  300.     cin >> wybor;
  301.  
  302.     cout << "Ile liczb do tablicy: ";
  303.     cin >> n;
  304.  
  305.  
  306.     if (wybor == false) {
  307.         cout << "Liczba do zliczenia: ";
  308.         cin >> szukanaInt;
  309.         cout << "Podaj liczby: ";
  310.         tabint = new int[n];
  311.         for (int i = 0; i < n; i++)
  312.             cin >> tabint[i];
  313.         Zliczanie<int>* intZliczanie = new Zliczanie<int>();
  314.         intZliczanie->Wystapienia(tabint, n, szukanaInt);
  315.         cout << "Liczba do zliczenia: " << szukanaInt << " , liczba wystapien: " << intZliczanie->Wystapienia(tabint, n, szukanaInt) << endl;
  316.     }
  317.     else if (wybor == true) {
  318.         cout << "Liczba do zliczenia: ";
  319.         cin >> szukanaDouble;
  320.         cout << "Podaj liczby: ";
  321.         tabdouble = new double[n];
  322.         for (int i = 0; i < n; i++)
  323.             cin >> tabdouble[i];
  324.         Zliczanie<double>* doubleZliczanie = new Zliczanie<double>();
  325.         cout << "Liczba do zliczenia: " << szukanaDouble << " , liczba wystapien: " << doubleZliczanie->Wystapienia(tabdouble, n, szukanaDouble) << endl;
  326.     }
  327. }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement