Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstdio>
  4. #include <ctime>
  5. using namespace std;
  6.  
  7. bool IsNumberNatural(int UpperLimit, int number)
  8. {
  9. if (UpperLimit > number)
  10. {
  11. return false;
  12. }
  13. else
  14. {
  15. return true;
  16. }
  17. }
  18.  
  19. void CreateArray(int* Arr, int n)
  20. {
  21. for (int i = 0; i < n; i++)
  22. {
  23. Arr[i] = rand() % 100;
  24. }
  25. }
  26.  
  27. void DisplayArray(int* Arr, int n)
  28. {
  29. for (int i = 0; i < n; i++)
  30. {
  31. cout << Arr[i] << " ";
  32. }
  33. }
  34.  
  35. int LinearSearch(int *Arr, int n, int search)
  36. {
  37. for (int i = 0; i < n; i++)
  38. {
  39. if (Arr[i] == search) return i;
  40. }
  41. return -1;
  42. }
  43.  
  44. int BinarySearch(int *Arr, int n, int search)
  45. {
  46. int left(0), right(0), mid(0);
  47. left = 0; right = n - 1;
  48.  
  49. while (left <= right)
  50. {
  51. mid = (left + right) / 2;
  52. if (Arr[mid] == search)
  53. {
  54. return mid;
  55. }
  56. else if (search < Arr[mid])
  57. {
  58. right = mid - 1;
  59. }
  60. else if (search > Arr[mid])
  61. {
  62. left = mid + 1;
  63. }
  64. }
  65. return -1;
  66. }
  67.  
  68. int main()
  69. {
  70. srand(time(NULL));
  71. int n(0), l(0), choice(0), search(0), position(0), position2(0);
  72. cout << "Podaj rozmiar tablicy: ";
  73. cin >> n;
  74. while (!IsNumberNatural(0, n))
  75. {
  76. cout << "Rozmiar tablicy musi byc dodatni. Podaj rozmiar ponownie: ";
  77. cin >> n;
  78. }
  79. int* Arr = new int[n];
  80.  
  81. cout << "Podaj ilosc eksperymentow laboratoryjnych (optimum: 5): ";
  82. cin >> l;
  83. cout << "Wybierz typ wyszukiwania (1-lokalne, 2-binarne): ";
  84. cin >> choice;
  85. cout << "Jaka liczbe chcesz znalezc?: ";
  86. cin >> search;
  87.  
  88. switch (choice)
  89. {
  90. case 1:
  91. {
  92. for (int a = 0; a < l; a++)
  93. {
  94. CreateArray(Arr, n);
  95. DisplayArray(Arr, n);
  96. cout << "\n";
  97. position = LinearSearch(Arr, n, search);
  98. if (position != -1)
  99. cout << "Element " << search << " zostal znaleziony na pozycji " << position + 1;
  100. else
  101. cout << "Element " << search << " nie zostal znaleziony";
  102. cout << "\n";
  103. }
  104. cout << "\n";
  105. break;
  106. }
  107. case 2:
  108. {
  109. for (int a = 0; a < l; a++)
  110. {
  111. CreateArray(Arr, n);
  112. DisplayArray(Arr, n);
  113. cout << "\n";
  114. position2 = BinarySearch(Arr, n, search);
  115. if (position2 != -1)
  116. cout << "Element " << search << " zostal znaleziony na pozycji " << position2 + 1;
  117. else
  118. cout << "Element " << search << " nie zostal znaleziony";
  119. cout << "\n";
  120. }
  121. cout << "\n";
  122. break;
  123. }
  124. default:
  125. {
  126. cout << "Wybor spoza wykresu!";
  127. break;
  128. }
  129. }
  130. system("PAUSE");
  131. return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement