Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- struct macierz{
- int x;
- int y;
- double wartosc[10][10];
- }A,B,C;
- char wybor;
- void wczytaj()
- {
- cout<<"Podaj ilosc macierzy. Maksymalna ilosc - 3: ";
- int a;
- cin>>a;
- if(a==0 || a>3)
- {
- system("cls");
- cout<<"Musisz wprowadzic co najmniej 1 macierz, maksymalnie 3!";
- wczytaj();
- }
- if(a>0 && a<=3)
- {
- cout<<"Wprowadz ilosc wierszy dla macierzy A: ";
- cin>>A.x;
- cout<<"Wprowadz ilosc kolumn dla macierzy A: ";
- cin>>A.y;
- cout<<"Wymiary macierzy A: "<<A.x<<"x"<<A.y<<endl<<endl;
- for(int i=0; i<A.x;i++)
- {
- for(int j=0;j<A.y;j++)
- {
- cout<<"Podaj a"<<i<<j<<": ";
- cin>>A.wartosc[i][j];
- }
- }
- }
- cout<<endl;
- if(a>1&&a<=3){
- cout<<"Wprowadz ilosc wierszy dla macierzy B: ";
- cin>>B.x;
- cout<<"Wprowadz ilosc kolumn dla macierzy B: ";
- cin>>B.y;
- cout<<"Wymiary macierzy B: "<<B.x<<"x"<<B.y<<endl<<endl;
- for(int i=0; i<B.x;i++)
- {
- for(int j=0;j<B.y;j++)
- {
- cout<<"Podaj b"<<i<<j<<": ";
- cin>>B.wartosc[i][j];
- }
- }
- }
- cout<<endl;
- if(a==3)
- {
- cout<<"Wprowadz ilosc wierszy dla macierzy C: ";
- cin>>C.x;
- cout<<"Wprowadz ilosc kolumn dla macierzy C: ";
- cin>>C.y;
- cout<<"Wymiary macierzy C: "<<C.x<<"x"<<C.y<<endl<<endl;
- for(int i=0; i<C.x;i++)
- {
- for(int j=0;j<C.y;j++)
- {
- cout<<"Podaj c"<<i<<j<<": ";
- cin>>C.wartosc[i][j];
- }
- }
- }
- }
- void wypisz()
- {
- if(A.x!=0)
- {
- cout<<endl<<"Macierz A; "<<endl;
- for(int i=0;i<A.x;i++)
- {
- cout << "|";
- for(int j=0;j<A.y;j++)
- {
- cout.width(2);
- cout<<A.wartosc[i][j];
- }
- cout << " |" << endl;
- cout<<endl;
- }
- }
- if(B.x!=0)
- {
- cout<<endl<<"Macierz B; "<<endl;
- for(int i=0;i<B.x;i++)
- {
- cout << "|";
- for(int j=0;j<B.y;j++)
- {
- cout.width(2);
- cout<<B.wartosc[i][j];
- }
- cout << " |" << endl;
- cout<<endl;
- }
- }
- if(C.x!=0)
- {
- cout<<endl<<"Macierz C; "<<endl;
- for(int i=0;i<C.x;i++)
- {
- cout << "|";
- for(int j=0;j<C.y;j++)
- {
- cout.width(2);
- cout<<C.wartosc[i][j];
- }
- cout << " |" << endl;
- cout<<endl;
- }
- }
- }
- float dodawanie_macierzy[100][100];
- void dodawanie()
- {
- float dodawanie_macierzy[A.x][A.y];
- if(A.x==B.x&&A.y==B.y)
- {
- cout<<"Suma macierzy:"<<endl;
- for(int i=0;i<A.x;i++)
- {
- cout << "|";
- for(int j=0;j<A.y;j++){
- dodawanie_macierzy[i][j]=A.wartosc[i][j]+B.wartosc[i][j];
- cout.width(2);
- cout<<dodawanie_macierzy[i][j];
- }
- cout<< " |"<<endl;
- cout<<endl;
- }
- }
- else
- {
- cout<<"Podane macierze musza miec taki sam rozmiar";
- }
- }
- void mnozenie()
- {
- float mnozenie_macierzy[A.y][B.x];
- if(A.x==B.y)
- {
- cout<<"Iloczyn macierzy: "<<endl;
- for(int i=0;i<A.x;i++)
- {
- cout << "|";
- for(int j=0;j<B.y;j++)
- {
- for(int t=0;t<=B.x;t++)
- mnozenie_macierzy[i][j]+= A.wartosc[i][t]*B.wartosc[t][j];
- cout.width(4);
- cout<<mnozenie_macierzy[i][j];
- }
- cout<< " |"<<endl;
- cout<<endl;
- }
- }
- else
- {
- cout<<"Liczba kolumn MACIERZY A musi byc rowna liczbie wierszy MACIERZY B";
- }
- }
- double wyznacznik(macierz m)
- {
- if(m.y==1)
- return m.wartosc[0][0];
- else if(m.y==2)
- return m.wartosc[0][0]*m.wartosc[1][1]-m.wartosc[0][1]*m.wartosc[1][0];
- else if(m.y==3)
- return m.wartosc[0][0]*m.wartosc[1][1]*m.wartosc[2][2]+m.wartosc[0][1]*m.wartosc[1][2]*m.wartosc[2][0]+m.wartosc[0][2]*m.wartosc[1][0]*m.wartosc[2][1]-m.wartosc[2][0]*m.wartosc[1][1]*m.wartosc[0][2]-m.wartosc[2][1]*m.wartosc[1][2]*m.wartosc[0][0]-m.wartosc[0][1]*m.wartosc[1][0]*m.wartosc[2][2];
- }
- void wyznacznik_menu2()
- {
- int w;
- cout<<"1.Macierz A"<<endl;
- cout<<"2.Macierz B"<<endl;
- cout<<"3.Macierz C"<<endl;
- cin>>w;
- switch(w)
- {
- case 1:
- cout<<"Wyznacznik macierzy A ="<<wyznacznik(A);
- break;
- case 2:
- cout<<"Wyznacznik macierzy B ="<<wyznacznik(B);
- break;
- case 3:
- cout<<"Wyznacznik macierzy C ="<<wyznacznik(C);
- break;
- }
- }
- void odwrotnosc_macierzy(double macierze[10][10], double macierz_odwrocona[3][3],double wyznacznik){
- for(int i=0;i<3;i++){
- for(int j=0;j<3;j++){
- macierz_odwrocona[i][j]=((macierze[(j+1)%3][(i+1)%3] * macierze[(j+2)%3][(i+2)%3]) - (macierze[(j+1)%3][(i+2)%3] * macierze[(j+2)%3][(i+1)%3]))/wyznacznik;
- }
- }
- }
- double odwrotna[3][3];
- int main()
- {
- for(;;)
- {
- cout<<endl;
- cout<<"MENU"<<endl;
- cout<<"1.WCZYTYWANIE MACIERZY"<<endl;
- cout<<"2.WYPISYWANIE MACIERZY"<<endl;
- cout<<"3.DODAWANIE MACIERZY"<<endl;
- cout<<"4.MNOZENIE MACIERZY"<<endl;
- cout<<"5.LICZENIE WYZNACZNIKA MACIERZY(3x3)"<<endl;
- cout<<"6.WYZNACZANIE MACIERZY ODWROTNEJ"<<endl;
- cout<<"7.ROZWIAZYWANIE ROWNANIA - AX+B=C"<<endl;
- cout<<"8.ZAKONCZ PROGRAM"<<endl;
- cout<<"Wybierz nr opcji: ";
- cin>>wybor;
- switch(wybor)
- {
- case '1':
- system("cls");
- wczytaj();
- break;
- case '2':
- system("cls");
- wypisz();
- break;
- case '3':
- system("cls");
- dodawanie();
- break;
- case '4':
- system("cls");
- mnozenie();
- break;
- case '5':
- system("cls");
- wyznacznik_menu2();
- break;
- case '6':
- system("cls");
- odwrotnosc_macierzy(A.wartosc, odwrotna, wyznacznik(A));
- for(int i=0;i<3;i++)
- {
- for(int y=0;y<3;y++)
- {
- cout<<odwrotna[i][y]<<" ";
- }
- cout<<endl;
- }
- break;
- case '7':
- system("cls");
- break;
- case '8':
- system("cls");
- exit(0);
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement