<file_sep>#ifndef _vector_h
#define _vector_h

#include <iostream>
#include <array>    // Se necesita activar C++11

using namespace std;

//DECLARACIONES:

struct Vector {														//Tipo de Dato Vector
	array<int,100> lista;
	unsigned top;
};

void cargar_datos(Vector &par_vector);															//Carga los datos
void mostrar_vector(Vector &par_vector);
void buscar(const Vector &par_vector,const int &par_dato,const unsigned &par_tipo);
void busqueda_secuencial(const Vector &par_vector,const int &par_dato);
void busqueda_binaria(const Vector &par_vector,const int &par_dato);

#endif
<file_sep>#include <iostream>
#include <array>
#include "vector.h"

/* Trabajo Practico N15 - BUSQUEDA

REQUISITO:
Se necesita probar los diferentes tipos de busqueda:
- 1. Secuencial.
- 2. Binaria.

PRE-CONDICIONES:
El usuario no ingresa nada, el vector esta previamente cargado
por codigo.
El usuario solo debe ver si se busco correctamente.

MATERIA:
Algoritmos y Estructura de Datos

INTEGRANTES:
<NAME>
<NAME>
<NAME>
<NAME>

*/
using namespace std;

int main(int argc, char** argv) {
	//Declaraciones
	Vector var_vector;
	int var_dato = 63;
	
	cargar_datos(var_vector);
	cout<<"Lista:"<<endl;
	mostrar_vector(var_vector);
	
	//Desarrollo
	for (unsigned i = 1; i <= 2; i++){
		cout<<"Dato a buscar: "<<var_dato<<endl;
		buscar(var_vector,var_dato,i);
	}
	
	return 0;
}
<file_sep>#include "vector.h"

//Definiciones

void cargar_datos(Vector &par_vector){								//Carga los datos
	par_vector.lista = {13,21,33,45,54,63,75,88,91};
	par_vector.top = 9;
}

void mostrar_vector(Vector &par_vector){
	for (int i = 0; i < par_vector.top; i++){
		cout<<par_vector.lista.at(i)<<";";
	}
	cout<<endl<<endl;
}

void buscar(const Vector &par_vector,const int &par_dato,const unsigned &par_tipo){
	switch (par_tipo){
		case 1:
			busqueda_secuencial(par_vector,par_dato);
			break;
		case 2:
			busqueda_binaria(par_vector,par_dato);
			break;
	}
}

void busqueda_secuencial(const Vector &par_vector,const int &par_dato){
	cout<<"Buqueda Secuencial: "<<endl;
	int i;
	
	for(i=0; (i<par_vector.top)&&(par_vector.lista.at(i)!=par_dato); i++){
		
	}
	
	cout<<"Posicion: "<<i<<endl<<endl;
}

void busqueda_binaria(const Vector &par_vector,const int &par_dato){
	int ini = 0;
	int fin = par_vector.top;
	int mitad = (ini+fin) / 2;
	int s=-1;
	
	while(ini>=0 && ini<=fin && fin<=par_vector.top && s==-1){
		if (par_vector.lista.at(mitad)<par_dato){
			ini=mitad+1;
			mitad=(ini+fin)/2;
		}
		else{
			if(par_vector.lista.at(mitad)==par_dato){
				s=mitad;
			}
			else{
				fin=mitad-1;
				mitad=(ini+fin)/2;
			}
		}
	}
	
	cout<<"Busqueda Binaria: "<<endl;
	cout<<"Esta en la posicion: "<<s<<endl;
}
