Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. struct macierz{
  7. int x;
  8. int y;
  9. double wartosc[10][10];
  10. }A,B,C;
  11.  
  12. char wybor;
  13.  
  14. void wczytaj()
  15. {
  16. cout<<"Podaj ilosc macierzy. Maksymalna ilosc - 3: ";
  17. int a;
  18. cin>>a;
  19. if(a==0 || a>3)
  20. {
  21. system("cls");
  22. cout<<"Musisz wprowadzic co najmniej 1 macierz, maksymalnie 3!";
  23. wczytaj();
  24. }
  25. if(a>0 && a<=3)
  26. {
  27. cout<<"Wprowadz ilosc wierszy dla macierzy A: ";
  28. cin>>A.x;
  29. cout<<"Wprowadz ilosc kolumn dla macierzy A: ";
  30. cin>>A.y;
  31. cout<<"Wymiary macierzy A: "<<A.x<<"x"<<A.y<<endl<<endl;
  32. for(int i=0; i<A.x;i++)
  33. {
  34. for(int j=0;j<A.y;j++)
  35. {
  36. cout<<"Podaj a"<<i<<j<<": ";
  37. cin>>A.wartosc[i][j];
  38. }
  39. }
  40. }
  41. cout<<endl;
  42. if(a>1&&a<=3){
  43. cout<<"Wprowadz ilosc wierszy dla macierzy B: ";
  44. cin>>B.x;
  45. cout<<"Wprowadz ilosc kolumn dla macierzy B: ";
  46. cin>>B.y;
  47. cout<<"Wymiary macierzy B: "<<B.x<<"x"<<B.y<<endl<<endl;
  48. for(int i=0; i<B.x;i++)
  49. {
  50. for(int j=0;j<B.y;j++)
  51. {
  52. cout<<"Podaj b"<<i<<j<<": ";
  53. cin>>B.wartosc[i][j];
  54. }
  55. }
  56. }
  57. cout<<endl;
  58. if(a==3)
  59. {
  60. cout<<"Wprowadz ilosc wierszy dla macierzy C: ";
  61. cin>>C.x;
  62. cout<<"Wprowadz ilosc kolumn dla macierzy C: ";
  63. cin>>C.y;
  64. cout<<"Wymiary macierzy C: "<<C.x<<"x"<<C.y<<endl<<endl;
  65. for(int i=0; i<C.x;i++)
  66. {
  67. for(int j=0;j<C.y;j++)
  68. {
  69. cout<<"Podaj c"<<i<<j<<": ";
  70. cin>>C.wartosc[i][j];
  71. }
  72. }
  73. }
  74. }
  75.  
  76. void wypisz()
  77. {
  78. if(A.x!=0)
  79. {
  80. cout<<endl<<"Macierz A; "<<endl;
  81. for(int i=0;i<A.x;i++)
  82. {
  83. cout << "|";
  84. for(int j=0;j<A.y;j++)
  85. {
  86.  
  87. cout.width(2);
  88. cout<<A.wartosc[i][j];
  89. }
  90. cout << " |" << endl;
  91. cout<<endl;
  92. }
  93. }
  94.  
  95.  
  96. if(B.x!=0)
  97. {
  98. cout<<endl<<"Macierz B; "<<endl;
  99. for(int i=0;i<B.x;i++)
  100. {
  101. cout << "|";
  102. for(int j=0;j<B.y;j++)
  103. {
  104. cout.width(2);
  105. cout<<B.wartosc[i][j];
  106. }
  107. cout << " |" << endl;
  108. cout<<endl;
  109. }
  110. }
  111. if(C.x!=0)
  112. {
  113. cout<<endl<<"Macierz C; "<<endl;
  114. for(int i=0;i<C.x;i++)
  115. {
  116. cout << "|";
  117. for(int j=0;j<C.y;j++)
  118. {
  119. cout.width(2);
  120. cout<<C.wartosc[i][j];
  121. }
  122. cout << " |" << endl;
  123. cout<<endl;
  124. }
  125. }
  126.  
  127. }
  128. float dodawanie_macierzy[100][100];
  129.  
  130. void dodawanie()
  131. {
  132. float dodawanie_macierzy[A.x][A.y];
  133. if(A.x==B.x&&A.y==B.y)
  134. {
  135. cout<<"Suma macierzy:"<<endl;
  136.  
  137. for(int i=0;i<A.x;i++)
  138. {
  139. cout << "|";
  140. for(int j=0;j<A.y;j++){
  141. dodawanie_macierzy[i][j]=A.wartosc[i][j]+B.wartosc[i][j];
  142. cout.width(2);
  143. cout<<dodawanie_macierzy[i][j];
  144. }
  145. cout<< " |"<<endl;
  146. cout<<endl;
  147. }
  148. }
  149. else
  150. {
  151. cout<<"Podane macierze musza miec taki sam rozmiar";
  152. }
  153.  
  154.  
  155. }
  156.  
  157. void mnozenie()
  158. {
  159. float mnozenie_macierzy[A.y][B.x];
  160. if(A.x==B.y)
  161. {
  162. cout<<"Iloczyn macierzy: "<<endl;
  163. for(int i=0;i<A.x;i++)
  164. {
  165. cout << "|";
  166. for(int j=0;j<B.y;j++)
  167. {
  168. for(int t=0;t<=B.x;t++)
  169. mnozenie_macierzy[i][j]+= A.wartosc[i][t]*B.wartosc[t][j];
  170. cout.width(4);
  171. cout<<mnozenie_macierzy[i][j];
  172. }
  173. cout<< " |"<<endl;
  174. cout<<endl;
  175. }
  176. }
  177. else
  178. {
  179. cout<<"Liczba kolumn MACIERZY A musi byc rowna liczbie wierszy MACIERZY B";
  180. }
  181. }
  182.  
  183.  
  184.  
  185. double wyznacznik(macierz m)
  186. {
  187. if(m.y==1)
  188. return m.wartosc[0][0];
  189. else if(m.y==2)
  190. return m.wartosc[0][0]*m.wartosc[1][1]-m.wartosc[0][1]*m.wartosc[1][0];
  191. else if(m.y==3)
  192. 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];
  193. }
  194.  
  195. void wyznacznik_menu2()
  196. {
  197. int w;
  198.  
  199. cout<<"1.Macierz A"<<endl;
  200. cout<<"2.Macierz B"<<endl;
  201. cout<<"3.Macierz C"<<endl;
  202. cin>>w;
  203.  
  204. switch(w)
  205. {
  206. case 1:
  207. cout<<"Wyznacznik macierzy A ="<<wyznacznik(A);
  208. break;
  209.  
  210. case 2:
  211. cout<<"Wyznacznik macierzy B ="<<wyznacznik(B);
  212. break;
  213.  
  214. case 3:
  215. cout<<"Wyznacznik macierzy C ="<<wyznacznik(C);
  216. break;
  217. }
  218. }
  219.  
  220.  
  221. void odwrotnosc_macierzy(double macierze[10][10], double macierz_odwrocona[3][3],double wyznacznik){
  222. for(int i=0;i<3;i++){
  223. for(int j=0;j<3;j++){
  224. 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;
  225. }
  226. }
  227. }
  228.  
  229. double odwrotna[3][3];
  230.  
  231.  
  232. int main()
  233. {
  234. for(;;)
  235. {
  236. cout<<endl;
  237. cout<<"MENU"<<endl;
  238. cout<<"1.WCZYTYWANIE MACIERZY"<<endl;
  239. cout<<"2.WYPISYWANIE MACIERZY"<<endl;
  240. cout<<"3.DODAWANIE MACIERZY"<<endl;
  241. cout<<"4.MNOZENIE MACIERZY"<<endl;
  242. cout<<"5.LICZENIE WYZNACZNIKA MACIERZY(3x3)"<<endl;
  243. cout<<"6.WYZNACZANIE MACIERZY ODWROTNEJ"<<endl;
  244. cout<<"7.ROZWIAZYWANIE ROWNANIA - AX+B=C"<<endl;
  245. cout<<"8.ZAKONCZ PROGRAM"<<endl;
  246.  
  247. cout<<"Wybierz nr opcji: ";
  248. cin>>wybor;
  249. switch(wybor)
  250. {
  251. case '1':
  252. system("cls");
  253. wczytaj();
  254. break;
  255. case '2':
  256. system("cls");
  257. wypisz();
  258. break;
  259. case '3':
  260. system("cls");
  261. dodawanie();
  262. break;
  263. case '4':
  264. system("cls");
  265. mnozenie();
  266. break;
  267. case '5':
  268. system("cls");
  269. wyznacznik_menu2();
  270. break;
  271. case '6':
  272. system("cls");
  273. odwrotnosc_macierzy(A.wartosc, odwrotna, wyznacznik(A));
  274. for(int i=0;i<3;i++)
  275. {
  276. for(int y=0;y<3;y++)
  277. {
  278. cout<<odwrotna[i][y]<<" ";
  279. }
  280. cout<<endl;
  281. }
  282. break;
  283. case '7':
  284. system("cls");
  285.  
  286. break;
  287. case '8':
  288. system("cls");
  289. exit(0);
  290. break;
  291.  
  292. }
  293. }
  294.  
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement