Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.62 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. void afisaretext(int &o)
  4. {
  5. cout<<'\n'<<'\n';
  6. cout<<" ALEGE O OPTIUNE:"<<'\n';
  7. cout<<" 1.Adunarea a doua matrici"<<'\n';
  8. cout<<" 2.Scaderea a doua matrici"<<'\n';
  9. cout<<" 3.Inmultirea unei matrici cu un scalar"<<'\n';
  10. cout<<" 4.Inmultirea a doua matrici"<<'\n';
  11. cout<<" 5.Ridicarea la putere a unei matrici"<<'\n';
  12. cout<<" 6.Calculul determinantului"<<'\n';
  13. cout<<" 7.Transpunerea unei matrici"<<'\n';
  14. cout<<" 8.Inversa unei matrici"<<'\n';
  15. cout<<" 0.Inchidere program"<<'\n'<<'\n';
  16. cout<<" Alegerea dumneavoastra este ";
  17. cin>>o;
  18. cout<<'\n'<<'\n';
  19. }
  20. void citirematrice(int n,int m,int v[105][105])
  21. {
  22. for(int i=1; i<=n; i++)
  23. for(int j=1; j<=m; j++)
  24. {
  25. cout<<"a["<<i<<"]["<<j<<"]=";
  26. cin>>v[i][j];
  27. }
  28. }
  29. void afisarematrice(int n,int m,int v[105][105])
  30. {
  31. cout<<"Matricea este"<<'\n';
  32. for(int i=1; i<=n; i++)
  33. {
  34. for(int j=1; j<=m; j++)
  35. cout<<v[i][j]<<' ';
  36. cout<<'\n';
  37. }
  38. cout<<'\n'<<'\n';
  39. }
  40. void adun(int n,int m,int v1[105][105],int v2[105][105])
  41. {
  42. for(int i=1; i<=n; i++)
  43. for(int j=1; j<=m; j++)
  44. v2[i][j]+=v1[i][j];
  45. }
  46. void adunarematrici()
  47. {
  48. int k,v1[105][105]= {0},v2[105][105]= {0},n,m;
  49. cout<<"Numarul de matrici adunate este ";
  50. cin>>k;
  51. cout<<'\n'<<"numar de linii a matricilor este ";
  52. cin>>n;
  53. cout<<'\n'<<"numar de coloane a matricilor este ";
  54. cin>>m;
  55. cout<<'/n';
  56. for(int i=1; i<=k; i++)
  57. {
  58. cout<<"matricea cu numarul "<<i<<'\n';
  59. citirematrice(n,m,v1);
  60. adun(n,m,v1,v2);
  61. }
  62. afisarematrice(n,m,v2);
  63. }
  64. void scad(int n,int m,int v1[105][105],int v2[105][105])
  65. {
  66. for(int i=1; i<=n; i++)
  67. for(int j=1; j<=m; j++)
  68. v2[i][j]=v2[i][j]-v1[i][j];
  69. }
  70. void scaderematrici()
  71. {
  72. int k,v1[105][105]= {0},v2[105][105]= {0},n,m;
  73. cout<<"Numarul de matrici scazute este ";
  74. cin>>k;
  75. cout<<'\n'<<"numar de linii a matricilor este ";
  76. cin>>n;
  77. cout<<"numar de coloane a matricilor este ";
  78. cin>>m;
  79. cout<<'/n';
  80. cout<<"matricea cu numarul 1"<<'\n';
  81. citirematrice(n,m,v2);
  82. for(int i=2; i<=k; i++)
  83. {
  84. cout<<"matricea cu numarul "<<i<<'\n';
  85. citirematrice(n,m,v1);
  86. scad(n,m,v1,v2);
  87. }
  88. afisarematrice(n,m,v2);
  89. }
  90. void inmultirescalar()
  91. {
  92. int v[105][105]= {0},k,n,m;
  93. cout<<"Scalarul este ";
  94. cin>>k;
  95. cout<<'\n'<<"numar de linii a matricilor este ";
  96. cin>>n;
  97. cout<<"numar de coloane a matricilor este ";
  98. cin>>m;
  99. cout<<'/n'<<"matricea este"<<'\n';
  100. citirematrice(n,m,v);
  101. for(int i=1; i<=n; i++)
  102. for(int j=1; j<=m; j++)
  103. v[i][j]*=k;
  104. afisarematrice(n,m,v);
  105. }
  106. void dublarematrice(int n,int m,int v1[105][105],int v2[105][105])
  107. {
  108. for(int i=1; i<=n; i++)
  109. for(int j=1; j<=m; j++)
  110. v1[i][j]=v2[i][j];
  111. }
  112. void inmultire(int n1,int m1,int n2,int m2,int v1[105][105],int v2[105][105])
  113. {
  114. int x[105][105]= {0};
  115. for(int i=1; i<=n1; i++)
  116. for(int j=1; j<=m2; j++)
  117. for(int k=1; k<=m1; k++)
  118. x[i][j]+=v1[i][k]*v2[k][j];
  119. dublarematrice(n1,m2,v1,x);
  120. }
  121. int inmultirematrici()
  122. {
  123. int k,v1[105][105]= {0},v2[105][105]= {0},n1,m1,n2,m2;
  124. cout<<"Numarul de matrici inmultite este ";
  125. cin>>k;
  126. cout<<'\n'<<"numar de linii a matrici 1 este ";
  127. cin>>n1;
  128. cout<<"numar de coloane a matrici 1 este ";
  129. cin>>m1;
  130. cout<<'/n';
  131. cout<<"matricea cu numarul 1"<<'\n';
  132. citirematrice(n1,m1,v1);
  133. for(int i=2; i<=k; i++)
  134. {
  135. cout<<'\n'<<"numar de linii a matrici "<<i<<" este ";
  136. cin>>n2;
  137. cout<<"numar de coloane a matricilor "<<i<<" este ";
  138. cin>>m2;
  139. cout<<'/n';
  140. cout<<"matricea cu numarul "<<i<<'\n';
  141. citirematrice(n2,m2,v2);
  142. if(m1==n2)
  143. {
  144. inmultire(n1,m1,n2,m2,v1,v2);
  145. m1=m2;
  146. }
  147. else
  148. {
  149. cout<<"Nu se poate efectua inmultirea deoarece nu corespunde numarul de linii sau coloane"<<'\n';
  150. return 0;
  151. }
  152. }
  153. cout<<"Matricea obtinuta in urma inmultirilor are "<<n1<<" lini si "<<m1<<" coloane"<<'\n';
  154. afisarematrice(n1,m1,v1);
  155. return 0;
  156. }
  157. void ridicarelaputere()
  158. {
  159. int k,v1[105][105]= {0},v2[105][105]= {0},n,m;
  160. cout<<"Puterea la care ridici matricia este ";
  161. cin>>k;
  162. cout<<'\n'<<"numar de linii a matrici este ";
  163. cin>>n;
  164. cout<<"numar de coloane a matrici este ";
  165. cin>>m;
  166. cout<<'/n';
  167. cout<<"matricea este"<<'\n';
  168. citirematrice(n,m,v2);
  169. dublarematrice(n,m,v1,v2);
  170. for(int i=1; i<k; i++)
  171. inmultire(n,m,n,m,v1,v2);
  172. afisarematrice(n,m,v1);
  173. }
  174. void trans(int &n,int &m,int v[105][105])
  175. {
  176. int x[105][105];
  177. for(int i=1; i<=n; i++)
  178. for(int j=1; j<=m; j++)
  179. x[j][i]=v[i][j];
  180. dublarematrice(m,n,v,x);
  181. int aux=n;
  182. n=m;
  183. m=aux;
  184. }
  185. void transpunere()
  186. {
  187. int v[105][105]= {0},n,m;
  188. cout<<'\n'<<"numar de linii a matrici este ";
  189. cin>>n;
  190. cout<<"numar de coloane a matrici este ";
  191. cin>>m;
  192. cout<<"matricea este"<<'\n';
  193. citirematrice(n,m,v);
  194. trans(n,m,v);
  195. cout<<"Matricea transpusa are "<<n<<" lini si "<<m<<" coloane"<<'\n';
  196. afisarematrice(n,m,v);
  197. }
  198. int cmmdc(int a,int b)
  199. {
  200. if(a*b==0)
  201. return a+b;
  202. while(b!=0)
  203. {
  204. int r=a%b;
  205. a=b;
  206. b=r;
  207. }
  208. return a;
  209. }
  210. int calcdetn(int n,int v[105][105])
  211. {
  212. if(n==1) return v[1][1];
  213. else
  214. {
  215. int det=0;
  216. for(int i=1; i<n; i++)
  217. {
  218. int q=cmmdc(v[n][n],v[i][n]);
  219. for(int j=n; j>=1; j--)
  220. v[i][j]=q/v[i][n]*v[i][j]-q/v[n][n]*v[n][j];
  221. }
  222. afisarematrice(n,n,v);
  223. return det+calcdetn(n-1,v);
  224. }
  225. }
  226. void calculdeterminant()
  227. {
  228. int v[105][105]= {0},n,k=0;
  229. cout<<'\n'<<"numar de linii si coloane a matrici este ";
  230. cin>>n;
  231. cout<<"matricea este"<<'\n';
  232. citirematrice(n,n,v);
  233. k=calcdetn(n,v);
  234. cout<<"Determinantul este "<<k;
  235. }
  236. int main()
  237. {
  238. int o;
  239. do
  240. {
  241. afisaretext(o);
  242. if(o==1) adunarematrici();
  243. if(o==2) scaderematrici();
  244. if(o==3) inmultirescalar();
  245. if(o==4) inmultirematrici();
  246. if(o==5) ridicarelaputere();
  247. if(o==6) calculdeterminant();
  248. if(o==7) transpunere();
  249. //if(o==8) invers
  250. }
  251. while(o!=0);
  252. return 0;
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement