Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "randomTree.h"
- #include <ctime>
- using namespace std;
- int main(int argc, char* argv[]) {
- if(argc == 1)
- {
- cout<<"Не введен аргумент командной строки - название файла\n";
- exit(1);
- }
- else
- {
- unique_ptr<RandomBinaryTree<double>> randTree(new RandomBinaryTree<double>());//создаем умные указатели?
- unique_ptr<RandomBinaryTree<double>> badTree(new RandomBinaryTree<double>());//?или выделяем память под 2 бинарных дерева
- ifstream inputFile(argv[1]);//тут считываем из входного потока название первого файла???
- cout << "For file: " << argv[1] << endl;//пишем название файла(тестовый)
- if (!inputFile.is_open())
- {
- cout << "ERROR: file isn't open" << endl;
- return 0;
- }
- if (inputFile.eof())
- {
- cout << "ERROR: file is empty" << endl;
- return 0;
- }
- long searchCount = atoi(argv[2]);//это глубина поиска?? или это глубина дерева?(типа количество элементов в дереве)
- randTree->makeFromFile(inputFile, randTree);//создаем из файла БД
- vector<double> vect;//вот это что за вектор и зачем?
- randTree->WriteToVector(vect, randTree);//тут вызываем функцию, а что она делает?
- if(atoi(argv[3])) randTree->makeFromVector(vect, badTree);//это ты мне говорила, что если 3й аргумент в строке 1
- //то только для худшего случая выводим
- inputFile.close();
- double elem; //генерируем много элем <- твой коммент что это значит?)
- long steps1 = 0;
- long steps2 = 0;
- long i = 0;
- srand(time(0));//srand() получает в виде параметра текущее системное время, которое при каждом запускe программы будет разным.
- //Это позволит функции rand() каждый раз генерировать именно случайные числа.
- unsigned long start_time = clock();//возвращает время, пройденное с момента запуска программы, вызвавшей функцию clock().
- while (i++ < searchCount){//почему с 1 начинаем? (это типа сколько элементов будет в дереве?)
- elem = rand();
- randTree->Search(elem, steps1, randTree);//вызываем функцию поиска?
- }
- unsigned long second_time = clock();
- unsigned long time1 = (second_time - start_time)/searchCount;
- unsigned long time2;
- if(atoi(argv[3])){//этот иф в случае если количество чисел в дереве больше 100000? или что
- i = 0;
- while (i++ < searchCount){ //короче этот иф я не поняла
- elem = rand();
- randTree->Search(elem, steps2, badTree);
- }
- unsigned long end_time = clock();
- time2 = (end_time - end_time)/searchCount;
- }
- cout << "Высота случайного дерева: " << randTree->GetDepth(randTree) << endl;
- if(atoi(argv[3])) cout << "Высота дерева в худшем случае (кол-во): " << randTree->GetDepth(badTree) << endl;
- if(!atoi(argv[3])) cout << "Количество элементов: " << vect.size() << endl;
- cout << "Среднее кол-во сравнений в случайном дереве: " << (float)steps1/searchCount << endl;
- if(atoi(argv[3])) cout << "Среднее кол-во сравнений в худшем случае: " << (float)steps2/searchCount << endl;
- cout << "Среднее время поиска элемента в случайном дереве: " << (float)time1 / CLOCKS_PER_SEC * 1000 << " ms" << endl;
- if(atoi(argv[3])) cout << "Среднее время поиска элемента в худшем случае (сл.д.): " << (float)time2 / CLOCKS_PER_SEC * 1000 << " ms" << endl;
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement