Jump to content
Fórum Script Brasil
  • 0

Logica De Programação


edson_dls
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...