Hola! estoy tratando de implementar una búsqueda lineal simple más que nada para experimentar con el lenguaje (vengo de Java).
El problema es que deseo que la plantilla busquedaLineal(T[], T) sepa automáticamente el largo del arreglo, para eso divido el espacio de memoria del arreglo con el espacio de cada uno de sus elementos "sizeof(arreglo)/sizeof(valor)", pero allí está el problema, se agradece cualquier ayuda
Código C++:
Ver original#include <cstdlib>
#include <iostream>
using namespace std;
template <class T> int busquedaLineal(T[], T);
template <class T> int busquedaLineal(T[], T, int, int);
int main(int argc, char *argv[])
{
int arreglo[15] = {25,17,13,16,41,32,12,115,95,84,54,63,78,21,10};
cout<<"\nIndique el valor a buscar:\t";
int a;
cin>>a;
cout<<"\nEse valor está en: "<< busquedaLineal(arreglo, a);
return EXIT_SUCCESS;
}
template <class T> int busquedaLineal(T arreglo[], T valor, int desde, int hasta) {
for(int i = desde; i < hasta; i++)
{
if(arreglo[i] == valor) return i;
}
return -1;
}
template <class T> int busquedaLineal(T arreglo[], T valor) {
int hasta = sizeof(arreglo)/sizeof(valor);
return busquedaLineal(arreglo, valor, 0, hasta);
}