ATPS Classificação e Pesquisa
Por: wesleysilv • 5/5/2015 • Trabalho acadêmico • 2.322 Palavras (10 Páginas) • 473 Visualizações
[pic 2][pic 3]
[pic 4][pic 5][pic 6]
Relatório 1 – Pesquisa de dados
Com base nos passos solicitados pela etapa 1 e 2 da ATPS da matéria de Classificação e Pesquisa, atividade proposta pela prof. Dra Rute Dias de Freitas Queiroz realizei o desenvolvimento do código em C devidamente comentado, estruturado e identado para facilitar o entendimento do leitor.
O arquivo .C do código pode ser baixado pelo endereço: http://goo.gl/R0T2J8
O código abaixo foi estruturando dividindo todas as funcionalidades básicas descritas no cabeçalho do programa que segue:
/*
********************************************************************************
Etapa 1 da ATPS de Classificação e Pesquisa
Prof. Rute
Aluno: RA:
Descrição:
Geração de números aleatórios e preenchimento em um vetor com esses números.
Foi adicionado um menu a função principal(main) para que o usuário tenha
mais facilidade para testes.
O código foi devidamente identado e separado entre declarações e funções:
- Declaração de bibliotecas primárias de input, output e a time, necessária
para o uso de funções de geração de números aleatórios.
- Constantes gerais, como qtdade de casas, min e max dos n.aleatorios.
- Declaração da estrutura e variáveis.
- Função geradora de números inteiros aleatórios
- Função que ordena o vetor criado
- Função preenchedora do vetor
- Função que mostra apenas 1 vetor
- Função que mostra todos vetores
- Função que faz a busca binária
- Função que faz a busca sequencial
- Função principal
********************************************************************************
*/
//Declaração de bibliotecas primárias
#include
#include
#include
// Constantes
#define QTD_CASAS 1000
#define MIN 15
#define MAX 500
// Declaração da estrutura e variável vetor dessa estrutura;
typedef struct Residencia tipoResidencia;
struct Residencia{
char rua[25];
int numCasa;
int numMedidor;
float medidaConsumo;
};
tipoResidencia vetResidencias[QTD_CASAS];
// Função geradora de números inteiros aleatórios
int RandomInteger (int low, int high){
int k;
double d;
d = (double) rand () / ((double) RAND_MAX + 1);
k = d * (high - low + 1);
return low + k;
}
// Função que odena Vetor criado
void ordena_Vetor(){
int i, j, min;
tipoResidencia x;
for (i = 0; i < QTD_CASAS-1; ++i) {
min = i;
for (j = i+1; j < QTD_CASAS-1; ++j)
if (vetResidencias[j].numMedidor < vetResidencias[min].numMedidor) min = j;
x = vetResidencias[i]; vetResidencias[i] = vetResidencias[min]; vetResidencias[min] = x;
}
}
// Função preenchedora do Vetor
void preencheVetor(){
int i;
for(i=0; i<=QTD_CASAS-1; ++i){
sprintf(vetResidencias[i].rua, "Rua %d", i);
vetResidencias[i].numCasa=i;
vetResidencias[i].numMedidor=RandomInteger(MIN,MAX);
vetResidencias[i].medidaConsumo = i;
}
ordena_Vetor();
}
//Função que mostra apenas 1 vetor
void visualiza_Vetor(int indice){
printf("\n------------------------------------------");
printf("\n Öndice Vetor:\t %d", indice);
printf("\n Rua:\t\t %s ",vetResidencias[indice].rua);
printf("\n numCasa:\t %d ",vetResidencias[indice].numCasa);
printf("\n numMedidor:\t %d ",vetResidencias[indice].numMedidor);
printf("\n medidaConsumo:\t %d ",vetResidencias[indice].medidaConsumo);
printf("\n------------------------------------------");
}
// Função que mostra todos vetores
void visualiza_todos_Vetores(){
int i;
for (i=0; i<=QTD_CASAS-1; ++i){
visualiza_Vetor(i);
}
}
// Função de busca binária
int buscaBinaria( int n_buscado) {
int var_esquerda, pto_medio, var_direita, i;
// define a esquerda e a direta como sendo as 'pontas' do vetor
var_esquerda = 0;
var_direita = QTD_CASAS-1;
for(i=0; i=QTD_CASAS-1; i++) printf("[ %d ]", vetResidencias[i]);
printf("\nValor buscado: %d \t Tamanho do vetor: %d",n_buscado,QTD_CASAS);
//repetira o procedimento até que a ponta da esquerda coincida com a da direita
while (var_esquerda <= var_direita) {
//encontra ponto medio
pto_medio = (var_esquerda + var_direita)/2;
...