• Matéria: Informática
  • Autor: rafaelaugusto12
  • Perguntado 8 anos atrás

#include
#include
#include

#define SUCESSO -1
#define INSUCESSO -2

#define MAX 2000000

using namespace std;
using namespace std::chrono;

int busca_sequencial_ite(int, int [], int);
int busca_sequencial_rec(int, int [], int);
int busca_binaria_ite(int, int [], int);
int busca_binaria_rec(int, int [], int);
int busca_binaria_rec(int, int [], int, int);

int seleciona_busca(const string opcao, int(**busca)(int,int[],int));

void ler_entrada(const string, int[]);

const string msg_erro = "Programa espera parâmetro de entrada. Opções abaixo (sem aspas simples):\n - 'BSI' para Busca Sequencial Iterativa.\n - 'BSR' para Busca Sequencia Recursiva.\n - 'BBI' para Busca Binária Iterativa.\n - 'BBR' para Busca Binária Recursiva.";

/*******
*
* !Modifique para apontar para o endereço correto!
*
*******/
const string endereco_arquivo = ofstream fgrava(input.txt);

int main(int argc, const char * argv[]) {

if(argc != 2){
cout << msg_erro << endl;
return -1;
}

// Ponteiro para função de busca
int (*p_busca)(int, int[], int);

// Parâmetro que definirá qual função de busca será usada
const string opcao = argv[1];

int selecionou = seleciona_busca(opcao, &p_busca);

if(selecionou == INSUCESSO){
cout << "Parâmetro incorreto: " << opcao << " " << msg_erro << endl;
std::exit(-1);
}

int v[MAX];
ler_entrada(endereco_arquivo, v);

int tamanho = MAX;

cout << "Tamanho\tTempo" << endl;

while(tamanho > 0){
// inicio da medição
high_resolution_clock::time_point t1 = high_resolution_clock::now();

// sempre busca elemento que não existe
(*p_busca)(-1, v, tamanho);

// fim da medição
high_resolution_clock::time_point t2 = high_resolution_clock::now();

// duração da medição
long double duracao = duration(t2 - t1).count();

cout << tamanho << "\t" << duracao << endl;

tamanho = tamanho / 2;
}

return 0;
}

/**
* Função que implementa busca sequencial em sua versão iterativa. Não requer que o vetor de entrada esteja ordenado.
*
* @param chave - chave de busca
* @param vetor[] - vetor de inteiros onde a busca é realizada
* @param tamanho - tamanho do vetor
*
* @return índice, caso exista um elemento em vetor[] tal que chave == vetor[índice]. Caso contrário, -1.
*/
int busca_sequencial_ite(int chave, int vetor[], int tamanho){
// Inicializa posição de busca
int posicao = 0;

do{
// Verifica se encontrou elemento
if(chave == vetor[posicao]){
// Encontrou elemento
return posicao;
}

// Incrementa posição de busca
posicao = posicao + 1;
} while( posicao < tamanho );

// Não encontrou elemento
return -1;
}

int busca_sequencial_rec(int chave, int vetor[], int tamanho){
cout << "BSR: Ainda não foi implementado." << endl;
std::exit(-1);
}

int busca_binaria_rec(int chave, int vetor[], int tamanho){
// Não precisa modificar, documentar ou comentar esta função.
// Modifique, documente e comente a função busca_binaria_rec abaixo!
return busca_binaria_rec(chave, vetor, 0, tamanho-1);
}

int busca_binaria_rec(int chave, int vetor[], int esquerda, int direita){
cout << "BBR: Ainda não foi implementado." << endl;
std::exit(-1);
}

int busca_binaria_ite(int chave, int vetor[], int tamanho){
cout << "BBI: Ainda não foi implementado." << endl;
std::exit(-1);
}

void ler_entrada(const string endereco_arquivo, int vetor[]){
ifstream file(endereco_arquivo);

for( int i = 0; i < MAX; i++){
int x;
file >> x;
vetor[i] = x;
}

file.close();
}

int seleciona_busca(const string opcao, int(**p_busca)(int,int[],int)){
if( "BSI" == opcao ){
*p_busca = &busca_sequencial_ite;
return SUCESSO;
}
else if( "BSR" == opcao ){
*p_busca = &busca_sequencial_rec;
return SUCESSO;
}
else if( "BBI" == opcao ){
*p_busca = &busca_binaria_ite;
return SUCESSO;
}
else if( "BBR" == opcao ){
*p_busca = &busca_binaria_rec;
return SUCESSO;
}
else{
return INSUCESSO;
}
}


Qual o erro nesse codigo ? por favor me ajudem

Respostas

respondido por: fabio14044
0
Bem eu ainda não revi todos os erros mais posso te dizer que falta difinir as bibliotecas #include<?????>
Adiciona
Perguntas similares