Advertisement
Talar97

[JPO] Lab04

Apr 2nd, 2018
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.53 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void WyborZadania();
  7. double Zad1();
  8. void fillArray(double *tab, int rozmiar);
  9. void showArray(double *tab, int rozmiar);
  10. void reverseArray(double *tab, int rozmiar);
  11. int Zad3(int *a, int *b);
  12. void Zad5(int n, double *tab1, double *tab2, double *tab3);
  13. void Zad6(int n, int *wsk);
  14.  
  15. int main() {
  16.     WyborZadania();
  17.     return EXIT_SUCCESS;
  18. }
  19.  
  20. double Zad1(double zm1, double zm2){
  21.     double srednia;
  22.     if(zm1!=0 && zm2!=0){
  23.         srednia = 2/((1/zm1)+(1/zm2));
  24.     }
  25.     return srednia;
  26. }
  27.  
  28. //Zrealizowane przy pomocy wskaznikow
  29. void fillArray(double *tab, int rozmiar){
  30.     cout << "Rozmiar tablicy: " << rozmiar << endl;
  31.     for(int i = 0; i < rozmiar; i++){
  32.         cout << "Wprowadz double: ";
  33.         cin >> *tab;
  34.         tab++;
  35.     }
  36. }
  37.  
  38. void showArray(double *tab, int rozmiar){
  39.     for(int i = 0; i < rozmiar; i++){
  40.         cout << "(" << i+1 << ":" << *tab << "), ";
  41.         tab++;
  42.     }
  43.     cout << endl;
  44. }
  45.  
  46. void reverseArray(double *tab, int rozmiar){
  47.     double *tab_kopia = new double[rozmiar];
  48.     double *wsk_1 = tab;
  49.     double *wsk_2 = tab_kopia;
  50.    
  51.     //Kopiowanie tabeli
  52.     for(int i = 0; i < rozmiar; i++){
  53.         double zmienna = *tab;
  54.         *tab_kopia = zmienna;
  55.         tab++;
  56.         tab_kopia++;
  57.     }
  58.    
  59.    
  60.     //Odwracanie
  61.     tab = wsk_1;
  62.     tab_kopia = (wsk_2 + rozmiar);
  63.     for(int j = 0; j < rozmiar; j++){
  64.         tab_kopia--;
  65.         double zmienna = *tab_kopia;
  66.         *tab = zmienna;
  67.         tab++;
  68.     }
  69.    
  70.     delete [] tab_kopia;
  71. }
  72.  
  73. int Zad3(int *a, int *b){
  74.     int min;
  75.     if(*a < *b) min = *a;
  76.     else min = *b;
  77.    
  78.     return min;
  79. }
  80.  
  81. void Zad5(int n, double *tab1, double *tab2, double *tab3){
  82.     //Sumowanie
  83.     for(int i = 0; i < n; i++){
  84.         tab3[i] = tab1[i] + tab2[i];
  85.         cout << tab3[i] << ", ";
  86.     }
  87.    
  88.     cout << endl;
  89.     //Przypisywanie wiekszego
  90.     for(int i = 0; i < n; i++){
  91.         if(tab1[i] > tab2[i]) tab3[i] = tab1[i];
  92.         else tab3[i] = tab2[i];
  93.         cout << tab3[i] << ", ";
  94.     }
  95.    
  96.     //Przepisywanie
  97.         //Najpierw kopiowanie wszystkich tablic
  98.     double tab1_kopia[n], tab2_kopia[n], tab3_kopia[n];
  99.     for(int i = 0; i < n; i++){
  100.         tab1_kopia[i] = tab1[i];
  101.         tab2_kopia[i] = tab2[i];
  102.         tab3_kopia[i] = tab3[i];
  103.     }
  104.    
  105.     for(int i = 0; i < n; i++){
  106.         tab1[i] = tab2_kopia[i];
  107.         tab2[i] = tab3_kopia[i];
  108.         tab3[i] = tab1_kopia[i];
  109.        
  110.         cout << tab1[i] << ", " << tab2[i] << ", " << tab3[i] << endl;
  111.     }
  112. }
  113.  
  114. void Zad6(int n, int *wsk){
  115.     *wsk = n;
  116. }
  117.  
  118. void WyborZadania(){
  119.     int zad;
  120.     cout << "Wybierz zadanie: ";
  121.     cin >> zad;
  122.     switch(zad){
  123.         case 1:
  124.         {
  125.             double x,y;
  126.             do{
  127.                 cout << "Liczba 1: ";
  128.                 cin >> x;
  129.                 cout << "Liczba 2: ";
  130.                 cin >> y;
  131.                 double srednia = Zad1(x,y);
  132.                 cout << srednia << endl;
  133.             }while(x!=0 && y!=0);      
  134.             break;
  135.         }
  136.         case 2:
  137.         {
  138.             int n = 5;
  139.             double *tablica = new double[n];
  140.             fillArray(tablica, n);
  141.             showArray(tablica, n);
  142.             reverseArray(tablica, n);
  143.             showArray(tablica, n);
  144.             delete [] tablica;
  145.             break;
  146.         }
  147.         case 3:
  148.         {
  149.             int a,b;
  150.             cout << "Wprowadz a:";
  151.             cin >> a;
  152.             cout << "Wprowadz b: ";
  153.             cin >> b;
  154.             // &zmienna: zwraca adres w pamieci zmiennej. Zamiast tego mozna zrobic int *wsk = &zmienna;
  155.             cout << "Mniejsza: " << Zad3(&a, &b);
  156.             break;
  157.         }
  158.         case 4:
  159.         {
  160.             //Zadanie 4 odnosi sie do mnozenia macieży
  161.             //Nie mam pojecia jak to sie robi
  162.         }
  163.         case 5:
  164.         {
  165.             const int n = 5;
  166.             double tab1[n] = {1,3,5,7,9};
  167.             double tab2[n] = {2,4,6,8,10};
  168.             double tab3[n] = {11,12,13,14,15};
  169.             Zad5(n ,tab1, tab2, tab3);
  170.            
  171.             //showArray(tab3, n);
  172.             break;
  173.         }
  174.         case 6:
  175.         {
  176.             int zmienna = 5;
  177.             int *wsk = &zmienna;
  178.             int n = 2137;
  179.            
  180.             cout << zmienna << endl;
  181.             Zad6(n, wsk);
  182.             cout << zmienna;
  183.             break;
  184.         }
  185.         default:
  186.         {
  187.             WyborZadania();
  188.             break;
  189.         }
  190.     }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement