quarta-feira, 14 de maio de 2014

2014-1: Algoritmos e Programação: Busca sequencial e ordenação

#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

void ordenarPorSelecao(unsigned short a[], int tam)
{
    int i, j, menor, aux;
    for (i = 0; i < tam; i++){
        menor = i;
        for (j = i + 1; j < tam; j++){
           if (a[j] < a[menor]) 
              menor = j;
        }
        if (menor != i){
          aux = a[menor];
          a[menor] = a[i];
          a[i] = aux;
        }
    }
cout << "Depois de ordenado: " << endl;
    for (int i = 0; i < tam; i++){
        cout << a[i] << "\t";
    }     
}

// funcao que realiza a busca sequencial
// a[]: tabela de dados
// tam: tamanho da tabela de dados
// v  : valor a ser buscado na tabela
// retorno int: posicao de v em a[] caso ele exista, 
//              -1 caso contrario
int buscaSequencial(unsigned short a[], int tam, 
unsigned short v)
{
  int pos = -1; // assumir que o elemento nao existe
  for (int c = 0; c < tam; c++){
      if (a[c] == v){
          pos = c;
          break;
      }
  }
  return pos;
}

int main(int argc, char *argv[])
{
    // Problema
    // Entrada: Um numero digitado pelo usuário e um 
    // vetor/tabela com 1M de números aleatórios
    // Saída: Informar se o número existe na tabela ou não

    // Descrição textual
    // 1) Ler do usuario um numero inteiro
    int tam = 10;
    unsigned short t[tam]; // tabela de dados
    unsigned short n; // entrada do usuario
    int c; // contador
    cout << "Digite um numero inteiro: "<< endl;
    cin >> n;
    // 2) Gerar os numeros aleatorios e armazena-los
    //    no vetor
    srand(time(NULL)); // inicializa o gerador
    for (int i = 0; i < tam; i++){
        t[i] = rand() % 65454;
    }
    // 3) Executar a busca sequencial sobre o vetor
    int r = buscaSequencial(t, tam, n);
    if (r == -1){
       cout << "Resultado não encontrado." << endl;
    } else {
      cout << "Valor encontrado na posicao " << r << endl;
    }
    
    // 4) Exibir o vetor na tela
    for (int i = 0; i < tam; i++){
        cout << t[i] << "\t";
    }
    // 5) ordenar o vetor
    ordenarPorSelecao(t, tam);
    // 6) exibir o vetor ordenado
    cout << "Depois de ordenado: " << endl;
    for (int i = 0; i < tam; i++){
        cout << t[i] << "\t";
    }    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Nenhum comentário:

Postar um comentário