Ir para conteúdo
Fórum Script Brasil
  • 0

Logica De Programação


edson_dls

Pergunta

Amigos estou precisando de ajuda, pois faço faculdade de Redes de Computadores e o meu professor de lógica de programação passou um trabalho e não sei resolver se alguém puder me ajudar a resolver fico extremamente agradecido valeu.

Um algoritmo que seja um vetor [1...100] usando CASE (opção) OF

Que faça uma (1): pesquisa seqüencial

E uma (2) : pesquisa binária

Não importa se é nome ou numero...

Agradeço a atenção de você’s amigos...

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá.

O segredo é a função de comparação.

Não sei se precisa de alguma linguagem específica, mas senão, suponha que existe uma função que compara

strings:

integer strcmp(string1, string2)

retorna 1 se string1 > string2

retorna -1 se string1 < string2

retorna 0 se string1 = string2

observe que os operadores de comparação são lexicográficos. Dependendo da aplicação isso pode gerar problemas pois:

"100" < "20" -- comparação lexicográfica

100 > 20 -- comparação numérica

Sobre a busca seqüencial - simples e ineficiente:

faça um loop que percorra o vetor até encontrar o que você quer (ou seja, quando strcmp(str1,str2) = 0) ou até o final (se não encontrar).

pseudo-código:

enquanto não fim do vetor faça;
  se strcmp(string,vetor[i]) = 0 
    retorne i;
fim enquanto;
retorne FALSE;
Sobre a busca binária - não tão simples e eficiente: primeira coisa: o vetor tem de estar ordenado sob strcmp(). Aqui você define um max e um min, que são os limites da procura, você reduz os limites de acordo com o resultado da comparação. pseudo-código:
min = 0, max = tamanho do vetor;
enquanto (max > min) faca 

  mid = (min+max)/2;

  res = strcmp(string,vetor[mid]);
  
  // a string que deseja está na metade superior dos limites considerados
  se (res > 0) faça
    min = mid;
  // a string que deseja está na metade inferior dos limites considerados
  senão se (res < 0) faça  
     max = mid;
  // strcmp = 0. logo, encontramos a string desejada.
  senão
    retorne mid;
fim enquanto

retorne FALSE;

PS: tem que ver os limites direitinho, somando 1 aqui e ali, pois isso aqui é só um rascunho rápido!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...