Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con búsqueda en ficheros

Estas en el tema de Ayuda con búsqueda en ficheros en el foro de C/C++ en Foros del Web. Hola, he aprendido mucho desde la sombra durante meses en este foro con vuestras respuestas. Ahora me he tenido que registrar a causa de una ...
  #1 (permalink)  
Antiguo 02/01/2011, 10:15
 
Fecha de Ingreso: enero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Ayuda con búsqueda en ficheros

Hola, he aprendido mucho desde la sombra durante meses en este foro con vuestras respuestas.
Ahora me he tenido que registrar a causa de una piedra que no consigo quitar de mi camino.
Estoy realizando un programa en c++ y tengo un problema donde no doy con la solución.

Se trata de leer un fichero txt y escribir en él, guardando los datos y mediante un menú acceder a listar e introducir datos, hasta aquí todo bien y funcionando. El problema es crear un bucle para buscar una palabra introducida por teclado (esta palabra tiene que encontrarse en el fichero) y lo más gordo es que hay que imprimir por pantalla la linea inferior de la palabra, que en este caso es una cifra y no el nombre que se ha buscado. Me explico mejor...

el fichero txt. tiene que tener este orden:

producto1
cantidad 1

producto2
cantidad2

....

A este fichero se accede perfectamente con un menú, mostrando el contenido por pantalla y con la opción de ingresar datos, todo funciona bien.

Ahora necesito otra opción dentro de switch, buscar mediante una palabra la cantidad de ese producto.

Los datos se almacenan en dos vectores y se escriben correctamente.
Sería, fichero[datos].producto y fichero[datos]cantidad.

Tengo realizado hasta aquí dentro de la opción de case correspondiente....

Código C++:
Ver original
  1. char nombre;
  2. cout<<"Introduce el nombre del producto que desea conocer la cantidad"<<endl;
  3. cin>>nombre;
  4. Leer.open("fichero.txt"); // abro para leer el fichero
  5. if (!Leer)
  6. cout<<"El archivo no se pudo abrir!";
  7. else
  8. {
  9. while(!Leer.eof()&& datos<contador)//bucle para leer el fichero
  10. {
  11. getline(Leer,fichero[datos].producto);
  12. Leer>>fichero[datos].cantidad;
  13. Leer.ignore();
  14. n_datos++;
  15. }
  16.  
  17. // aquí debería de ir el código para buscar la palabra e imprimir por
  18. // pantalla la linea siguiente que muestra la cantidad de producto.
  19.  
  20. Leer.close();

Gracias y feliz año nuevo.

Última edición por jose_val; 03/01/2011 a las 03:17
  #2 (permalink)  
Antiguo 03/01/2011, 09:08
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Ayuda con búsqueda en ficheros

lo primero es crear un bucle for que recorra el array de estructuras, es decir que se repita tantas veces como estructuras haya.

dentro del bucle, meter un "if" para comparar el producto introducido con los que hay almacenados.


Código C:
Ver original
  1. for(i=0;i<n;i++)
  2. {
  3.      if(strcmp(nombre, fichero[i].producto) == 0)
  4.          {
  5.               cout << "=> " << fichero[i].cantidad << endl;
  6.               break;
  7.          }
  8.              
  9. }

seria mas o menos asi, aunque faltaria añadir que si no encuentra nada imprima un mensaje diciendolo.

por ultimo decir que strcmp() es una funcion para comparar cadenas de caracteres que si son iguales devuelve un 0 (por eso lo comparo con el 0)
es una funcion de C, por lo que si quieres usar solo c++ tendras que buscar la funcion equivalente
  #3 (permalink)  
Antiguo 03/01/2011, 16:47
 
Fecha de Ingreso: enero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Ayuda con búsqueda en ficheros

Gracias, ahora solo necesito encontrar una función que sustituya " strcmp" y que funcione el código.

Cuando tenga esta opción de código desarrollada, la postearé para que veas el resultado.

Saludos
  #4 (permalink)  
Antiguo 03/01/2011, 17:12
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Ayuda con búsqueda en ficheros

poruqe necesitas una funcion que sustituya strcmp?? Es una funcion standar de C. Agrega string.h en los includes.

Etiquetas: ficheros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:04.