Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <time.h>
- #include <iostream>
- #include <iomanip>
- #include <cstdlib>
- using namespace std;
- int** dodaj(int** tmp1, int** tmp2, int x, int y, int wymiar2)
- {
- int** wynik = new int* [wymiar2];
- for (int i = 0; i < wymiar2; i++)
- {
- wynik[i] = new int[wymiar2];
- }
- for (int i = 0; i < x; i++)
- {
- for (int j = 0; j < y; j++)
- {
- wynik[i][j] = tmp2[i][j] + tmp1[i][j];
- }
- }
- return wynik;
- }
- void wyswietl(int** tmp, int x, int y)
- {
- for (int i = 0; i < x; i++)
- {
- for (int j = 0; j < y; j++)
- {
- cout << setw(3) << tmp[i][j];
- }
- cout << endl;
- }
- cout << endl;
- }
- int** mnoz(int wiersze, int kolumny, int** tab1, int** tab2, int wymiar2) {
- int** iloczyn = new int* [wymiar2];
- for (int i = 0; i < wymiar2; i++)
- {
- iloczyn[i] = new int[wymiar2];
- }
- for (int i = 0; i < wymiar2; i++)
- {
- for (int j = 0; j < wymiar2; j++) {
- iloczyn[i][j] = 0;
- }
- }
- int z = 0, x = 0, y = 0;
- if (kolumny == wiersze) //mnożenie macierzy
- {
- while (x < kolumny) {
- while (y < kolumny) {
- while (z < kolumny)
- {
- iloczyn[x][y] = iloczyn[x][y] + (tab1[x][z] * tab2[z][y]);
- z++;
- }
- y++;
- z = 0;
- }
- y = 0;
- x++;
- }
- cout << endl;
- }
- return iloczyn;
- }
- void losowanie(int **tmp, int min, int max, int x, int y)
- {
- for(int i = 0; i < x; i ++)
- {
- for(int j = 0; j < y; j ++)
- {
- tmp[i][j] = rand() % (max - min + 1) + min;
- }
- }
- }
- void zwolnij(int** tab, int wymiar) {
- for (int i = 0; i < wymiar; i++) {
- delete[] tab[i];
- }
- delete[] tab;
- }
- int main()
- {
- //Zadanie 1
- srand(time(NULL));
- int n;
- cout << "Podaj wymiar tablicy: "; cin >> n; cout << endl;
- int** tab1 = new int* [n];
- for(int i = 0; i < n; i++)
- {
- tab1[i] = new int[n];
- }
- // 0 - 10
- losowanie(tab1, 0, 10, n, n);
- wyswietl(tab1, n, n);
- // 1 - 15
- losowanie(tab1, 1, 15, n, n);
- wyswietl(tab1, n, n);
- // (-10) - 10
- losowanie(tab1, -10, 10, n, n);
- wyswietl(tab1, n, n);
- zwolnij(tab1, n);//zwolnienie pamieci
- // Zakres losowanych liczb, wymiar tablic
- int wymiar, min, max, x, y;
- cout << "podaj wymiar tablic: ";
- cin >> wymiar;
- cout << endl;
- cout << "Podaj zakres liczb do losowania: [od/do]";
- cin >> min >> max;
- cout << endl;
- cout << "Podaj rozmiar tablic [x/y]: ";
- cin >> x >> y;
- int** skladnik1 = new int* [wymiar];
- for (int i = 0; i < wymiar; i++)
- {
- skladnik1[i] = new int[wymiar];
- }
- int** skladnik2 = new int* [wymiar];
- for (int i = 0; i < wymiar; i++)
- {
- skladnik2[i] = new int[wymiar];
- }
- losowanie(skladnik1, min, max, x, y);
- wyswietl(skladnik1, x, y);
- losowanie(skladnik2, min, max, x, y);
- wyswietl(skladnik2, x, y);
- int** wynik = dodaj(skladnik1, skladnik2, x, y, wymiar);
- wyswietl(wynik, x, y);
- zwolnij(skladnik1, wymiar);
- zwolnij(skladnik2, wymiar);
- zwolnij(wynik, wymiar);
- // MNOŻENIE 2 TABLIC
- int wymiarx, x1, y1, x2, y2;
- cout << "Podaj wymiar tablic: ";
- cin >> wymiarx;
- cout << endl;
- cout << "Podaj zakres liczb do losowania: [od/do]: ";
- cin >> min >> max;
- cout << endl;
- cout << "Podaj rozmiar tablicy 1 [x/y]: ";
- cin >> x1 >> y1;
- cout << endl <<"Podaj rozmiar tablicy 2 [x/y]: ";
- cin >> x2 >> y2;
- int** czynnik1 = new int* [wymiarx];
- for (int i = 0; i < wymiarx; i++) {
- czynnik1[i] = new int[wymiarx];
- }
- int** czynnik2 = new int *[wymiarx];
- for (int i = 0; i < wymiarx; i++)
- {
- czynnik2[i] = new int[wymiarx];
- }
- losowanie(czynnik1, min, max, x1, y1);
- losowanie(czynnik2, min, max, x2, y2);
- wyswietl(czynnik1, x1, y1);
- wyswietl(czynnik2, x2, y2);
- if(y1 != x2)
- {
- cout << "Nie da sie pomnozyc tych macierzy" << endl;
- }else
- {
- int** iloczyn = mnoz(x2, y1, czynnik1, czynnik2, wymiarx);
- wyswietl(iloczyn, x1, y1);
- zwolnij(iloczyn, wymiarx);
- }
- zwolnij(czynnik1, wymiarx);
- zwolnij(czynnik2, wymiarx);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement