LordMirai

Problema pregatire interclasare si sortare

Nov 20th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. //Scrieţi definiţia completă a subprogramului C/C++ modificare, care are doi parametri, v şi n, prin care primeşte un tablou unidimensional
  6. //cu maximum 10000 de numere naturale nenule şi, respectiv, numărul de elemente din tablou.
  7. //Subprogramul rearanjează elementele tabloului astfel încât toate valorile prime să se afle pe primele poziţii
  8. //iar valorile care nu sunt prime, în continuarea celor prime
  9.  
  10. void BubbleSort(int n, int a[])
  11. {
  12. for (int t = 0; t <= n - 1; t++)
  13. {
  14. for (int i = 0; i < n - 1; i++)
  15. {
  16. if (a[i] > a[i + 1]) {
  17. swap(a[i], a[i + 1]);
  18. }
  19. }
  20. }
  21. }
  22.  
  23. bool prim(int n) {
  24. int ct = 0;
  25. cout << "Pentru n = " << n << ",";
  26. for (int i = 1; i <= n; i++) {
  27. if (n % i == 0) {
  28. ct++;
  29. }
  30. }
  31. if (ct == 2) {
  32. //cout << "\nNumarul este prim";
  33. return true;
  34. }
  35. else {
  36. //cout << "\nNumarul nu este prim.";
  37. return false;
  38. }
  39. cout << "\n" << ct;
  40. }
  41.  
  42.  
  43. void ordonare(int a[], int n) {
  44.  
  45. int aux[4000];
  46. int ct = 0;
  47. for (int i = 0; i < n; i++) {
  48. if (prim(a[i])) {
  49. aux[ct] = a[i];
  50. ct++;
  51. }
  52. }
  53. for (int i = 0; i < n; i++) {
  54. if (!prim(a[i])) {
  55. aux[ct] = a[i];
  56. ct++;
  57. }
  58. }
  59. }
  60.  
  61.  
  62. void interclasare(int v1[], int v2[], int lenV1, int lenV2, int vectorInterclasat[])
  63. {
  64. int min = 42, ct = 0, ampus1 = 0, ampus2 = 0;
  65.  
  66. for (int i = 0; i < lenV1 + lenV2; i++)
  67. {
  68. if (ampus1 != lenV1 && ampus2 != lenV2)
  69. {
  70. min = (v1[ampus1] < v2[ampus2]) ? v1[ampus1++] : v2[ampus2++];
  71. }
  72. else if (ampus1 == lenV1 && ampus2 != lenV2)
  73. {
  74. min = v2[ampus2++];
  75. }
  76. else if (ampus1 != lenV1 && ampus2 == lenV2)
  77. {
  78. min = v1[ampus1++];
  79. }
  80. vectorInterclasat[ct++] = min;
  81. }
  82. }
  83.  
  84. int main()
  85. {
  86. int vec1[1000], vec2[1000], lenV1, lenV2, vecRez[2000];
  87. cout << "Lungime vector 1: "; cin >> lenV1;
  88. cout << "\nLungime vector 2: "; cin >> lenV2;
  89. if (lenV1 <= 0 || lenV2 <= 0)
  90. {
  91. cout << "Eroare, lungimea este negativa";
  92. return 1;
  93. }
  94. cout << "\n\nIntroduceti valori pentru vector 1: ";
  95. for (int i = 0; i < lenV1; i++)
  96. {
  97. cin >> vec1[i];
  98. }
  99. cout << "\nIntroduceti valori pentru vector 2:";
  100. for (int i = 0; i < lenV2; i++)
  101. {
  102. cin >> vec2[i];
  103. }
  104. BubbleSort(lenV1, vec1);
  105. BubbleSort(lenV2, vec2);
  106.  
  107. interclasare(vec1, vec2, lenV1, lenV2, vecRez);
  108.  
  109. cout << "\nVector interclasat: ";
  110. for (int i = 0; i < lenV1 + lenV2; i++)
  111. {
  112. cout << vecRez[i] << " ";
  113. }
  114.  
  115. }
  116.  
Advertisement
Add Comment
Please, Sign In to add comment