Yan Esteves 0 Denunciar post Postado Outubro 27, 2013 É o seguinte, tenho que construir um algoritmo no Visualg que receba 100 nomes em um vetor e organiza-lo em ordem alfabética e também precisa fazer uma pesquisa binária pra procurar algum nome que esteja armazenado no algoritmo. O que eu fiz por enquanto ta bem simples, porem na parte da pesquisa que ta pegando. algoritmo "semnome" var aux: vetor[1.5,1..20] de inteiro org: vetor[1..5,1..20] de inteiro numNomes: vetor[1..5,1..20] de inteiro nomes: vetor[1..5,1..20] de caracter i, j: inteiro nome: VETOR [1..5] de caracter inicio //******PEGO OS NOMES DAS PESSOAS para i de 1 ate 5 faca escreval("Informe o nome da pessoa") leia(nome[i]) fimpara //******MANDO OS NOMES PARA UMA MATRIZ QUE IRÁ SEPARAR CADA LETRA para i de 1 ate 5 faca para j de 1 ate compr(nome[i]) faca nomes[i,j] <- copia(nome[i],j,j) fimpara fimpara //******TRANSFORMO CADA LETRA DA MATRIZ EM NUMERO DA TABELA ASCII para i de 1 ate 5 faca para j de 1 ate compr(nome[i]) faca numNomes[i,j] <- asc(nomes[i,j]) fimpara fimpara //Continua com a ordenação da matriz e pesquisa binária fimalgoritmo Neste esboço super simples falta apenas terminar a organização da matriz e fazer a pesquisa binária. A organização até sei fazer e já tenho pronto em um caderno, mas como faço a pesquisa? E existe outra forma de fazer sem que eu mande cada nome para uma matriz? Compartilhar este post Link para o post Compartilhar em outros sites
Sergio Cavalcante 6 Denunciar post Postado Novembro 16, 2013 var NOME : array[1..10] de cadeia; I, J : inteiro; COMECO, FINAL, MEIO : inteiro; PESQ, RESP, X : cadeia; ACHA : lógico; inicio escreva('Pesquisa binaria de nomes'); escreva; Para I ← 1 até 10 faça inicio escreva('Digite o ', I ,'o. nome: '); leia(NOME); fim; {*** Ordenacao ***} Para I ← 1 até 9 faça Para J ← I + 1 até 10 faça se (NOME > NOME[J]) então inicio X ← NOME; NOME ← NOME[J]; NOME[J] ← X; fim; {*** Trecho de pesquisa ***} inicio escreva('Entre o nome a ser pesquisado: '); leia(PESQ); COMECO ← 1; FINAL ← 10; ACHA ← falso; enquanto (COMECO <= FINAL) e (ACHA = falso) faça inicio MEIO ← (COMECO + FINAL) DIV 2; se (PESQ = NOME[MEIO]) então ACHA ← verdadeiro senão se (PESQ < NOME[MEIO]) então FINAL ← MEIO - 1 senão COMECO ← MEIO + 1; fim; se (ACHA = verdadeiro) então escreva(PESQ, ' foi localizado na posicao ', MEIO) senão escreva(PESQ, ' nao foi localizado'); escreva('Deseja continuar? SIM/NAO: '); leia(RESP); fim; fim. Compartilhar este post Link para o post Compartilhar em outros sites