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"); }