SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: pacorubio77 en Jueves 9 de Abril de 2009, 21:34
-
Hola,espero saber explicarme y que alguien me ayude con el algoritmo a realizar.
Tengo una estructura Tcancion que tiene los siguiente campos
struct Tcancion{
string autor;
string titulo;
string album;
int valoracion;
string url;
string imagen;
};
Tendre fichero que en cada linea tendré dichos datos de la cancion, y en ese fichero habrá canciones.
Vale,pero habrá una opcion que se llame Buscar que nos pedirá la busqueda desde teclado y por teclado puede meter lo siguiente:
autor="Juan" y titulo="Hola a todos" o autor="Felipe" ->esto es lo que se meterá por teclado
Es decir buscará la cancion cuyo autor sea Juan y titulo Hola a todos O buscará la cancion cuyo autor sea Felipe, estoy buscando la idea principal de realizar el algoritmo.Pero no tengo una idea clara.
Repito que quiero que me ayudeis en la idea, NO PIDO CODIGO ....sino la idea principal a seguir.
Muchas Gracias.
Espero Ayuda.
-
Pues pides mas o menos una base de datos, quizas una forma sencilla de implementar sea usando indices.
Tienes el fichero de datos desordenado, luego creas indices ordenados por un campo (lo que hace que la busqueda sea mas sencilla) y la linea (registro) del fichero
de datos principal que le corresponde.
Ej
Fichero datos
Felipe|Hola a todos|...
Alberto|Adios a todos|...
Carlos|nada mas|....
Indice de autor
Alberto|2
Carlos|3
Felipe|1
De esta forma puedes ir anidando la consulta.
-
Que tal. Lo de usar indices es la idea mas eficiente, creo yo tambien. No se si sabes algo sobre estructuras de bases de datos, cosas como arboles b y b+, tablas de hash, gridfiles, etc, entre los cuales estan incluidos los indices, que son los mas basicos para buscar registros en un archivo. Pero solo te hablo de esto si conoces estas estrcucturas, sino simplemente haz caso a los indices.
Lo que se suele hacer a veces es utilizar una clase para buscar. Por ejemplo, esto se hace en java para ordenar registros por varios campos. Podrias usarlo tambien para buscar.
La idea basica seria crear una clase busqueda o buscar con los parametros necesarios para buscar y un parametro de "tipo busqueda" como sigue:
class busqueda{
string campo //campo de busqueda por ejemplo, el titulo, por decir alguno.
.... //otros parametros que quiza se requieran dentro de la clase.
busqueda siguiente //este contendra el siguiente campo de busqueda, si es que el titulo no esta especificado.
Bueno, no me extiendo mas porque quiza no te interese esta idea, sin embargo es algo tambien eficiente y con costo muy bajo. Cualquier cosa me preguntas y te digo mas detalles si esto te interesa. Suerte.
-
No es tan complicado, no es nada de base de datos...yo tengo tanto fichero de texto como fichero binario....y el criterio de busqueda lo tengo que meter por teclado...al tener fichero de texto y fichero binario...no es necesario nada de base de datos..ya que en dichos ficheros tengo los datos...es decir yo leo de un fichero y lo almaceno en un NODO,,,para luego para cada cancion que vaya leyendo formar una lista de punteros..teniendo en cada nodo una cancion...
Pero mi dificultad está en la filtracion del criterio de busqueda...
Espero haberme explicado bien...
Un saludo,espero respuesta.
Gracias.
-
no es nada de base de datos
Pues sí que lo es. Es decir, no es nada de bases de datos avanzadas como MySQL, pero tú pretendes crear una base de datos sencillota en un fichero.
Pero mi dificultad está en la filtracion del criterio de busqueda...
Lees las estructuras y comparas los campos con los pedidos. No veo dónde radica la dificultad...
-
Es dificil entender el problema..de todas formas muchas gracias por la ayuda.
Muchas gracias.
-
A lo mejor si publicas algo de cómo lo tienes hecho hasta ahora sería más sencillo el explicártelo.
-
es que la cuestion es que estoy ahora comtemplando como hacer dicho algoritmo..eso es una parte de una practica..y una es buscar segun un criterio de busqueda, y todas las canciones las tengo en una lista,compuesta por nodos,cada nodo es una cancion.
mi problema es que yo meto para buscar
autor="julian" y album="entre dos aguilas" o titulo="albacete" ,entonces tiene que sacarme las canciones que tengan esos campos, es decir me tendrá que sacar las canciones que tenga autor julian y album entre dos aguilas o las que tengas de titulo albacete...
es decir tengo que separa las Y's de las O's? eso no se como comtemplarlo.....
No se si ahora me he explicado bien...
-
Vale, es decir que se deben contemplar expresiones regulares sencillas en las búsquedas. Aunque en tu ejemplo no queda claro si pretendes (autor="julian" && album="entre dos aguilas") || titulo="albacete" o bien autor="julian" && (album="entre dos aguilas" || titulo="albacete"), que no es lo mismo. Esto también lo debes contemplar.
Te aconsejo que comiences haciendo el algoritmo sólo para la Y y después ampliarlo para que acepte O.