Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. La apel, returnează valoarea celui mai mare divizor comun al celor două numere naturale nenule primite ca parametri:
  2.  
  3. int C1 (int a, int b)
  4. { if(a==b) return a;
  5. else if(a>b) return C1(a-b,b);
  6. else return C1(a,b-a);
  7.  
  8. ------------------------------------------------------
  9. Subprogramul returnează suma elementelor din tabloul v. recursiv
  10.  
  11. int suma (int v[], int n)
  12. {
  13. if (n==0) return 0;
  14. else return v[n-1]+suma(v,n-1);
  15. }
  16. ------------------------------------------------------
  17. Subprogramul returnează suma elementelor din tabloul v care sunt divizibile cu 3.
  18.  
  19. int sum3(int v[], int n)
  20. {
  21. if(n==0) return 0;
  22. else if(v[n-1]%3==0)
  23. return v[n-1]+sum3(v, n-1);
  24. else
  25. return sum3(v, n-1);
  26. }
  27. ------------------------------------------------------
  28. Subprogramul furnizează prin intermediul parametrului s suma elementelor din tabloul x care au valori numere prime.
  29.  
  30. bool prim(int n)
  31. {
  32. if(n == 1 || n == 0)
  33. return false;
  34. if(n % 2 == 0 && n > 2)
  35. return false;
  36. for(int i = 3; i*i <= n; i+=2)
  37. if(n % i == 0)
  38. return false;
  39. return true;
  40. }
  41. void P(int x[], int n, int& s)
  42. {
  43. if(n == 1)
  44. {
  45. s = 0;
  46. if(prim(x[0] == true))
  47. s += x[0];
  48. return;
  49. }
  50. P(x, n - 1, s);
  51. if(prim(x[n - 1]) == true)
  52. s += x[n - 1];
  53. }
  54. ------------------------------------------------------
  55. Să se scrie o funcție C++ recursivă care citește de la tastatură un șir de valori naturale și le afișează în ordine inversă, cu câte un spațiu între ele.
  56.  
  57. void afis()
  58. {
  59. int x;
  60. cin >> x;
  61. if(x != 0 )
  62. afis();
  63. cout << x << " ";
  64. }
  65. -----------------------------------------------------
  66. Să se scrie o funcție C++ recursivă care afișează pe ecran elementele unui vector transmis ca parametru.
  67.  
  68. void afisvec(int v[] , int n)
  69. {
  70. if(n > 0)
  71. {
  72. afisvec( v , n - 1);
  73. cout << v[n-1] << " ";
  74. }
  75. }
  76. -----------------------------------------------------
  77. Să se scrie o funcție C++ recursivă care afișează pe ecran, în ordine inversă, elementele unui vector transmis ca parametru.
  78.  
  79. void afisvec(int v[] , int n)
  80. {
  81. if(n > 0)
  82. {
  83. cout << v[n-1] << " ";
  84. afisvec( v , n - 1);
  85.  
  86. }
  87. }
  88. -----------------------------------------------
  89. Subprogramul returnează numărul de elemente din tablou care sunt multipli ai numărului k şi au ultima cifră egală cu k.
  90.  
  91. int multiplu(int *a,int n,int k)
  92. {
  93. if(n==0) return 0;
  94. else
  95. {
  96. int c=multiplu(a,n-1,k);
  97. if(a[n-1]%k==0 && a[n-1]%10==k)
  98. c++;
  99. return c;
  100. }
  101. }
  102. ----------------------------------------------------
  103. Subprogramul furnizează prin intermediul parametrului mini valoarea minimă din tabloul x, prin intermediul parametrului maxi valoarea maximă din x, iar prin intermediul parametrului sum suma elementelor din tabloul x.
  104.  
  105. void P(int x[], int n, int &mini, int &maxi, int &sum){
  106. if(n == 1)
  107. mini = maxi = sum = x[0];
  108. else
  109. {
  110. P(x , n - 1 , mini ,maxi, sum);
  111. sum += x[n-1];
  112. if(x[n-1] < mini)
  113. mini = x[n-1];
  114. if(x[n-1] > maxi)
  115. maxi = x[n-1];
  116. }
  117. }
  118. --------------------------------------------------------
  119. Se citește un vector cu n elemente, numere naturale. Să se determine suma valorilor elementelor cuprinse între primul și ultimul element par al vectorului, inclusiv acestea.----recursiv
  120.  
  121. #include <iostream>
  122.  
  123. using namespace std;
  124.  
  125. int s(int n, int v[], int i, int j)
  126. {
  127. if(n == i)
  128. {
  129. return v[i];
  130. }
  131. else
  132. {
  133. int x = s(n - 1, v, i, j);
  134. if(n <= j)
  135. return x += v[n];
  136. else
  137. return x;
  138. }
  139. }
  140.  
  141. int main()
  142. {
  143. int n, v[1007], p1 = -1, p2 = -1;
  144. cin >> n;
  145. for(int i = 1; i <= n; i++)
  146. cin >> v[i];
  147.  
  148. for(int i = 1; i <= n; i++)
  149. if(v[i] % 2 == 0)
  150. p2 = i;
  151.  
  152. for(int i = 1; i <= n; i++)
  153. if(v[i] % 2 == 0)
  154. {
  155. p1 = i;
  156. break;
  157. }
  158.  
  159. if(p1 != -1 && p2 != -1)
  160. cout << s(n, v, p1, p2);
  161. else
  162. cout << "NU EXISTA";
  163.  
  164.  
  165.  
  166. return 0;
  167. }
  168. -------------------------------------------------
  169. Afisare recursiva a matricei
  170.  
  171. void Afisare(int A[][nmax+5], int n ,int m , int i , int j)
  172. {
  173. if(i <= n)
  174. {
  175. cout << A[i][j] << " ";
  176. if(j < m)
  177. Afisare(A , n , m , i , j + 1);
  178. else
  179. {
  180. cout << '\n';
  181. Afisare(A , n , m , i + 1 , 1);
  182. }
  183. }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement