/// <summary>
        /// Efetua a pesquisa pelo delegate e registra seus logs
        /// </summary>
        /// <param name="type">Tipo de Pesquisa</param>
        /// <param name="idRoom">Id Room pesquisado</param>
        /// <param name="searchDelegate">Função de pesquisa</param>
        private static void Search(string type, int idRoom, SearchDelegate searchDelegate)
        {
            Console.Clear();
            Console.Write("Pesquisando...");

            // Salva o horario de início
            DateTime start = DateTime.Now;

            // Inicia o cronômetro
            Stopwatch watch = Stopwatch.StartNew();
            // Invoca o delegate
            Airbnb airbnb = searchDelegate.Invoke(idRoom, out int comparisons);

            // Pausa o cronômetro
            watch.Stop();

            // Salva o horario de término
            DateTime end = DateTime.Now;

            // Converte o tempo do cronômetro para segundos
            long time = watch.ElapsedTicks;

            Console.Clear();
            Console.WriteLine("Pesquisa finalizada");
            Console.WriteLine("-------------------");
            Console.WriteLine($"Tipo: {type}");
            Console.WriteLine($"ID Room pesquisado: {idRoom}");
            Console.WriteLine($"Comparações: {comparisons}");
            Console.WriteLine($"Tempo: {time} ticks ({start.ToLongTimeString()} - {end.ToLongTimeString()})");
            Console.WriteLine("-------------------");

            // Mostra o objeto pesquisado
            Console.WriteLine("Objeto: ");
            if (airbnb == null)
            {
                Console.WriteLine("Não encontrado.");
            }
            else
            {
                Console.WriteLine(airbnb.ToString());
            }
            Console.WriteLine("-------------------");
        }
예제 #2
0
        /// <summary>
        /// Lê os dados Airbnb armazenados no arquivo texto
        /// </summary>
        /// <param name="path">Caminho do arquivo</param>
        /// <returns>Array de Airbnb</returns>
        private Airbnb[] ReadFile(string path)
        {
            // Le todas as linhas do arquivo
            string[] lines = File.ReadAllLines(path);
            // Define o arrary ignorando a primeira posição
            Airbnb[] airbnbs = new Airbnb[lines.Length - 1];

            for (int i = 1; i < lines.Length; i++)
            {
                string[] line                = lines[i].Split("\t");
                int      roomId              = Convert.ToInt32(line[0]);
                int      hostId              = Convert.ToInt32(line[1]);
                string   roomType            = line[2];
                string   country             = line[3];
                string   city                = line[4];
                string   neighborhood        = line[5];
                double   review              = Convert.ToDouble(line[6]);
                double   overallSatisfaction = Convert.ToDouble(line[7]);
                double   accommodates        = Convert.ToDouble(line[8]);
                double   bedrooms            = Convert.ToDouble(line[9]);
                double   price               = Convert.ToDouble(line[10]);
                string   propertyType        = line[11];

                airbnbs[i - 1] = new Airbnb(roomId,
                                            hostId,
                                            roomType,
                                            city,
                                            country,
                                            neighborhood,
                                            review,
                                            overallSatisfaction,
                                            accommodates,
                                            bedrooms,
                                            price,
                                            propertyType);
            }

            return(airbnbs);
        }