Advertisement
candrei98

Untitled

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