Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1. //metoda służąca do operacji na drzewach czerwono-czarnych
  2. void LosoweOperacje::choiceRBT()
  3. {
  4. //inicjalizacja zegara
  5. Czas C;
  6.  
  7. //inizjalizacja drzewa
  8. Drzewo D;
  9.  
  10. //inicjalizacja zmiennej do dokonywania wyboru operacji do wykonania na strukturze
  11. int choice = -1;
  12. //deklaracja zmiennej do wartości
  13. int value;
  14. //inicjalizacja zmiennej do określenia rozmiaru struktury do wypełnienia
  15. int size = 0;
  16.  
  17. //pobranie wielkości struktury
  18. cout << "Na ilu losowych elementach chcesz wykonac operacje? ";
  19. cin >> size;
  20.  
  21. //wypełnienie struktury losowymi wartościami
  22. while (D.count < size)
  23. {
  24. value = rand() % 2000000 - 1000000;
  25. D.push(value);
  26.  
  27. }
  28.  
  29. //pętla wykonująca operacje na strukturze, do momentu w którym nie zostanie przerwana
  30. while (choice != 0)
  31. {
  32.  
  33.  
  34. //wyświetlenie wyborów
  35. cout << "Wybierz rodzaj operacji:" << endl << "1. Dodanie elementu" << endl << "2. Usuniecie elementu" << endl << "3. Wyszukanie elementu" << endl << "4. Wyswietlenie" << endl;
  36. cout << "Nacisnij 0, aby zakonczyc dzialanie programu" << endl;
  37.  
  38. //pobranie wyboru operacji
  39. cin >> choice;
  40.  
  41. srand(time(NULL));
  42. string zapis;
  43.  
  44. ofstream plikWyjsciowy;
  45.  
  46. //pobranie nazwy pliku, do którego należy wpisywać wyniki
  47. cout << "Plik z wynikami testu: ";
  48. cin >> zapis;
  49.  
  50. //otwarcie pliku do zapisu rezultatów
  51. plikWyjsciowy.open("C:\\SZKOŁA\\IV SEMESTR\\SDiZO\\projekt\\moje\\Lista\\output\\Drzewo\\" + zapis, fstream::out);
  52.  
  53. //warunek sprawdzjący czy plik został poprawnie otwarty
  54. if (plikWyjsciowy.is_open()) {
  55. cout << "Otwarto plik " << zapis << endl;
  56. }
  57. else {
  58. cout << "Nie udało się otworzyć pliku wyjściowego!" << endl;
  59. return;
  60. }
  61.  
  62.  
  63. //obsługa wyborów
  64. switch (choice)
  65. {
  66. //przerwanie jeśli wybrano 0
  67. case 0:
  68. break;
  69. //wyświetlenie komunikatu o braku wybranej opcji
  70. default:
  71. cout << "Nie ma takiej opcji" << endl;
  72. break;
  73. //dodanie
  74. case 1:
  75. //pętla powtarzająca operację stukrotnie
  76. for (int j = 0; j < 100; j++)
  77. {
  78. //początek pomiaru czasu
  79. C.czasStart();
  80.  
  81. //pętla dodająca 100 losowych elementów
  82. for (int i = 0; i < 100; i++)
  83. {
  84. value = rand() % 2000000 - 1000000;
  85. D.push(value);
  86. }
  87. //koniec pomiaru czasu
  88. C.czasStop();
  89.  
  90. //przywrócenie odpowiedniej liczby elementów
  91. for (int i = 0; i < 100; )
  92. {
  93. value = rand() % 2000000 - 1000000;
  94. if (D.search(value))i++;
  95. D.pop(value);
  96. }
  97.  
  98. //zapis pomiaru do pliku
  99. plikWyjsciowy << C.czasWykonania() / 100 << endl;
  100. }
  101. //zamknięcie pliku
  102. plikWyjsciowy.close();
  103. break;
  104.  
  105. //usuwanie
  106. case 2:
  107. //pętla powtarzająca operację stukrotnie
  108. for (int j = 0; j < 100; j++)
  109. {
  110. //początek pomiaru czasu
  111. C.czasStart();
  112.  
  113. //pętla usuwająca 100 elementów
  114. for (int i = 0; i < 100; i++)
  115. {
  116. value = rand() % 2000000 - 1000000;
  117. D.pop(value);
  118. }
  119. //koniec pomiaru czasu
  120. C.czasStop();
  121.  
  122. //przywrócenie odpowiedniej liczby elementów
  123. for (int i = 0; i < 100; i++)
  124. {
  125. value = rand() % 2000000 - 1000000;
  126. D.push(value);
  127. }
  128.  
  129. //zapis pomiaru do pliku
  130. plikWyjsciowy << C.czasWykonania() / 100 << endl;
  131. }
  132. //zamknięcie pliku
  133. plikWyjsciowy.close();
  134. break;
  135. //wyszukiwanie
  136. case 3:
  137. //pętla powtarzająca operację stukrotnie
  138. for (int j = 0; j < 100; j++)
  139. {
  140. //początek pomiaru czasu
  141. C.czasStart();
  142.  
  143. //pętla wyszukująca 100 losowych elementów
  144. for (int i = 0; i < 100; i++)
  145. {
  146. value = rand() % 2000000 - 1000000;
  147. D.search(value);
  148. }
  149.  
  150. //koniec pomiaru czasu
  151. C.czasStop();
  152.  
  153. //zapis pomiaru do pliku
  154. plikWyjsciowy << C.czasWykonania() / 100 << endl;
  155. }
  156. //zamknięcie pliku
  157. plikWyjsciowy.close();
  158. break;
  159.  
  160. //wyświetlenie
  161. case 4:
  162. cout << "Jeszcze pracuje nad wyswietlaniem";
  163. break;
  164. }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement