public Cidade(string localidade, string uf, DadosOcorrencia dados_ocorrencia) { this.lista_ocorrencias = new List <DadosOcorrencia>(); this.lista_ocorrencias.Add(dados_ocorrencia); this.localidade = localidade; this.uf = uf; }
/// <summary> /// Randomiza o pivô para posterior partição da lista. /// </summary> /// <param name="input">A lista desordenada.</param> /// <param name="left">Pivô esquerdo.</param> /// <param name="right">Pivô direito.</param> /// <param name="crescente">Se <c>true</c> [crescente].</param> /// <returns>Retorna um inteiro a ser utilizado como pivô nas chamadas recursivas.</returns> private static int RandomizedPartitionLocalizacao(List <DadosOcorrencia> input, int left, int right, bool crescente) { Random random = new Random(); int i = random.Next(left, right); DadosOcorrencia pivot = input[i]; input[i] = input[right]; input[right] = pivot; return(PartitionLocalizacao(input, left, right, crescente)); }
/// <summary> /// Utiliza Bubble Sort. /// A chave é a localidade /// </summary> /// <param name="lista_desordenada">A lista desordenada.</param> /// <param name="crescente">Se <c>true</c> [crescente].</param> /// <returns>Retorna a lista devidamente ordenada.</returns> public static List <DadosOcorrencia> bubbleSort_localidade(List <DadosOcorrencia> lista_desordenada, bool crescente) { List <DadosOcorrencia> lista_ordenada = new List <DadosOcorrencia>(); foreach (DadosOcorrencia dados_ocorrencia in lista_desordenada) { lista_ordenada.Add(dados_ocorrencia); } bool exchanges; do { exchanges = false; for (int i = 0; i < lista_ordenada.Count - 1; i++) { if (lista_ordenada[i].ocorrencia != null) { if (crescente) { if (lista_ordenada[i + 1].ocorrencia.localidade.CompareTo(lista_ordenada[i].ocorrencia.localidade) < 0) { // Exchange elements DadosOcorrencia temp = lista_ordenada[i]; lista_ordenada[i] = lista_ordenada[i + 1]; lista_ordenada[i + 1] = temp; exchanges = true; } } else { if (lista_ordenada[i].ocorrencia.localidade.CompareTo(lista_ordenada[i + 1].ocorrencia.localidade) < 0) { // Exchange elements DadosOcorrencia temp = lista_ordenada[i]; lista_ordenada[i] = lista_ordenada[i + 1]; lista_ordenada[i + 1] = temp; exchanges = true; } } } //if } //for } while (exchanges); return(lista_ordenada); }
/// <summary> /// Efetivamente particiona a lista, para que o algoritmo funcione. /// Utiliza como chave a localização /// </summary> /// <param name="input">A lista desordenada.</param> /// <param name="left">Pivô esquerdo.</param> /// <param name="right">Pivô direito.</param> /// <param name="crescente">Se <c>true</c> [crescente].</param> /// <returns>Retorna um inteiro a ser utilizado como pivô nas chamadas recursivas.</returns> private static int PartitionLocalizacao(List <DadosOcorrencia> input, int left, int right, bool crescente) { DadosOcorrencia pivot = input[right]; DadosOcorrencia temp; int i = left; for (int j = left; j < right; j++) { if (crescente) { if (pivot.ocorrencia.localidade.CompareTo(input[j].ocorrencia.localidade) >= 0) { temp = input[j]; input[j] = input[i]; input[i] = temp; i++; } } else { if (input[j].ocorrencia.localidade.CompareTo(pivot.ocorrencia.localidade) >= 0) { temp = input[j]; input[j] = input[i]; input[i] = temp; i++; } } } input[right] = input[i]; input[i] = pivot; return(i); }
/// <summary> /// Efetivamente particiona a lista, para que o algoritmo funcione. /// Utiliza como chave o código de ocorrência /// </summary> /// <param name="input">A lista desordenada.</param> /// <param name="left">Pivô esquerdo.</param> /// <param name="right">Pivô direito.</param> /// <param name="crescente">Se <c>true</c> [crescente].</param> /// <returns>Retorna um inteiro a ser utilizado como pivô nas chamadas recursivas.</returns> private static int PartitionOcorrencia(List <DadosOcorrencia> input, int left, int right, bool crescente) { DadosOcorrencia pivot = input[right]; DadosOcorrencia temp; int i = left; for (int j = left; j < right; j++) { if (crescente) { if (input[j].codigo_ocorrencia <= pivot.codigo_ocorrencia) { temp = input[j]; input[j] = input[i]; input[i] = temp; i++; } } else { if (input[j].codigo_ocorrencia >= pivot.codigo_ocorrencia) { temp = input[j]; input[j] = input[i]; input[i] = temp; i++; } } } input[right] = input[i]; input[i] = pivot; return(i); }
} //limparDadosOcorrencia() /// <summary> /// Preenche o texto com as informações da ocorrência selecionada. /// </summary> /// <param name="dado_selecionado">A ocorrencia selecionada.</param> private void preencherDadosOcorrencia(DadosOcorrencia dado_selecionado) //preenche os dados da ocorrência { textDadosOcorrencia.Text = ""; if (dado_selecionado.ocorrencia != null) { textDadosOcorrencia.Text = "Ocorrência:\r\n\r\n"; textDadosOcorrencia.Text += " Código: " + dado_selecionado.codigo_ocorrencia + "\r\n" + " Classificação: " + dado_selecionado.ocorrencia.classificacao + "\r\n" + " Tipo: " + dado_selecionado.ocorrencia.tipo + "\r\n" + " Localidade: " + dado_selecionado.ocorrencia.localidade + "\r\n" + " UF: " + dado_selecionado.ocorrencia.uf + "\r\n" + " País: " + dado_selecionado.ocorrencia.pais + "\r\n" + " Aerodromo: " + dado_selecionado.ocorrencia.aerodromo + "\r\n" + " Dia ocorrência: " + dado_selecionado.ocorrencia.dia_ocorrencia + "\r\n" + " Horário UTC: " + dado_selecionado.ocorrencia.horario + "\r\n" + " Será investigada: " + dado_selecionado.ocorrencia.sera_investigada + "\r\n" + " Comando investigador: " + dado_selecionado.ocorrencia.comando_investigador + "\r\n" + " Status investigação: " + dado_selecionado.ocorrencia.status_investigacao + "\r\n" + " Número relatório: " + dado_selecionado.ocorrencia.numero_relatorio + "\r\n" + " Relatório publicado: " + dado_selecionado.ocorrencia.relatorio_publicado + "\r\n" + " Dia publicação: " + dado_selecionado.ocorrencia.dia_publicacao + "\r\n" + " Quantidade de recomendações: " + dado_selecionado.ocorrencia.quantidade_recomendacoes + "\r\n" + " Aeronaves envolvidas: " + dado_selecionado.ocorrencia.aeronaves_envolvidas + "\r\n" + " Saída pista: " + dado_selecionado.ocorrencia.saida_pista + "\r\n" + " Dia extração: " + dado_selecionado.ocorrencia.dia_extracao + "\r\n"; } //if if (dado_selecionado.aeronave != null) { textDadosOcorrencia.Text += "\r\n\r\n"; textDadosOcorrencia.Text += "Aeronave:\r\n\r\n"; textDadosOcorrencia.Text += " Código da aeronave: " + dado_selecionado.aeronave.codigo_aeronave + "\r\n" + " Matrícula: " + dado_selecionado.aeronave.matricula + "\r\n" + " Código do operador: " + dado_selecionado.aeronave.codigo_operador + "\r\n" + " Equipamento: " + dado_selecionado.aeronave.equipamento + "\r\n" + " Fabricante: " + dado_selecionado.aeronave.fabricante + "\r\n" + " Modelo: " + dado_selecionado.aeronave.modelo + "\r\n" + " Tipo motor: " + dado_selecionado.aeronave.tipo_motor + "\r\n" + " Quantidade motores: " + dado_selecionado.aeronave.quantidade_motores + "\r\n" + " Peso máximo decolagem: " + dado_selecionado.aeronave.peso_maximo_decolagem + "\r\n" + " Quantidade de assentos: " + dado_selecionado.aeronave.quantidade_assentos + "\r\n" + " Ano de fabricação: " + dado_selecionado.aeronave.ano_fabricacao + "\r\n" + " País de registro: " + dado_selecionado.aeronave.pais_registro + "\r\n" + " Categoria registro: " + dado_selecionado.aeronave.categoria_registro + "\r\n" + " Categoria aviação: " + dado_selecionado.aeronave.categoria_aviacao + "\r\n" + " Origem voo: " + dado_selecionado.aeronave.origem_voo + "\r\n" + " Destino voo: " + dado_selecionado.aeronave.destino_voo + "\r\n" + " Fase operação: " + dado_selecionado.aeronave.fase_operacao + "\r\n" + " Tipo operação: " + dado_selecionado.aeronave.tipo_operacao + "\r\n" + " Nível de dano: " + dado_selecionado.aeronave.nivel_dano + "\r\n" + " Quantidade de fatalidades: " + dado_selecionado.aeronave.quantidade_fatalidades + "\r\n" + " Dia de extração: " + dado_selecionado.aeronave.dia_extracao + "\r\n"; } //if if (dado_selecionado.fator != null) { textDadosOcorrencia.Text += "\r\n\r\n"; textDadosOcorrencia.Text += "Fator contribuinte: \r\n\r\n"; textDadosOcorrencia.Text += " Código do fator: " + dado_selecionado.fator.codigo_fator + "\r\n" + " Aspecto: " + dado_selecionado.fator.aspecto + "\r\n" + " Condicionante: " + dado_selecionado.fator.condicionante + "\r\n" + " Área: " + dado_selecionado.fator.area + "\r\n" + //" Nível de contribuição: " + dado_selecionado.fator. + "\r\n" + " Detalhe fator: " + dado_selecionado.fator.detalhe_fator + "\r\n" + " Dia extração: " + dado_selecionado.fator.dia_extracao; } //if } // preencherDadosOcorrencia()
} //pesquisar() /// <summary> /// Mostra os dados da ocorrência selecionada da lista de ocorrências da cidade. /// </summary> /// <param name="ocorrencia_selecionada">A ocorrencia selecionada.</param> private void ocorrenciaSelecionada(DadosOcorrencia ocorrencia_selecionada) //mostra a ocorrência selecionada no comboBox { //preenche o textbox com os dados da ocorrencia selecionada preencherDadosOcorrencia(ocorrencia_selecionada); } // pesquisar(DadosOcorrencia dado_selecionado)