Facebook
From Diminutive Eider, 5 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 197
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <time.h>
  4. #include <cstdlib>
  5. using namespace std;
  6. void utworz(double **tab,int m,int n)
  7. {
  8.         tab = new double*[m];
  9.         for (int i = 0; i < m; i++)
  10.         {
  11.                 tab[i] = new double[n];
  12.         }
  13.         for (int i = 0; i < m; i++)
  14.         {
  15.                 for (int j = 0; j < n; j++)
  16.                 {
  17.                         tab[i][j] = 0.0;
  18.                 }
  19.         }
  20. }
  21. void zapisz(double **tab, int m, int n)
  22. {
  23.         cout << m << "/n" << n;
  24.         for (int i = 0; i < m; i++)
  25.         {
  26.                 for (int j = 0; j < n; j++)
  27.                 {
  28.                         cout << tab[i][j] << "/t";
  29.                 }
  30.                 cout << endl;
  31.         }
  32. }
  33. void usun(double **tab, int m)
  34. {
  35.         for (int i = 0; i < m; i++)
  36.         {
  37.                 delete tab[i];
  38.         }
  39.         delete[]tab;
  40. }
  41. bool czytaj(double **tab, int m, int n, double **tab1, int p, int q)
  42. {
  43.         cout << "(funkcja czytaj) Podaj rozmiary macierzy";
  44.         cin >> m >> n >> p >> q;
  45.         tab = new double*[m];
  46.         tab1 = new double*[p];
  47.         for (int i = 0; i < m; i++)
  48.         {
  49.                 tab[i] = new double[n];
  50.         }
  51.         for (int i = 0; i < p; i++)
  52.         {
  53.                 tab[i] = new double[q];
  54.         }
  55.         cout << " wczytaj elementy macierzy A" << endl;
  56.         for (int i = 0; i < m; i++)
  57.                 for (int j = 0; j < n; j++)
  58.                         cin >> tab[i][j];
  59.         cout << " wczytaj elementy macierzy B" << endl;
  60.         for (int i = 0; i < p; i++)
  61.                 for (int j = 0; j < q; j++)
  62.                         cin >> tab1[i][j];
  63.         return true;
  64. }
  65. bool czytaj_losowo(double **tab, int m, int n, double **tab1, int p, int q)
  66. {
  67.         cout << "(funkcja czytaj) Podaj rozmiary macierzy";
  68.         cin >> m >> n >> p >> q;
  69.         tab = new double*[m];
  70.         tab1 = new double*[p];
  71.         for (int i = 0; i < m; i++)
  72.         {
  73.                 tab[i] = new double[n];
  74.         }
  75.         for (int i = 0; i < p; i++)
  76.         {
  77.                 tab[i] = new double[q];
  78.         }
  79.         cout << " wczytaj elementy macierzy A" << endl;
  80.         for (int i = 0; i < m; i++)
  81.                 for (int j = 0; j < n; j++)
  82.                         tab[i][j] = rand() % 100;
  83.         cout << " wczytaj elementy macierzy B" << endl;
  84.         for (int i = 0; i < p; i++)
  85.                 for (int j = 0; j < q; j++)
  86.                         tab[i][j] = rand() % 100;
  87.         return true;
  88. }
  89. bool suma(double **A, int m, int n, double **B, int p, int q, double **C) {
  90.         if (m != p || n != q)
  91.                 return false;
  92.         C = new double *[m];
  93.         for (int i = 0; i < m; i++)
  94.                 C[i] = new double[n];
  95.         for (int i = 0; i < m; i++)
  96.                 for (int j = 0; j < n; j++)
  97.                         C[i][j] = A[i][j] + B[i][j];
  98.         return true;
  99. }
  100. bool roznica(double **A, int m, int n, double **B, int p, int q, double **C) {
  101.         if (m != p || n != q)
  102.                 return false;
  103.         C = new double *[m];
  104.         for (int i = 0; i < m; i++)
  105.                 C[i] = new double[n];
  106.         for (int i = 0; i < m; i++)
  107.                 for (int j = 0; j < n; j++)
  108.                         C[i][j] = A[i][j] - B[i][j];
  109.         return true;
  110. }
  111. bool transponowanie(double **A, int m, int n, double **C)
  112. {
  113.         C = new double*[n];
  114.         for (int i = 0; i < n; i++) {
  115.                 C[i] = new double[m];
  116.         }
  117.         for (int i = 0; i < m; i++)
  118.                 for (int j = 0; j < n; j++)
  119.                         C[j][i] = A[i][j];
  120.         return true;
  121. }
  122.  
  123. int main()
  124. {
  125.         srand(time(NULL));
  126.         double **A = 0, **B = 0, **C =0;
  127.         unsigned int n = 2, m = 3, p = 3, q = 2;
  128.         if (czytaj_losowo(A, m, n, B, p, q))
  129.         {
  130.                 zapisz(A, m, n);
  131.                 zapisz(B, p, q);
  132.         }
  133.         if (czytaj(A, m, n, B, p, q))
  134.                 {
  135.                 zapisz(A, m, n);
  136.                 zapisz(B, p, q);
  137.                 if (!suma(A, m, n, B, p, q, C))
  138.                 {
  139.                         cerr << "Macierze maja nieprawidlowe wymiary - suma niemozliwa" << endl;
  140.                 }
  141.                 else {
  142.                         cout << "suma macierzy" << endl;
  143.                         zapisz(C, m, n);
  144.                 }
  145.                 if (!roznica(A, m, n, B, p, q, C)) {
  146.                         cerr << "Macierze maja nieprawidlowe wymiary - roznica niemozliwa" << endl;
  147.                 }
  148.                 else {
  149.                         cout << "roznica macierzy" << endl;
  150.                         zapisz(C, m, n);
  151.                 }
  152.                 /*if (!iloczyn(A, m, n, B, p, q, C)) {
  153.                         cerr << "Macierze maja nieprawidlowe wymiary - iloczyn niemozliwy" << endl;
  154.                 }
  155.                 else {
  156.                         cout << "iloczyn macierzy" << endl;
  157.                         zapisz(C, m, q);
  158.                 }*/
  159.                 cout << "macierz przed transponowaniem" << endl;
  160.                 zapisz(B, p, q);
  161.                 cout << "macierz transponowana" << endl;
  162.                 transponowanie(B, p, q, C);
  163.                 zapisz(C, q, p);
  164.         }
  165. }