Advertisement
Guest User

Untitled

a guest
Dec 21st, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.67 KB | None | 0 0
  1. #include "randomTree.h"
  2. #include <ctime>
  3. using namespace std;
  4.  
  5. int main(int argc, char* argv[]) {
  6.  
  7.  
  8. if(argc == 1)
  9. {
  10. cout<<"Не введен аргумент командной строки - название файла\n";
  11. exit(1);
  12. }
  13. else
  14. {
  15. unique_ptr<RandomBinaryTree<double>> randTree(new RandomBinaryTree<double>());//создаем умные указатели?
  16. unique_ptr<RandomBinaryTree<double>> badTree(new RandomBinaryTree<double>());//?или выделяем память под 2 бинарных дерева
  17. ifstream inputFile(argv[1]);//тут считываем из входного потока название первого файла???
  18.  
  19. cout << "For file: " << argv[1] << endl;//пишем название файла(тестовый)
  20. if (!inputFile.is_open())
  21. {
  22. cout << "ERROR: file isn't open" << endl;
  23. return 0;
  24. }
  25. if (inputFile.eof())
  26. {
  27. cout << "ERROR: file is empty" << endl;
  28. return 0;
  29. }
  30.  
  31. long searchCount = atoi(argv[2]);//это глубина поиска?? или это глубина дерева?(типа количество элементов в дереве)
  32.  
  33.  
  34. randTree->makeFromFile(inputFile, randTree);//создаем из файла БД
  35. vector<double> vect;//вот это что за вектор и зачем?
  36. randTree->WriteToVector(vect, randTree);//тут вызываем функцию, а что она делает?
  37. if(atoi(argv[3])) randTree->makeFromVector(vect, badTree);//это ты мне говорила, что если 3й аргумент в строке 1
  38. //то только для худшего случая выводим
  39. inputFile.close();
  40.  
  41.  
  42. double elem; //генерируем много элем <- твой коммент что это значит?)
  43. long steps1 = 0;
  44. long steps2 = 0;
  45. long i = 0;
  46. srand(time(0));//srand() получает в виде параметра текущее системное время, которое при каждом запускe программы будет разным.
  47. //Это позволит функции rand() каждый раз генерировать именно случайные числа.
  48.  
  49.  
  50. unsigned long start_time = clock();//возвращает время, пройденное с момента запуска программы, вызвавшей фун­кцию clock().
  51.  
  52. while (i++ < searchCount){//почему с 1 начинаем? (это типа сколько элементов будет в дереве?)
  53. elem = rand();
  54. randTree->Search(elem, steps1, randTree);//вызываем функцию поиска?
  55. }
  56. unsigned long second_time = clock();
  57. unsigned long time1 = (second_time - start_time)/searchCount;
  58.  
  59. unsigned long time2;
  60. if(atoi(argv[3])){//этот иф в случае если количество чисел в дереве больше 100000? или что
  61. i = 0;
  62. while (i++ < searchCount){ //короче этот иф я не поняла
  63. elem = rand();
  64. randTree->Search(elem, steps2, badTree);
  65. }
  66. unsigned long end_time = clock();
  67. time2 = (end_time - end_time)/searchCount;
  68. }
  69.  
  70. cout << "Высота случайного дерева: " << randTree->GetDepth(randTree) << endl;
  71. if(atoi(argv[3])) cout << "Высота дерева в худшем случае (кол-во): " << randTree->GetDepth(badTree) << endl;
  72. if(!atoi(argv[3])) cout << "Количество элементов: " << vect.size() << endl;
  73. cout << "Среднее кол-во сравнений в случайном дереве: " << (float)steps1/searchCount << endl;
  74. if(atoi(argv[3])) cout << "Среднее кол-во сравнений в худшем случае: " << (float)steps2/searchCount << endl;
  75. cout << "Среднее время поиска элемента в случайном дереве: " << (float)time1 / CLOCKS_PER_SEC * 1000 << " ms" << endl;
  76. if(atoi(argv[3])) cout << "Среднее время поиска элемента в худшем случае (сл.д.): " << (float)time2 / CLOCKS_PER_SEC * 1000 << " ms" << endl;
  77.  
  78. return 0;
  79. }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement