Advertisement
Guest User

Untitled

a guest
Feb 29th, 2020
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.90 KB | None | 0 0
  1. #include <string.h>
  2. #include <time.h>
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <cstdlib>
  6. using namespace std;
  7.  
  8. int** dodaj(int** tmp1, int** tmp2, int x, int y, int wymiar2)
  9. {
  10.     int** wynik = new int* [wymiar2];
  11.     for (int i = 0; i < wymiar2; i++)
  12.     {
  13.         wynik[i] = new int[wymiar2];
  14.     }
  15.  
  16.     for (int i = 0; i < x; i++)
  17.     {
  18.         for (int j = 0; j < y; j++)
  19.         {
  20.             wynik[i][j] = tmp2[i][j] + tmp1[i][j];
  21.         }
  22.     }
  23.     return wynik;
  24. }
  25.  
  26. void wyswietl(int** tmp, int x, int y)
  27. {
  28.     for (int i = 0; i < x; i++)
  29.     {
  30.         for (int j = 0; j < y; j++)
  31.  
  32.         {
  33.             cout << setw(3) << tmp[i][j];
  34.         }
  35.         cout << endl;
  36.     }
  37.     cout << endl;
  38. }
  39.  
  40. int** mnoz(int wiersze, int kolumny, int** tab1, int** tab2, int wymiar2) {
  41.    
  42.     int** iloczyn = new int* [wymiar2];
  43.     for (int i = 0; i < wymiar2; i++)
  44.     {
  45.         iloczyn[i] = new int[wymiar2];
  46.     }
  47.    
  48.     for (int i = 0; i < wymiar2; i++)
  49.     {
  50.         for (int j = 0; j < wymiar2; j++) {
  51.             iloczyn[i][j] = 0;
  52.         }
  53.     }
  54.    
  55.  
  56.  
  57.     int z = 0, x = 0, y = 0;
  58.     if (kolumny == wiersze) //mnożenie macierzy
  59.     {
  60.         while (x < kolumny) {
  61.             while (y < kolumny) {
  62.                 while (z < kolumny)
  63.                 {
  64.                     iloczyn[x][y] = iloczyn[x][y] + (tab1[x][z] * tab2[z][y]);
  65.                     z++;
  66.                 }
  67.                 y++;
  68.                 z = 0;
  69.             }
  70.             y = 0;
  71.             x++;
  72.         }
  73.         cout << endl;
  74.  
  75.     }
  76.     return iloczyn;
  77. }
  78.  
  79. void losowanie(int **tmp, int min, int max, int x, int y)
  80. {
  81.     for(int i = 0; i < x; i ++)
  82.     {
  83.         for(int j = 0; j < y; j ++)
  84.         {
  85.             tmp[i][j] = rand() % (max - min + 1) + min;
  86.         }
  87.     }
  88. }
  89.  
  90.  
  91. void zwolnij(int** tab, int wymiar) {
  92.     for (int i = 0; i < wymiar; i++) {
  93.         delete[] tab[i];
  94.     }
  95.     delete[] tab;
  96. }
  97.  
  98. int main()
  99. {
  100.  
  101.     //Zadanie 1
  102.     srand(time(NULL));
  103.     int n;
  104.     cout << "Podaj wymiar tablicy: "; cin >> n; cout << endl;
  105.     int** tab1 = new int* [n];
  106.     for(int i = 0; i < n; i++)
  107.     {
  108.         tab1[i] = new int[n];
  109.     }
  110.     // 0 - 10
  111.     losowanie(tab1, 0, 10, n, n);
  112.     wyswietl(tab1, n, n);
  113.  
  114.     // 1 - 15
  115.    
  116.     losowanie(tab1, 1, 15, n, n);
  117.     wyswietl(tab1, n, n);
  118.  
  119.     // (-10) - 10
  120.    
  121.     losowanie(tab1, -10, 10, n, n);
  122.     wyswietl(tab1, n, n);
  123.     zwolnij(tab1, n);//zwolnienie pamieci
  124.  
  125.     // Zakres losowanych liczb, wymiar tablic
  126.     int wymiar, min, max, x, y;
  127.     cout << "podaj wymiar tablic: ";
  128.     cin >> wymiar;
  129.     cout << endl;
  130.     cout << "Podaj zakres liczb do losowania: [od/do]";
  131.     cin >> min >> max;
  132.     cout << endl;
  133.     cout << "Podaj rozmiar tablic [x/y]: ";
  134.     cin >> x >> y;
  135.    
  136.    
  137.     int** skladnik1 = new int* [wymiar];
  138.     for (int i = 0; i < wymiar; i++)
  139.     {
  140.         skladnik1[i] = new int[wymiar];
  141.     }
  142.     int** skladnik2 = new int* [wymiar];
  143.     for (int i = 0; i < wymiar; i++)
  144.     {
  145.         skladnik2[i] = new int[wymiar];
  146.     }
  147.    
  148.     losowanie(skladnik1, min, max, x, y);
  149.     wyswietl(skladnik1, x, y);
  150.     losowanie(skladnik2, min, max, x, y);
  151.     wyswietl(skladnik2, x, y);
  152.    
  153.     int** wynik = dodaj(skladnik1, skladnik2, x, y, wymiar);
  154.     wyswietl(wynik, x, y);
  155.  
  156.     zwolnij(skladnik1, wymiar);
  157.     zwolnij(skladnik2, wymiar);
  158.     zwolnij(wynik, wymiar);
  159.  
  160.    
  161.    
  162.     // MNOŻENIE 2 TABLIC
  163.     int wymiarx, x1, y1, x2, y2;
  164.    
  165.     cout << "Podaj wymiar tablic: ";
  166.     cin >> wymiarx;
  167.     cout << endl;
  168.     cout << "Podaj zakres liczb do losowania: [od/do]: ";
  169.     cin >> min >> max;
  170.     cout << endl;
  171.     cout << "Podaj rozmiar tablicy 1 [x/y]: ";
  172.     cin >> x1 >> y1;
  173.     cout << endl <<"Podaj rozmiar tablicy 2 [x/y]: ";
  174.     cin >> x2 >> y2;
  175.    
  176.    
  177.     int** czynnik1 = new int* [wymiarx];
  178.     for (int i = 0; i < wymiarx; i++) {
  179.         czynnik1[i] = new int[wymiarx];
  180.     }
  181.     int** czynnik2 = new int *[wymiarx];
  182.     for (int i = 0; i < wymiarx; i++)
  183.     {
  184.         czynnik2[i] = new int[wymiarx];
  185.     }
  186.    
  187.     losowanie(czynnik1, min, max, x1, y1);
  188.     losowanie(czynnik2, min, max, x2, y2);
  189.     wyswietl(czynnik1, x1, y1);
  190.     wyswietl(czynnik2, x2, y2);
  191.  
  192.  
  193.     if(y1 != x2)
  194.     {
  195.         cout << "Nie da sie pomnozyc tych macierzy" << endl;
  196.     }else
  197.     {
  198.         int** iloczyn = mnoz(x2, y1, czynnik1, czynnik2, wymiarx);
  199.         wyswietl(iloczyn, x1, y1);
  200.         zwolnij(iloczyn, wymiarx);
  201.     }
  202.    
  203.     zwolnij(czynnik1, wymiarx);
  204.     zwolnij(czynnik2, wymiarx);
  205.  
  206.     return 0;
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement