Dúvida sobre o código do professor na aula busca binária.

Dúvida sobre o código do professor na aula busca binária.

Home Fóruns Programação Básica Dúvida sobre o código do professor na aula busca binária.

Visualizando 3 respostas da discussão
  • Autor
    Posts
    • #169124
      Heloisa Gadelha
      Participante

      print

      Nesse caso, se eu buscar a chave e ela for igual ao ultimo elemento do vetor, ele não vai encontrar, já que (ini < fim).
      Quando o (ini == fim), a ultima posição não vai ser testada.
      nesse caso eu alterei isso no meu código que ficou assim

      inteiro chave
          inteiro ini = 0, fim = u.numero_elementos(vet) - 1, meio = 0
          logico encontrado = falso
          escreva("\nQual chave você quer encontrar? ")
          leia(chave)
          enquanto (ini < fim) {
            meio = (ini + fim) /2
                se (vet[meio] == chave) {
                  encontrado = verdadeiro
                  pare
                } senao se (chave > vet[meio]) {
                  ini = meio + 1
                } senao {
                  fim = meio - 1
                }
          }
          se (encontrado == verdadeiro) {
            escreva("O valor " ,chave, " foi encontrado na posição " ,meio) }
          senao {
            escreva("O valor ",chave, " não foi encontrado.")
          }
    • #169125
      Heloisa Gadelha
      Participante

    • #169127
      Heloisa Gadelha
      Participante

      Gostaria de saber se estou equivocada ;-;

    • #169141
      Tutora Jessica
      Moderador

      Ola Heloisa, você está pensando certinho 👍

      Seu raciocínio está correto

      Do jeito que o enquanto (ini < fim) está, existe sim um problema lógico. Quando ini == fim: Ainda existe um elemento válido para ser testado Mas o laço não entra Logo, essa última posição nunca é comparada Ou seja: 👉 se a chave estiver exatamente na última posição restante, ela não será encontrada. Você identificou corretamente o problema 👏 Parabens 🖖🏼

Visualizando 3 respostas da discussão
  • Você deve fazer login para responder a este tópico.