Advertisement
candrei98

Untitled

Jan 15th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.05 KB | None | 0 0
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <cstdlib>
  5. #include <stdbool.h>
  6. #include <math.h>
  7. #define MAX 10
  8.  
  9. #pragma warning (disable:4996)
  10.  
  11. HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  12. COORD CursorPosition;
  13.  
  14. void intersectie(int A[10], int B[10], int n, int m);
  15. void reuniune(int A[10], int B[10], int n, int m, int nr);
  16. void diferenta(int A[10], int B[10], int n, int m);
  17. void diferenta_simetrica(int A[10], int B[10], int n, int m);
  18. void p1();
  19. bool verificare_numere_prime(int n);
  20. void p2();
  21. void p3();
  22. void p4();
  23. bool isPrime(int n);
  24. void printPrime(int n);
  25. void p5();
  26. void p6();
  27. void tab_imult(int n);
  28. void tab_adunare(int n);
  29. void elem_nil(int n, int v[1000]);
  30. void elem_invers(int n, int v[1000]);
  31. void div_zero(int n, int v[1000]);
  32. float mod(struct complex t1);
  33. struct complex product(struct complex t1, struct complex t2);
  34. struct complex sum(struct complex t1, struct complex t2);
  35. void display(struct complex c);
  36. void read(struct complex *t);
  37. struct complex;
  38. void p7();
  39. void readArray(int a[MAX][MAX], int m);
  40. void printArray(int a[MAX][MAX], int m);
  41. void addArray(int a[MAX][MAX], int b[MAX][MAX], int c[MAX][MAX], int m);
  42. void MultiplyArray(int a[MAX][MAX], int b[MAX][MAX], int c[MAX][MAX], int m);
  43. int UrnaArray(int A[MAX][MAX], int m);
  44. void transpusa(int A[MAX][MAX], int T[MAX][MAX], int m);
  45. int transpusa_check(int A[MAX][MAX], int T[MAX][MAX], int m, int p);
  46. void p10();
  47. int det(int A[100][100], int n);
  48. double determinantOfMatrix(double mat[3][3]);
  49. void findSolution(double coeff[3][4]);
  50. void p11();
  51.  
  52.  
  53. void main() {
  54.  
  55. int n;
  56.  
  57. printf("Alege problema:\n");
  58. printf("1.Problema 1;\n");
  59. printf("2.Problema 2;\n");
  60. printf("3.Problema 3;\n");
  61. printf("4.Problema 4;\n");
  62. printf("5.Problema 5;\n");
  63. printf("6.Problema 6;\n");
  64. printf("7.Problema 9;\n");
  65. printf("8.Problema 10;\n");
  66. printf("9.Problema 11;\n");
  67. scanf("%d", &n);
  68.  
  69. switch (n) {
  70. case 1:system("cls"); p1(); break;
  71. case 2:system("cls"); p2(); break;
  72. case 3:system("cls"); p3(); break;
  73. case 4:system("cls"); p4(); break;
  74. case 5:system("cls"); p5(); break;
  75. case 6:system("cls"); p6(); break;
  76. case 7:system("cls"); p7(); break;
  77. case 8:system("cls"); p10(); break;
  78. case 9:system("cls"); p11(); break;
  79. default:break;
  80. }
  81.  
  82. _getch();
  83. }
  84.  
  85. void intersectie(int A[10], int B[10], int n, int m) {
  86.  
  87. int M[20], N[20], g, i, j, k, e, ok;
  88. bool validare;
  89. validare = false;
  90. ok = 0;
  91. i = 0;
  92. e = 1;
  93. g = 1;
  94. if (n > m) {
  95. for (j = 1; j <= n; j++) {
  96. for (k = 1; k <= m; k++) {
  97. if (A[j] == B[k]) { ok++; }
  98. }
  99. if (ok > 0) {
  100. M[e] = A[j];
  101. e++;
  102. ok = 0;
  103. }
  104. }
  105. i++;
  106. }
  107. else {
  108. for (k = 1; k <= m; k++) {
  109. for (j = 1; j <= n; j++) {
  110. if (B[k] == A[j]) { ok++; }
  111. }
  112. if (ok > 0) {
  113. M[e] = B[k];
  114. e++;
  115. ok = 0;
  116. }
  117. }
  118. i++;
  119. }
  120. for (i = 1; i < e; i++) {
  121. for (j = 1; j <= g; j++) {
  122. if (M[i] != N[j]) { validare = true; }
  123. else {
  124. validare = false;
  125. break;
  126. }
  127. }
  128. if (validare == true) {
  129. N[g] = M[i];
  130. g++;
  131. validare = false;
  132. }
  133. }
  134. printf("Intersectia multimilor A si B este: I = { ");
  135. for (i = 1; i < g; i++) {
  136. printf("%d ", N[i]);
  137. }
  138. printf("}\n");
  139. }
  140.  
  141. void reuniune(int A[10], int B[10], int n, int m, int nr) {
  142.  
  143. int M[20], N[20], i, j, e, k, ok, g;
  144. bool verificare;
  145. verificare = false;
  146. g = 1;
  147. ok = 0;
  148. e = 1;
  149. for (i = 1; i <= n; i++) {
  150. for (j = 1; j <= e; j++) {
  151. if (A[i] != M[j]) { verificare = true; }
  152. else {
  153. verificare = false;
  154. break;
  155. }
  156. }
  157. if (verificare == true) {
  158. M[e] = A[i];
  159. e++;
  160. }
  161. verificare = false;
  162. }
  163. for (k = 1; k <= m; k++) {
  164. for (j = 1; j < e; j++) {
  165. if (B[k] == M[j]) {
  166. ok++;
  167. }
  168. }
  169. if (ok == 0) {
  170. M[e] = B[k];
  171. e++;
  172. }
  173. ok = 0;
  174. }
  175. for (i = 1; i < e; i++) {
  176. for (j = 1; j <= g; j++) {
  177. if (M[i] != N[j]) {
  178. verificare = true;
  179. }
  180. else {
  181. verificare = false;
  182. break;
  183. }
  184. }
  185. if (verificare == true) {
  186. N[g] = M[i];
  187. g++;
  188. }
  189. verificare = false;
  190.  
  191. }
  192. if (nr == 0) {
  193. printf("Reuniunea multimilor A si B este: R={ ");
  194. for (i = 1; i < e; i++) {
  195. printf("%d ", M[i]);
  196. }
  197. printf("}\n");
  198. }
  199. else if (nr == 1) {
  200. printf("Diferenta simetrica a multimilor A si B este multimea: { ");
  201. for (i = 1; i < e; i++) {
  202. printf("%d ", M[i]);
  203. }
  204. printf("}\n");
  205. }
  206. }
  207.  
  208. void diferenta(int A[10], int B[10], int n, int m) {
  209.  
  210. int M[10], i, j, e, ok;
  211. e = 1;
  212. ok = 0;
  213. for (i = 1; i <= n; i++) {
  214. for (j = 1; j <= m; j++) {
  215. if (A[i] == B[j]) { ok++; }
  216. }
  217. if (ok == 0) {
  218. M[e] = A[i];
  219. e++;
  220. }
  221. ok = 0;
  222. }
  223.  
  224. for (i = 1; i < e; i++) {
  225. printf("%d ", M[i]);
  226. }
  227.  
  228. }
  229.  
  230. void diferenta_simetrica(int A[10], int B[10], int n, int m) {
  231.  
  232. int M[10], N[10], i, j, g, e, ok, oky;
  233. e = 1;
  234. g = 1;
  235. ok = 0;
  236. oky = 0;
  237. for (i = 1; i <= n; i++) {
  238. for (j = 1; j <= m; j++) {
  239. if (A[i] == B[j]) { ok++; }
  240. }
  241. if (ok == 0) {
  242. M[e] = A[i];
  243. e++;
  244. }
  245. ok = 0;
  246. }
  247. for (j = 1; j <= m; j++) {
  248. for (i = 1; i <= n; i++) {
  249. if (B[j] == A[i]) { oky++; }
  250. }
  251. if (oky == 0) {
  252. N[g] = B[j];
  253. g++;
  254. }
  255. oky = 0;
  256. }
  257. e--;
  258. g--;
  259. reuniune(N, M, g, e, 1);
  260. }
  261.  
  262. void p1() {
  263.  
  264. int A[10], B[10], i, j, m, n;
  265.  
  266. printf("Introdu marimea multimi A: ");
  267.  
  268. scanf("%d", &n);
  269.  
  270. while ((n > 10) || (n < 0)) {
  271. if (n > 10) {
  272. printf("Multimea nu poate avea mai mult de 10 elemente!\nMarime: ");
  273. scanf("%d", &n);
  274. }
  275. else {
  276. printf("Nu se poate introduce o valoare mai mica ca 0!\nMarime: ");
  277. scanf("%d", &n);
  278. }
  279. }
  280.  
  281. printf("\n Multimea A poate avea un numar de %d elemente, introdu pe rand elementele multimi.\n", n);
  282.  
  283. for (i = 1; i <= n; i++) {
  284. scanf("%d", &A[i]);
  285. }
  286.  
  287. printf("Introdu marimea multimi B: ");
  288. scanf("%d", &m);
  289.  
  290. while (m > 10 || m < 0) {
  291. if (m > 10) {
  292. printf("Multimea nu poate avea mai mult de 10 elemente!\n\nMarime: ");
  293. scanf("%d", &m);
  294. }
  295. else {
  296. printf("Nu se poate introduce o valoare mai mica ca 0!\n\nMarime: ");
  297. scanf("%d", &m);
  298. }
  299. }
  300.  
  301. printf("Multimea B introdu pe rand elementele multimi.\n", m);
  302.  
  303. for (j = 1; j <= m; j++) {
  304. scanf("%d", &B[j]);
  305. }
  306.  
  307. system("cls");
  308.  
  309. printf("A={ ");
  310.  
  311. for (i = 1; i <= n; i++) {
  312. printf("%d ", A[i]);
  313. }
  314.  
  315. printf("}");
  316. printf("\n\n");
  317. printf("B={ ");
  318.  
  319. for (j = 1; j <= m; j++) {
  320. printf("%d ", B[j]);
  321. }
  322.  
  323. printf("}");
  324. printf("\n\n");
  325.  
  326. intersectie(A, B, n, m);
  327. printf("\n\n");
  328.  
  329. reuniune(A, B, n, m, 0);
  330. printf("\n\n");
  331.  
  332. printf("Diferenta intre multimile A si B este: \nA - B = { ");
  333.  
  334. diferenta(A, B, n, m);
  335.  
  336. printf("}");
  337. printf("\n");
  338.  
  339. printf("B - A = { ");
  340.  
  341. diferenta(B, A, m, n);
  342.  
  343. printf("}");
  344. printf("\n\n");
  345.  
  346. diferenta_simetrica(A, B, n, m);
  347.  
  348. _getch();
  349.  
  350. }
  351.  
  352. bool verificare_numere_prime(int n)
  353. {
  354. int var = 0;
  355.  
  356. for (int i = 1; i <= n; i++)
  357. {
  358. if (n % i == 0) var++;
  359. }
  360. if (var <= 2)
  361. {
  362. return true;
  363. }
  364. else
  365. return false;
  366. }
  367.  
  368. void p2() {
  369.  
  370. unsigned int numar_div_total = 0;
  371. unsigned int m, p, q;
  372. unsigned int r;
  373.  
  374. printf("Introduceti valoarea parametrului M = ");
  375. scanf("%d", &m);
  376. while (true)
  377. {
  378. bool verificare_prim_p;
  379. printf("Introdu valoarea lui {P} :");
  380. scanf("%d", &p);
  381. verificare_prim_p = verificare_numere_prime(p);
  382. if (verificare_prim_p == true)
  383. {
  384. printf("Numarul este prim! 0\n");
  385. break;
  386. }
  387. else
  388. {
  389. printf("Numarul nu este prim !\n");
  390. }
  391. }
  392. while (true)
  393. {
  394. bool verificare_prim_q;
  395. printf("Introdu valoarea lui {Q} :");
  396. scanf("%d", &q);
  397. verificare_prim_q = verificare_numere_prime(q);
  398. if (verificare_prim_q == true)
  399. {
  400. printf("Numarul este prim! 0\n");
  401. break;
  402. }
  403. else
  404. {
  405. printf("Numarul nu este prim !\n");
  406. }
  407. }
  408. while (true)
  409. {
  410. bool verificare_prim_r;
  411. printf("Introdu valoarea lui {R} :");
  412. scanf("%d", &r);
  413. verificare_prim_r = verificare_numere_prime(r);
  414. if (verificare_prim_r == true)
  415. {
  416. printf("Numarul este prim! 0\n");
  417. break;
  418. }
  419. else
  420. {
  421. printf("Numarul nu este prim !\n");
  422. }
  423. }
  424.  
  425.  
  426. for (int i = m; i >= 1; i--)
  427. {
  428. if ((i % q == 0) || (i % r == 0) || (i % p == 0))
  429. {
  430. numar_div_total++;
  431. }
  432. }
  433.  
  434. printf("\nNumerele divizibile cu p,q,r sunt : %d\n", numar_div_total);
  435.  
  436. _getch();
  437. }
  438.  
  439. void p3() {
  440.  
  441. int a, b, cmmmc, rest;
  442. int x, y;
  443.  
  444. printf("Introduceti primul numar intreg pozitiv\na = ");
  445. scanf("%d", &a);
  446.  
  447. while (a < 1) {
  448.  
  449. printf("\nReintroduceti a = ");
  450.  
  451. scanf("%d", &a);
  452. }
  453.  
  454. printf("\nIntroduceti cel de-al doilea numar intreg pozitiv\nb = ");
  455. scanf("%d", &b);
  456.  
  457. while (b < 1) {
  458. printf("\nReintroduceti b = ");
  459. scanf("%d", &b);
  460. }
  461.  
  462. x = a;
  463. y = b;
  464.  
  465. while (b != 0) {
  466. rest = a % b;
  467. a = b;
  468. b = rest;
  469. }
  470.  
  471. printf("\nCmmdc = %d ", a);
  472.  
  473. cmmmc = (x*y) / a;
  474.  
  475. printf("\nCmmmc = %d ", cmmmc);
  476.  
  477. _getch();
  478. }
  479.  
  480. bool isPrime(int n)
  481. {
  482.  
  483. if (n <= 1)
  484. return false;
  485.  
  486.  
  487. for (int i = 2; i < n; i++)
  488. if (n % i == 0)
  489. return false;
  490.  
  491. return true;
  492. }
  493.  
  494. void printPrime(int n)
  495. {
  496. for (int i = 2; i <= n; i++) {
  497. if (isPrime(i))
  498. printf("%d ", i);
  499. }
  500. }
  501.  
  502. void p4() {
  503.  
  504. int n, a[100], i = 0, j, k = 0, count = 0, p = 0;
  505. int sn, v[100], s = 0, count2 = 0, var_check = 0;
  506. int vector[100], loop, kp = 3;
  507. int c;
  508.  
  509.  
  510. printf("Introdu numarul :");
  511. scanf("%d", &n);
  512.  
  513. for (i = 1; i <= n; i++)
  514. {
  515. if (n%i == 0)
  516. {
  517. a[p++] = i;
  518. count++;
  519. }
  520. }
  521. for (i = 2; i < n; i++)
  522. {
  523. if (n%i == 0)
  524. k++;
  525. if (n == 1)
  526. k++;
  527. }
  528.  
  529. if (k == 0)
  530. printf("\nNumarul (%d) este prim! \n", n);
  531.  
  532. else
  533. printf("\nNumarul (%d) nu este prim!\n", n);
  534.  
  535. printf("\n");
  536. printf("Divizorii lui %d sunt {", n);
  537. for (i = 0; i < count; i++)
  538. printf("%d,", a[i]);
  539. printf("}");
  540.  
  541. printf("\n");
  542. printf("\n");
  543. printf("\n");
  544. printf("\n");
  545. printf("\n");
  546.  
  547.  
  548.  
  549. printf("Tabela operatiei ^\n");
  550. printf("\n");
  551. printf("\n");
  552. printf("^");
  553. for (i = 0; i < count; i++)
  554.  
  555. printf("\t%d", a[i]);
  556. printf("\n__________________________________________________________________________________");
  557.  
  558.  
  559. for (i = 0; i < count; i++)
  560. {
  561. printf("\n%d\t", a[i]);
  562.  
  563. for (j = 0; j < count; j++)
  564. {
  565. if (a[i] < a[j])
  566. printf("%d\t", a[i]);
  567. else
  568. printf("%d\t", a[j]);
  569. }
  570. printf("\n");
  571. }
  572.  
  573. printf("\n");
  574. printf("\n");
  575. printf("\n");
  576. printf("\n");
  577. printf("\n");
  578.  
  579.  
  580.  
  581. printf("Tabela operatiei V\n");
  582. printf("\n");
  583. printf("\n");
  584. printf("V");
  585. for (i = 0; i < count; i++)
  586.  
  587. printf("\t%d", a[i]);
  588. printf("\n__________________________________________________________________________________");
  589.  
  590.  
  591. for (i = 0; i < count; i++)
  592. {
  593. printf("\n%d\t", a[i]);
  594.  
  595. for (j = 0; j < count; j++)
  596. {
  597. if (a[i] > a[j])
  598. printf("%d\t", a[i]);
  599. else
  600. printf("%d\t", a[j]);
  601. }
  602. printf("\n");
  603. }
  604.  
  605. printf("\n");
  606. printf("\n");
  607. printf("\n");
  608. printf("\n");
  609. printf("\n");
  610.  
  611. printf("Decompunerea in factorii primi a numarului (%d) este :", n);
  612.  
  613. sn = n;
  614. for (i = 2; i <= sn; i++)
  615. {
  616. if (sn%i == 0)
  617. {
  618. v[s++] = i;
  619. sn /= i;
  620. count2++;
  621. i--;
  622. }
  623. }
  624.  
  625. for (i = 0; i < count2; i++)
  626. printf("%d*", v[i]);
  627.  
  628. for (i = 0; i <= count2; i++)
  629. {
  630. for (int ii = i + 1; ii <= count2; ii++)
  631. {
  632. if (v[i] == v[ii])
  633. ++var_check;
  634. }
  635. }
  636. printf("\n");
  637. if (var_check == 0)
  638. printf("\nNumarul este liber de patrate !\n");
  639. else
  640. printf("\nNumarul nu este liber de patrate !\n");
  641. printf("Prim{");
  642. printPrime(n);
  643. printf("}");
  644.  
  645. }
  646.  
  647. void p5() {
  648.  
  649. int a[50], i = 0, count = 0, k = 0, n;
  650.  
  651. printf("Introdu numarul ");
  652. scanf("%d", &n);
  653.  
  654. for (i = 1; i <= n; i++) {
  655. if (n%i == 0) {
  656. a[k++] = i;
  657. count++;
  658. }
  659. if (n == 2) {
  660. a[k++] = i;
  661. count++;
  662. }
  663. }
  664. if (count == 2) {
  665. printf("\nNumarul (%d) este prim\n", n);
  666. printf("\nDivizorii numarului %d sunt :{", n);
  667. for (i = 1; i < count; i++)
  668. printf("%d ", a[i]);
  669. }
  670. else
  671. if (n > 2) {
  672. printf("\nNumarul (%d) este compus\n", n);
  673. printf("\nDivizorii numarului %d sunt :{", n);
  674.  
  675. for (i = 1; i < count; i++)
  676. printf("%d ", a[i]);
  677. }
  678.  
  679. printf("}");
  680. printf("\n");
  681.  
  682. _getch();
  683.  
  684.  
  685. }
  686.  
  687. void p6() {
  688.  
  689. int n, v[1000];
  690.  
  691. printf("Introdu dimensiunea :");
  692.  
  693. scanf_s("%d", &n);
  694. printf("\n");
  695.  
  696. elem_nil(n, v);
  697.  
  698. div_zero(n, v);
  699.  
  700. elem_invers(n, v);
  701.  
  702. printf("\n\n");
  703.  
  704. tab_imult(n);
  705.  
  706. printf("\n\n");
  707.  
  708. tab_adunare(n);
  709.  
  710. _getch();
  711. }
  712.  
  713. void tab_imult(int n)
  714. {
  715.  
  716. printf("Tabela inmultiri in Z%d:\n\n", n);
  717.  
  718. printf("* ");
  719. for (int i = 0; i < n; i++)
  720. {
  721. printf("%3d ", i);
  722. }
  723. printf("\n\n");
  724. for (int i = 0; i < n; i++)
  725. {
  726. printf("%d ", i);
  727. for (int j = 0; j < n; j++)
  728. {
  729. int a;
  730. a = i * j;
  731. if (a < n)
  732. printf("%3d ", a);
  733. else
  734. {
  735. int z;
  736. z = a % n;
  737. printf("%3d ", z);
  738. }
  739. }
  740. printf("\n");
  741. }
  742.  
  743. }
  744.  
  745. void tab_adunare(int n)
  746. {
  747.  
  748. printf("Tabela adunari in Z%d:\n", n);
  749. printf("\n");
  750. printf(" + ");
  751. for (int i = 0; i < n; i++)
  752. {
  753. printf("%3d ", i);
  754. }
  755. printf("\n\n");
  756. for (int i = 0; i < n; i++)
  757. {
  758. printf("%3d ", i);
  759. for (int j = 0; j < n; j++)
  760. {
  761. int a;
  762. a = i + j;
  763. if (a < n)
  764. printf("%3d ", a);
  765. else
  766. {
  767. int z;
  768. z = a % n;
  769. printf("%3d ", z);
  770. }
  771. }
  772.  
  773. printf("\n");
  774. }
  775.  
  776. }
  777.  
  778. void elem_nil(int n, int v[1000])
  779. {
  780.  
  781. long long int produs;
  782. int power = 2, k = 0;
  783. int number = 0;
  784.  
  785. while (number < n)
  786. {
  787.  
  788. produs = pow(number, power);
  789. if (produs%n == 0)
  790. {
  791. v[k++] = number;
  792. ++number;
  793. power = 2;
  794. produs = 0;
  795. }
  796. else
  797. if (power == 10)
  798. {
  799. ++number;
  800. power = 2;
  801. }
  802. ++power;
  803. }
  804. printf("\nAfisarea elementelor nilpotente :");
  805. for (int i = 0; i < k; i++)
  806. printf("%d ", v[i]);
  807.  
  808. }
  809.  
  810. void elem_invers(int n, int v[1000])
  811. {
  812.  
  813. int i = 2, j = 2, k = 1;
  814. long long int produs;
  815. v[0] = 1;
  816.  
  817.  
  818.  
  819. for (i = 2; i < n; i++)
  820. {
  821.  
  822. for (j = 2; j < n; j++)
  823. {
  824. produs = (i*j) % n;
  825. if (produs == 1)
  826. {
  827. v[k++] = i;
  828. }
  829. }
  830. }
  831.  
  832.  
  833. for (i = 0; i < k; i++)
  834. {
  835. for (j = i + 1; j < k; )
  836. {
  837. if (v[j] == v[i])
  838. {
  839. for (int p = j; p < k; p++)
  840. v[p] = v[p + 1];
  841. k--;
  842. }
  843. else
  844. j++;
  845. }
  846. }
  847. printf("\nElementele inversabile sunt :");
  848. for (i = 0; i < k; i++)
  849. printf("%d ", v[i]);
  850.  
  851. }
  852.  
  853. void div_zero(int n, int v[1000])
  854. {
  855. int k = 0, i = 0, j = 0;
  856. long long int produs = 0;
  857. for (i = n - 1; i > 0; i--)
  858. {
  859. for (j = n - 1; j > 0; j--)
  860. {
  861. produs = i * j;
  862. if (produs%n == 0)
  863. {
  864.  
  865. v[k++] = j;
  866.  
  867.  
  868. }
  869.  
  870. }
  871. }
  872.  
  873. for (i = 0; i < k; i++)
  874. {
  875. for (j = i + 1; j < k; )
  876. {
  877. if (v[j] == v[i])
  878. {
  879. for (int p = j; p < k; p++)
  880. {
  881. v[p] = v[p + 1];
  882. }
  883. k--;
  884. }
  885. else
  886. {
  887. j++;
  888. }
  889. }
  890. }
  891.  
  892. printf("\n");
  893. printf("\nDivizorii lui zero sunt :");
  894. for (i = 0; i < k; i++)
  895. printf("%d ", v[i]);
  896. printf("\n");
  897.  
  898. }
  899.  
  900. struct complex {
  901. float real;
  902. float imag;
  903. };
  904.  
  905. void read(struct complex *t) {
  906. printf("\nIntrodu valoriile :\n");
  907. printf("Real : ");
  908. scanf("%f", &t->real);
  909. printf("Imag : ");
  910. scanf("%f", &t->imag);
  911. }
  912.  
  913. void display(struct complex c) {
  914. printf("\n%0.2f + %0.2f i", c.real, c.imag);
  915. }
  916.  
  917. struct complex sum(struct complex t1, struct complex t2) {
  918. struct complex t;
  919. t.real = t1.real + t2.real;
  920. t.imag = t1.imag + t2.imag;
  921. return t;
  922. }
  923.  
  924. struct complex product(struct complex t1, struct complex t2) {
  925. struct complex t;
  926. t.real = t1.real * t2.real - t1.imag * t2.imag;
  927. t.imag = t1.real * t2.imag + t1.imag * t2.real;
  928. return t;
  929. }
  930.  
  931. float mod(struct complex t1) {
  932.  
  933. float t;
  934. t = sqrt(pow(t1.real, 2) + pow(t1.imag, 2));
  935.  
  936. return t;
  937.  
  938. }
  939.  
  940. void p7() {
  941.  
  942. struct complex c1, c2, c3, c4;
  943.  
  944. printf("\nIntrodu Z1 : \n");
  945. read(&c1);
  946.  
  947. printf("\nIntrodu Z2 : \n");
  948. read(&c2);
  949.  
  950. system("cls");
  951.  
  952. printf("\n\nNumarul complex Z1 : ");
  953. display(c1);
  954.  
  955. printf("\n\nNumarul complex Z2 : ");
  956. display(c2);
  957.  
  958. c3 = sum(c1, c2);
  959.  
  960. printf("\n\nAdunarea = \n");
  961. display(c3);
  962.  
  963. printf("'\n");
  964.  
  965. c4 = product(c1, c2);
  966.  
  967. printf("\nProdusul = \n");
  968. display(c4);
  969.  
  970. printf("\n\nModulul \n");
  971. printf("\n|Z1|=|%.1f + %.1fi |=>Z1 => %.2f", c1.real, c1.imag, mod(c1));
  972.  
  973. printf("\n");
  974. printf("\n|Z2|=|%.1f + %.1fi |=>Z2 = %.2f", c2.real, c2.imag, mod(c2));
  975.  
  976. }
  977.  
  978. void readArray(int a[MAX][MAX], int m)
  979. {
  980. int i, j;
  981. for (i = 0; i < m; i++)
  982. {
  983. for (j = 0; j < m; j++)
  984. {
  985.  
  986. printf("A[%d][%d]= :", i, j);
  987. scanf("%d", &a[i][j]);
  988.  
  989. }
  990. }
  991.  
  992. }
  993.  
  994. void printArray(int a[MAX][MAX], int m)
  995. {
  996. int i, j;
  997. for (i = 0; i < m; i++)
  998. {
  999. for (j = 0; j < m; j++)
  1000. {
  1001. printf(" %d ", a[i][j]);
  1002. }
  1003. printf("\n");
  1004. }
  1005.  
  1006.  
  1007. }
  1008.  
  1009. void addArray(int a[MAX][MAX], int b[MAX][MAX], int c[MAX][MAX], int m)
  1010. {
  1011. int i, j;
  1012. for (i = 0; i < m; i++)
  1013. {
  1014. for (j = 0; j < m; j++)
  1015. {
  1016. c[i][j] = a[i][j] + b[i][j];
  1017. }
  1018. printf("\n");
  1019. }
  1020.  
  1021. }
  1022.  
  1023. void MultiplyArray(int a[MAX][MAX], int b[MAX][MAX], int c[MAX][MAX], int m)
  1024. {
  1025. int i, j, k;
  1026.  
  1027. for (i = 0; i < m; i++)
  1028. {
  1029. for (j = 0; j < m; j++)
  1030. {
  1031. c[i][j] = 0;
  1032. for (k = 0; k < m; k++)
  1033. {
  1034. c[i][j] += a[i][k] * b[k][j];
  1035. }
  1036. }
  1037. printf("\n");
  1038. }
  1039.  
  1040. }
  1041.  
  1042. int UrnaArray(int A[MAX][MAX], int m)
  1043. {
  1044. int i, j, S = 0;
  1045. for (i = 0; i < m; i++)
  1046. {
  1047. for (j = 0; j < m; j++)
  1048. {
  1049. if (i == j)
  1050. {
  1051. S += A[i][j];
  1052. }
  1053. }
  1054.  
  1055. }
  1056.  
  1057. return S;
  1058. }
  1059.  
  1060. void transpusa(int A[MAX][MAX], int T[MAX][MAX], int m)
  1061. {
  1062.  
  1063. int i, j;
  1064. for (i = 0; i < m; i++)
  1065. {
  1066. for (j = 0; j < m; j++)
  1067. {
  1068. T[i][j] = A[j][i];
  1069. }
  1070. }
  1071.  
  1072. }
  1073.  
  1074. int transpusa_check(int A[MAX][MAX], int T[MAX][MAX], int m, int p)
  1075. {
  1076.  
  1077. int i, j;
  1078. p = 0;
  1079. for (i = 0; i < m; i++)
  1080. {
  1081. for (j = 0; j < m; j++)
  1082. {
  1083.  
  1084. if (A[i][j] == T[i][j])
  1085. {
  1086. p++;
  1087. }
  1088.  
  1089. }
  1090. }
  1091. return p;
  1092. }
  1093.  
  1094. void p10() {
  1095.  
  1096. int A[MAX][MAX], B[MAX][MAX];
  1097. int ADD[MAX][MAX], k[MAX][MAX];
  1098. int T[MAX][MAX];
  1099.  
  1100. int M, S, P = 0, X;
  1101.  
  1102. printf("\nIntrodu marimea matricei :");
  1103. scanf("%d", &M);
  1104.  
  1105. printf("\nIntrodu elementele matricei A: :\n");
  1106. readArray(A, M);
  1107.  
  1108. printf("\nIntrodu elementele matricei B:\n");
  1109. readArray(B, M);
  1110. addArray(A, B, ADD, M);
  1111.  
  1112. system("cls");
  1113.  
  1114. printf("Matricea A:\n");
  1115. printArray(A, M);
  1116. printf("Matricea B:\n");
  1117. printArray(B, M);
  1118.  
  1119. printf("Aunarea este :");
  1120. printArray(ADD, M);
  1121. MultiplyArray(A, B, k, M);
  1122.  
  1123. printf("Produsul este :\n");
  1124. printArray(k, M);
  1125. S = UrnaArray(A, M);
  1126.  
  1127. printf("\nSuma elementelor de pe diagonala principala este S=%d \n\n", S);
  1128.  
  1129. transpusa(A, T, M);
  1130.  
  1131. printf("Matricea:\n");
  1132. printArray(A, M);
  1133.  
  1134. printf("\nTranspus matricei A :\n");
  1135. printArray(T, M);
  1136.  
  1137. X = transpusa_check(A, T, M, P);
  1138.  
  1139. printf("\n");
  1140.  
  1141. if (X == M * M)
  1142. printf("Matricea este simetrica\n");
  1143. else
  1144.  
  1145. printf("Matricea este antisimetrica\n");
  1146.  
  1147. _getch();
  1148. }
  1149.  
  1150. int det(int A[100][100], int n)
  1151. {
  1152. int Minor[100][100];
  1153. int i, j, k, c1, c2;
  1154. int determinant;
  1155. int c[100];
  1156. int O = 1;
  1157. determinant = 0;
  1158. if (n == 2)
  1159. {
  1160.  
  1161. determinant = A[0][0] * A[1][1] - A[0][1] * A[1][0];
  1162. return determinant;
  1163. }
  1164. else
  1165. {
  1166. for (i = 0; i < n; i++)
  1167. {
  1168. c1 = 0, c2 = 0;
  1169. for (j = 0; j < n; j++)
  1170. {
  1171. for (k = 0; k < n; k++)
  1172. {
  1173. if (j != 0 && k != i)
  1174. {
  1175. Minor[c1][c2] = A[j][k];
  1176. c2++;
  1177. if (c2 > n - 2)
  1178. {
  1179. c1++;
  1180. c2 = 0;
  1181. }
  1182. }
  1183. }
  1184. }
  1185. determinant = determinant + O * (A[0][i] * det(Minor, n - 1));
  1186. O = -1 * O;
  1187. }
  1188. }
  1189. return determinant;
  1190. }
  1191.  
  1192. double determinantOfMatrix(double mat[3][3])
  1193. {
  1194. double ans;
  1195. ans = mat[0][0] * (mat[1][1] * mat[2][2] - mat[2][1] * mat[1][2])
  1196. - mat[0][1] * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0])
  1197. + mat[0][2] * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);
  1198. return ans;
  1199. }
  1200.  
  1201. void findSolution(double coeff[3][4])
  1202. {
  1203.  
  1204. double d[3][3] = {
  1205. { coeff[0][0], coeff[0][1], coeff[0][2] },
  1206. { coeff[1][0], coeff[1][1], coeff[1][2] },
  1207. { coeff[2][0], coeff[2][1], coeff[2][2] },
  1208. };
  1209.  
  1210. double d1[3][3] = {
  1211. { coeff[0][3], coeff[0][1], coeff[0][2] },
  1212. { coeff[1][3], coeff[1][1], coeff[1][2] },
  1213. { coeff[2][3], coeff[2][1], coeff[2][2] },
  1214. };
  1215.  
  1216. double d2[3][3] = {
  1217. { coeff[0][0], coeff[0][3], coeff[0][2] },
  1218. { coeff[1][0], coeff[1][3], coeff[1][2] },
  1219. { coeff[2][0], coeff[2][3], coeff[2][2] },
  1220. };
  1221.  
  1222. double d3[3][3] = {
  1223. { coeff[0][0], coeff[0][1], coeff[0][3] },
  1224. { coeff[1][0], coeff[1][1], coeff[1][3] },
  1225. { coeff[2][0], coeff[2][1], coeff[2][3] },
  1226. };
  1227.  
  1228.  
  1229. double D = determinantOfMatrix(d);
  1230. double D1 = determinantOfMatrix(d1);
  1231. double D2 = determinantOfMatrix(d2);
  1232. double D3 = determinantOfMatrix(d3);
  1233.  
  1234.  
  1235. // Case 1
  1236. if (D != 0) {
  1237. printf("\nMatricea este inversabila!\n");
  1238. double x = D1 / D;
  1239. double y = D2 / D;
  1240. double z = D3 / D;
  1241. printf("Determinatul: %.1lf \n", D);
  1242. printf("DeterminatX : %.1lf \n", D1);
  1243. printf("DeterminatY : %.1lf \n", D2);
  1244. printf("DeterminatZ : %.1lf \n", D3);
  1245.  
  1246. printf("X : %.1lf\n", x);
  1247. printf("Y : %.1lf\n", y);
  1248. printf("Z: %.1lf\n", z);
  1249. }
  1250.  
  1251. else {
  1252.  
  1253. if (D1 == 0 && D2 == 0 && D3 == 0)
  1254. {
  1255. printf("Matricea nu este inversabila!\n");
  1256. printf("Nu se poate rezolva cu metoda Cramer\n");
  1257. }
  1258. else
  1259. {
  1260. if (D1 != 0 || D2 != 0 || D3 != 0)
  1261. printf("Fara solutii\n");
  1262. }
  1263. }
  1264. }
  1265.  
  1266. void p11() {
  1267.  
  1268. double coeff[3][4];
  1269. int A[100][100];
  1270. int i, j, k, n, res;
  1271. printf("Introdu ordinul matricei: ");
  1272. scanf("%d", &n);
  1273. printf("\nIntrodu elementele matricei: \n");
  1274. for (i = 0; i < n; i++)
  1275. {
  1276. for (j = 0; j < n; j++)
  1277. {
  1278. scanf("%d", &A[i][j]);
  1279. }
  1280. }
  1281. for (i = 0; i < n; i++)
  1282. {
  1283. for (j = 0; j < n; j++)
  1284. {
  1285. printf("%5d", A[i][j]);
  1286. }
  1287. printf("\n");
  1288. }
  1289.  
  1290. printf("\nIntrodu ecuatiile de forma urmatoare !\n");
  1291. printf("\nax+by+cz=du\n");
  1292. for (int i = 0; i < 3; i++)
  1293. for (int j = 0; j < 4; j++) {
  1294. printf("M[%d][%d] =", i, j);
  1295. scanf("%lf", &coeff[i][j]);
  1296. }
  1297. printf("\n");
  1298. printf("\nMatricea introdusa !\n");
  1299. printf("\n\n");
  1300. for (int i = 0; i < 3; i++)
  1301. {
  1302. for (int j = 0; j < 3; j++)
  1303. {
  1304. printf("%3.0lf ", coeff[i][j]);
  1305. }
  1306. printf("\n");
  1307. }
  1308. printf("Matricea unitate !\n");
  1309. for (int i = 0, j = 3; i < 3; i++)
  1310. {
  1311. printf("%3.0lf\n", coeff[i][j]);
  1312. }
  1313. findSolution(coeff);
  1314. res = det(A, n);
  1315. printf("Determinantul rezultat din prima introducere este Det = %d", res);
  1316.  
  1317. _getch();
  1318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement