Dr4noel

Recursivitate| Exercitii

May 11th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. //FUNCTII RECURSIVE
  4.  
  5. //FACTORIAL
  6. int Fac(int n) {
  7. if (n == 1)
  8. return 1;
  9. else
  10. return n * Fac(n - 1);
  11. }
  12.  
  13. //CEL MAI MARE DIVIZOR COMUN
  14. int Cmmdc(int a, int b) {
  15. if (a == b)
  16. return a;
  17. else
  18. if (a > b)
  19. return Cmmdc(a - b, b);
  20. else
  21. return Cmmdc(a, b - a);
  22. }
  23.  
  24. //CEL MAI MARE DIVIZOR COMUN EUCLID
  25. int Euclid(int a, int b) {
  26. if (b == 0)
  27. return a;
  28. else
  29. return Euclid(b, a%b);
  30. }
  31.  
  32. //RIDICARE LA PUTERE
  33. int Power(int nr, int power) {
  34. if (power == 1)
  35. return nr;
  36. else
  37. return nr * Power(nr, power - 1);
  38. }
  39.  
  40. //SUMA TUTUROR CIFRELOR UNUI NUMAR
  41. unsigned long long int SumElem(unsigned long long int nr) {
  42. if (nr < 10)
  43. return nr;
  44. else
  45. return nr % 10 + SumElem(nr / 10);
  46. }
  47.  
  48. //MINIMUL
  49.  
  50. int Min(int vector[], int min, int nrElem) {
  51. if (nrElem < 1) {
  52. return min;
  53. }
  54. else
  55. if (min > vector[nrElem - 1])
  56. return Min(vector, vector[nrElem - 1], nrElem - 1);
  57. else
  58. return Min(vector, min, nrElem - 1);
  59. }
  60.  
  61. //Schimba o litera dintr-un string
  62.  
  63. void ChangeString(char string[], char victim, char killer, int characters)
  64. {
  65. if (characters >= 0) {
  66. if (string[characters - 1] == victim)
  67. string[characters - 1] = killer;
  68. ChangeString(string, victim, killer, characters - 1);
  69. }
  70. }
  71.  
  72. //Divide et Impera
  73.  
  74. int divideEtImpera(int v[], int x, int st, int dr)
  75. {
  76. if (st > dr)
  77. return -1;
  78. int mij = (st + dr) / 2;
  79. if (v[mij] == x)
  80. return mij;
  81. if (x < v[mij])
  82. return divideEtImpera(v, x, st, mij - 1);
  83. if (x > v[mij])
  84. return divideEtImpera(v, x, mij + 1, dr);
  85. }
  86.  
  87. //Divid et Impera3
  88.  
  89. int divideEtImperaAt3(int v[], int x, int st, int dr)
  90. {
  91. if (st > dr)
  92. return -1;
  93.  
  94. int firstMid = (st + dr) / 3;
  95.  
  96. int secondMid = (st + dr) * 0.66;
  97.  
  98. if (v[firstMid] == x)
  99. return firstMid;
  100.  
  101. if (v[secondMid] == x)
  102. return secondMid;
  103. if (x < v[firstMid])
  104. return divideEtImperaAt3(v, x, st, firstMid - 1);
  105. if (x > v[firstMid] && x < v[secondMid])
  106. return divideEtImperaAt3(v, x, firstMid + 1, secondMid - 1);
  107. if (x > v[secondMid])
  108. return divideEtImperaAt3(v, x, secondMid + 1, dr);
  109. }
  110.  
  111. void main() {
  112. int a = 980, b = 1080, n = 4;
  113. int c = 980, d = 1080;
  114.  
  115. int nr = 2, power = 3;
  116.  
  117. unsigned long long int lung = 11191233;
  118.  
  119. int vector[10] = { 11, 15, 98, 37, 43, 56, 3, 7, 21 };
  120. int min = vector[0];
  121. int nrElem = 9;
  122.  
  123. char string[50] = "Ana are bani de alune si le da pe patru cuie!";
  124. char victim = 'a';
  125. char killer = 'k';
  126. int character = strlen(string);
  127.  
  128. printf("%d! = %d\nCmmdc %d & %d = %d\nEuclid = %d\n", n, Fac(n), a, b, Cmmdc(a, b), Euclid(d,c));
  129.  
  130. printf("%d ^ %d = %d\n", nr, power, Power(nr,power));
  131.  
  132. printf("Suma elementelor numarului %llu este %llu\n", lung,SumElem(lung));
  133.  
  134. printf("Minimul vectorului este : %d\n", Min(vector, min, nrElem));
  135.  
  136. printf("Prop originala : %s\n", string);
  137.  
  138. ChangeString(string, victim, killer, character);
  139.  
  140. printf("Prop modificata : %s ", string);
  141.  
  142. //DIVIDE ET IMPERA && DIVIDE ET IPERA AT 3
  143. int v[10] = { 1,2,3,4,5,6,7,8,9 };
  144. int n = 9;
  145. int st = 0;
  146. int dr = n - 1;
  147. int x = 8;
  148. int ceva= divideEtImpera(v, x, st, dr); // doar schimbi numele fuctiei cu divideEtImperaAt3
  149.  
  150. if (ceva >= 0)
  151. {
  152. printf("S-a gasit!");
  153. }
  154. else {
  155. printf("Nu s-a gasit");
  156. }
  157. _getch();
  158. }
Add Comment
Please, Sign In to add comment