#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
Soluções para a tarefa
Respondido por
0
Bem eu ainda não revi todos os erros mais posso te dizer que falta difinir as bibliotecas #include<?????>
Adiciona
Adiciona
Perguntas interessantes
Administração,
8 meses atrás
Direito,
8 meses atrás
História,
8 meses atrás
Geografia,
1 ano atrás
Português,
1 ano atrás
Biologia,
1 ano atrás
Matemática,
1 ano atrás
Administração,
1 ano atrás