Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
É 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?
var
inicio
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.