Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //metoda służąca do operacji na drzewach czerwono-czarnych
- void LosoweOperacje::choiceRBT()
- {
- //inicjalizacja zegara
- Czas C;
- //inizjalizacja drzewa
- Drzewo D;
- //inicjalizacja zmiennej do dokonywania wyboru operacji do wykonania na strukturze
- int choice = -1;
- //deklaracja zmiennej do wartości
- int value;
- //inicjalizacja zmiennej do określenia rozmiaru struktury do wypełnienia
- int size = 0;
- //pobranie wielkości struktury
- cout << "Na ilu losowych elementach chcesz wykonac operacje? ";
- cin >> size;
- //wypełnienie struktury losowymi wartościami
- while (D.count < size)
- {
- value = rand() % 2000000 - 1000000;
- D.push(value);
- }
- //pętla wykonująca operacje na strukturze, do momentu w którym nie zostanie przerwana
- while (choice != 0)
- {
- //wyświetlenie wyborów
- cout << "Wybierz rodzaj operacji:" << endl << "1. Dodanie elementu" << endl << "2. Usuniecie elementu" << endl << "3. Wyszukanie elementu" << endl << "4. Wyswietlenie" << endl;
- cout << "Nacisnij 0, aby zakonczyc dzialanie programu" << endl;
- //pobranie wyboru operacji
- cin >> choice;
- srand(time(NULL));
- string zapis;
- ofstream plikWyjsciowy;
- //pobranie nazwy pliku, do którego należy wpisywać wyniki
- cout << "Plik z wynikami testu: ";
- cin >> zapis;
- //otwarcie pliku do zapisu rezultatów
- plikWyjsciowy.open("C:\\SZKOŁA\\IV SEMESTR\\SDiZO\\projekt\\moje\\Lista\\output\\Drzewo\\" + zapis, fstream::out);
- //warunek sprawdzjący czy plik został poprawnie otwarty
- if (plikWyjsciowy.is_open()) {
- cout << "Otwarto plik " << zapis << endl;
- }
- else {
- cout << "Nie udało się otworzyć pliku wyjściowego!" << endl;
- return;
- }
- //obsługa wyborów
- switch (choice)
- {
- //przerwanie jeśli wybrano 0
- case 0:
- break;
- //wyświetlenie komunikatu o braku wybranej opcji
- default:
- cout << "Nie ma takiej opcji" << endl;
- break;
- //dodanie
- case 1:
- //pętla powtarzająca operację stukrotnie
- for (int j = 0; j < 100; j++)
- {
- //początek pomiaru czasu
- C.czasStart();
- //pętla dodająca 100 losowych elementów
- for (int i = 0; i < 100; i++)
- {
- value = rand() % 2000000 - 1000000;
- D.push(value);
- }
- //koniec pomiaru czasu
- C.czasStop();
- //przywrócenie odpowiedniej liczby elementów
- for (int i = 0; i < 100; )
- {
- value = rand() % 2000000 - 1000000;
- if (D.search(value))i++;
- D.pop(value);
- }
- //zapis pomiaru do pliku
- plikWyjsciowy << C.czasWykonania() / 100 << endl;
- }
- //zamknięcie pliku
- plikWyjsciowy.close();
- break;
- //usuwanie
- case 2:
- //pętla powtarzająca operację stukrotnie
- for (int j = 0; j < 100; j++)
- {
- //początek pomiaru czasu
- C.czasStart();
- //pętla usuwająca 100 elementów
- for (int i = 0; i < 100; i++)
- {
- value = rand() % 2000000 - 1000000;
- D.pop(value);
- }
- //koniec pomiaru czasu
- C.czasStop();
- //przywrócenie odpowiedniej liczby elementów
- for (int i = 0; i < 100; i++)
- {
- value = rand() % 2000000 - 1000000;
- D.push(value);
- }
- //zapis pomiaru do pliku
- plikWyjsciowy << C.czasWykonania() / 100 << endl;
- }
- //zamknięcie pliku
- plikWyjsciowy.close();
- break;
- //wyszukiwanie
- case 3:
- //pętla powtarzająca operację stukrotnie
- for (int j = 0; j < 100; j++)
- {
- //początek pomiaru czasu
- C.czasStart();
- //pętla wyszukująca 100 losowych elementów
- for (int i = 0; i < 100; i++)
- {
- value = rand() % 2000000 - 1000000;
- D.search(value);
- }
- //koniec pomiaru czasu
- C.czasStop();
- //zapis pomiaru do pliku
- plikWyjsciowy << C.czasWykonania() / 100 << endl;
- }
- //zamknięcie pliku
- plikWyjsciowy.close();
- break;
- //wyświetlenie
- case 4:
- cout << "Jeszcze pracuje nad wyswietlaniem";
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement