Buscar

trabalho 4- pesquisa sequencial, ordenada e binária- comp2


Continue navegando


Prévia do material em texto

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ 
CAMPUS MEDIANEIRA 
BACHARELADO EM ENGENHARIA ELÉTRICA 
 
 
 
 
 
EMILY GABRIELY DIAS CAMPOS DA SILVA 
 
 
 
 
 
 
 
 
 
 
 
Computação 2: Pesquisa Sequencial, Ordenada e Binária 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MEDIANEIRA 
2022 
Emily Gabriely Dias Campos Da Silva Y31 
 
 
 
 
 
 
 
 
 
TRABALHO DE COMPUTAÇÃO 2 
 
 
 
 
 
 
 
 
Atividade proposta: Implementar 
exercício sobre pesquisa sequencial , 
ordenada e binária. 
Prof. Alessandra B G Hoffman. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MEDIANEIRA 
2022 
O usuário deverá escolher um tipo de pesquisa (Menu) 
 
1- Pesquisa sequencial 
2- Pesquisa ordenada 
3- Pesquisa binária 
4- Sair 
 
e também informar um número que será pesquisado. 
 
Quando o usuário escolher a opção deverá ser executado a função do tipo da 
pesquisa selecionado. Utilize um vetor de inteiros com 16 elementos (utilize a 
dica abaixo). Mas lembre-se que para sequencial o vetor não está ordenado e 
na binária considere ele ordenado. O usuário deverá informar um número 
(chave) que será então realizado a pesquisa. 
 
Informe ao final se encontrou (qual a posição) ou não o elemento procurado 
bem como a quantidade de comparações que o método precisou fazer. 
 
Caso a opção escolhida seja diferente do Menu acima informar que está 
incorreta a opção. O usuário poderá executar várias vezes. 
 
Dica: defina os vetores (desordenado e ordenado) para os testes para que não 
seja necessário o usuário entrar com os valores. 
 
int v[]={14,21,5,45,12,3,86,98,46,53,24,2,1,15,90,47}; 
int v_ord[]={1,2,3,5,12,14,15,21,24,45,46,47,53,86,90,98}; 
#include <stdio.h> 
#include <stdlib.h> 
#define TAM 16 
int cont = 0; 
int main() 
{ 
 int num, op; 
 int v[TAM] = {14,21,5,45,12,3,86,98,46,53,24,2,1,15,90,47}; 
 int v_ord[TAM] = {1,2,3,5,12,14,15,21,24,45,46,47,53,86,90,98}; 
 printf("Digite um numero inteiro (entre 1 e 100): "); 
 scanf("%d", &num); 
 do 
 { 
 printf("\n MENU:\n"); 
 printf("\n 1 - Pesquisa Sequencial"); 
 printf("\n 2 - Pesquisa Ordenada"); 
 printf("\n 3 - Pesquisa Binaria"); 
 printf("\n 4 - Sair"); 
 scanf("%d", &op); 
 cont = 0; 
 switch(op) 
 { 
 case 1 : 
 Pesquisa_Linear(v, num); 
 printf("\n Foram realizadas %d comparacoes.\n", cont + 1); 
 system("pause"); 
 system("cls"); 
 break; 
 case 2 : 
 Pesquisa_Ordenada(v_ord, num); 
 printf("\n Foram realizadas %d comparacoes.\n", cont + 1); 
 system("pause"); 
 system("cls"); 
 break; 
 case 3 : 
 Pesquisa_Binaria(v_ord, num); 
 printf("\n Foram realizadas %d comparacoes. \n", cont + 1); 
 system("pause"); 
 system("cls"); 
 break; 
 case 4 : 
 break; 
 default : 
 printf("\n Opcao invalida"); 
 } 
 } 
 while(op != 4); 
 return 0; 
} 
int Pesquisa_Linear(int *v, int num1) 
{ 
 int cont1; 
 for(cont1 = 0 ; cont1 <= TAM ; cont1++) 
 { 
 if(num1 == v[cont1]) 
 { 
 return printf("\nPosicao do numero: %d\n", cont1 + 1);; 
 } 
 else if((cont1 == TAM) && (num1 != v[cont1])) 
 { 
 return printf("\nNumero nao encontrado.\n");; 
 } 
 cont = cont + 1; 
 } 
} 
int Pesquisa_Ordenada(int *v_ord, int num2) 
{ 
 int cont2; 
 for(cont2 = 0 ; cont2 <= TAM ; cont2++) 
 { 
 if(num2 == v_ord[cont2]) 
 { 
 return printf("\n Posicao do numero: %d\n", cont2 + 1);; 
 } 
 else if((cont2 == TAM) && (num2 != v_ord[cont2])) 
 { 
 return printf("\nNumero nao encontrado.\n");; 
 } 
 cont = cont + 1; 
 } 
} 
int Pesquisa_Binaria(int *v_ord, int num3) 
{ 
 int inicio, meio, fim; 
 inicio = 0; 
 fim = TAM - 1; 
 while(inicio <= fim) 
 { 
 meio = (inicio + fim)/2; 
 if(num3 == v_ord[8]) 
 { 
 return printf("\n Posicao do numero: %d\n", meio+1);; 
 } 
 else if(num3 < v_ord[meio]) 
 fim = meio - 1; 
 else if(num3 > v_ord[meio]) 
 inicio = meio + 1; 
 else 
 return printf("\n Posicao do numero: %d\n", meio+1);; 
 cont = cont + 1; 
 } 
 return printf("\n Numero nao encontrado.\n"); 
}