none
Programa que faça uma busca Linear RRS feed

  • Pergunta

  • Galera...preciso fazer um programa que faça uma busca linear que recebe como parâmetro um vetor ordenado e
    o valor cuja localização deve ser encontrada no vetor. A função deve retornar a posição onde o valor procurado se
    encontra, ou -1 caso não tenha encontrado. Além disso, preciso de outra função para ordenar o vetor caso esteja desordenado...
    Alguem poderia me ajudar? nao sei como fazer :S
    tks

    Cleilton Silva
    domingo, 13 de novembro de 2011 15:21

Respostas

  • Caro Cleiton...

    Você pode implementar uma classe do tipo:

    #ifndef BuscaS_H

    #define BuscaS_H

     

    #include <iostream>

    using namespace std;

     

    class BuscaS

    {

       private:

          int vetor [10];      //Você pode utilizar estruturas dinâmicas também

          int chave;

          int locais [10];     //armazena as posições em que estavam a chave de busca

          int tam;

          int contador;

     

       public:

          BuscaS (int [], int, int);

          void realizaBusca ();

          void imprimeLocais ();

    };

     

    #endif

     

    #include "Sequencial.h"

     

    BuscaS::BuscaS (int a[], int tamanho, int key)

    {

       chave = key;

       tam = tamanho;

       contador = 0;

     

       for (int cont = 0; cont < tam; cont++)

       {

          vetor[cont] = a[cont];

          locais [cont] = 0;

       }

    }

     

    void BuscaS::realizaBusca ()

    {

       for (int cont = 0; cont < tam; cont++)

          if (vetor [cont] == chave)

          {

             for (int aux = contador; aux <= cont; aux++) 

       locais [aux] = cont;

             contador++;

          }   

    }

     

    void BuscaS::imprimeLocais ()

    {

       if (contador != 0)

       {

          cout << "Chave encontrada em: ";

          for (int cont = 0; cont < contador; cont++)

             cout << locais [cont] << ", ";

          cout << endl;

       }

     

       else

          cout << "Chave nao encontrada!" << endl;

     

    Outra opção pode ser você utilizar as funções do arquivo <algorithm>, um bom exemplo é a função find().

    • Marcado como Resposta Cleilton Silva quarta-feira, 16 de novembro de 2011 13:49
    segunda-feira, 14 de novembro de 2011 14:00

Todas as Respostas

  • Caro Cleiton...

    Você pode implementar uma classe do tipo:

    #ifndef BuscaS_H

    #define BuscaS_H

     

    #include <iostream>

    using namespace std;

     

    class BuscaS

    {

       private:

          int vetor [10];      //Você pode utilizar estruturas dinâmicas também

          int chave;

          int locais [10];     //armazena as posições em que estavam a chave de busca

          int tam;

          int contador;

     

       public:

          BuscaS (int [], int, int);

          void realizaBusca ();

          void imprimeLocais ();

    };

     

    #endif

     

    #include "Sequencial.h"

     

    BuscaS::BuscaS (int a[], int tamanho, int key)

    {

       chave = key;

       tam = tamanho;

       contador = 0;

     

       for (int cont = 0; cont < tam; cont++)

       {

          vetor[cont] = a[cont];

          locais [cont] = 0;

       }

    }

     

    void BuscaS::realizaBusca ()

    {

       for (int cont = 0; cont < tam; cont++)

          if (vetor [cont] == chave)

          {

             for (int aux = contador; aux <= cont; aux++) 

       locais [aux] = cont;

             contador++;

          }   

    }

     

    void BuscaS::imprimeLocais ()

    {

       if (contador != 0)

       {

          cout << "Chave encontrada em: ";

          for (int cont = 0; cont < contador; cont++)

             cout << locais [cont] << ", ";

          cout << endl;

       }

     

       else

          cout << "Chave nao encontrada!" << endl;

     

    Outra opção pode ser você utilizar as funções do arquivo <algorithm>, um bom exemplo é a função find().

    • Marcado como Resposta Cleilton Silva quarta-feira, 16 de novembro de 2011 13:49
    segunda-feira, 14 de novembro de 2011 14:00
  • Felippe, valeu cara, muito útil! :)

    Abraços
    Cleilton Silva
    quarta-feira, 16 de novembro de 2011 13:49