Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include <conio.h>
- using namespace std;
- //Michal Szuleta
- void utworz(double **&M,const int m,const int n)
- {
- M = new double*[m];
- for(int i=0;i<m;i++)
- {
- M[i]=new double [n];
- }
- for (int i=0;i<m;i++)
- {
- for(int j=0;j<n;j++)
- {
- M[i][j]=0;
- }
- }
- }
- void zapisz(double **M,const unsigned int m,const unsigned int n)
- {
- cout<<m<<"x"<<n<<endl;
- cout<<endl;
- for(unsigned int i=0;i<m;i++)
- {
- for(unsigned int j=0;j<n;j++)
- {
- cout<<M[i][j]<<" ";
- }
- cout<<endl;
- }
- cout<<endl;
- }
- void usun(double **M,const int m)
- {
- for(int i=0;i<m;i++)
- {
- delete [] M[m];
- }
- delete [] M;
- }
- bool czytaj(double **&M,unsigned int &m,unsigned int &n,double **&N,unsigned int &p,unsigned &q)
- {
- cout<<"Macierz A!"<<endl;
- cout<<"Liczba wierszy :";
- cin>>m;
- cout<<"Liczba kolumn :";
- cin>>n;
- utworz(M,m,n);
- for(unsigned int i=0;i<m;i++)
- {
- for(unsigned int j=0;j<n;j++)
- {
- cin>>M[i][j];
- }
- }
- cout<<"Macierz B!"<<endl;
- cout<<"Liczba wierszy :";
- cin>>p;
- cout<<"Liczba kolumn :";
- cin>>q;
- utworz(N,p,q);
- for(unsigned int i=0;i<p;i++)
- {
- for(unsigned int j=0;j<q;j++)
- {
- cin>>N[i][j];
- }
- }
- return true;
- }
- bool czytaj_losowo(double **&M,unsigned int &m,unsigned int &n,double **&N,unsigned int &p,unsigned &q)
- {
- cout<<"Macierz A!"<<endl;
- cout<<"Liczba wierszy :";
- cin>>m;
- cout<<"Liczba kolumn :";
- cin>>n;
- utworz(M,m,n);
- for(unsigned int i=0;i<m;i++)
- {
- for(unsigned int j=0;j<n;j++)
- {
- M[i][j]=rand()%10+1;
- }
- }
- cout<<"Macierz B!"<<endl;
- cout<<"Liczba wierszy :";
- cin>>p;
- cout<<"Liczba kolumn :";
- cin>>q;
- utworz(N,p,q);
- for(unsigned int i=0;i<p;i++)
- {
- for(unsigned int j=0;j<q;j++)
- {
- N[i][j]=rand()%10+1;
- }
- }
- return true;
- }
- bool suma(double **M,unsigned int m,unsigned int n,double **N,unsigned int p,unsigned int q,double **&C)
- {
- if(m==p&&n==q)
- {
- utworz(C,m,n);
- for(unsigned int i=0;i<n;i++)
- {
- for(unsigned int j=0;j<n;j++)
- {
- C[i][j]=M[i][j]+N[i][j];
- }
- }
- return true;
- }
- else
- return false;
- }
- bool roznica(double **M,unsigned int m,unsigned int n,double **N,unsigned int p,unsigned int q,double **&C)
- {
- if(m==p&&n==q)
- {
- utworz(C,m,n);
- for(unsigned int i=0;i<n;i++)
- {
- for(unsigned int j=0;j<n;j++)
- {
- C[i][j]=M[i][j]-N[i][j];
- }
- }
- return true;
- }
- else
- return false;
- }
- bool iloczyn(double **M,unsigned int m,unsigned int n,double **N,unsigned int p,unsigned int q,double **&C)
- {
- if(n==p)
- {
- utworz(C,m,n);
- for(unsigned int i=0;i<m;i++)
- {
- for(unsigned int k=0;k<q;k++)
- {
- for(unsigned int j=0;j<n;j++)
- {
- C[i][k]+=M[i][j]*N[j][k];
- }
- }
- }
- return true;
- }
- else
- return false;
- }
- void transpose(double **N,unsigned int &p, unsigned &q,double **&C)
- {
- utworz(C,q,p);
- for(unsigned int i=0;i<p;i++)
- {
- for(unsigned int j=0;j<q;j++)
- {
- C[j][i]=N[i][j];
- }
- }
- }
- int main()
- {
- double **C = 0;
- srand(time(NULL));
- double **A = 0, **B = 0;
- unsigned int n = 2, m = 3, p = 3, q = 2;
- if (czytaj_losowo(A, m, n, B, p, q)) {
- zapisz(A, m, n);
- zapisz(B, p, q);
- usun(A,m);
- usun(B,q);
- }
- if (czytaj(A, m, n, B, p, q)) {
- zapisz(A, m, n);
- zapisz(B, p, q);
- if(!suma(A, m, n, B, p, q, C)){
- cerr << "Macierze maja nieprawidlowe wymiary - suma niemozliwa" << endl;
- }
- else{
- cout << "suma macierzy" << endl;
- zapisz(C, m, n);
- usun(C,m);
- }
- if(!roznica(A, m, n, B, p, q, C)){
- cerr << "Macierze maja nieprawidlowe wymiary - roznica niemozliwa" << endl;
- }
- else{
- cout << "roznica macierzy" << endl;
- zapisz(C, m, n);
- usun(C,m);
- }
- if(!iloczyn(A, m, n, B, p, q, C)){
- cerr << "Macierze maja nieprawidlowe wymiary - iloczyn niemozliwy" << endl;
- }
- else{
- cout << "iloczyn macierzy" << endl;
- zapisz(C, m, q);
- usun(C,m);
- }
- cout << "macierz przed transponowaniem" << endl;
- zapisz(B, p, q);
- cout << "macierz transponowana" << endl;
- transpose(B, p, q, C);
- zapisz(C, q, p);
- usun(C,m);
- }
- usun(A,m);
- usun(B,p);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement