elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ficheros C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ficheros C++  (Leído 5,242 veces)
harlequinz

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ficheros C++
« en: 3 Febrero 2011, 19:11 pm »

Hola, posteo poque ya no se que hacer...me he puesto a hacer este problema como indica en el codigo pero no me lee el fichero y nose porque puede ser, si algun alma caritativa le podria echar un vistazo al codigo se lo agradeceria ;)

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. /* - Se quiere informatizar la gestión de una fábrica. En dicha fábrica se construyen n tipos
  7. de componentes electrónicos que se venden a m empresas de montaje de ordenadores. La
  8. información de cada producto fabricado es su código (tipo int), precio (tipo double) y
  9. nombre (tipo string), dicha información se encuentra en un fichero llamado productos.txt.
  10. Para cada empresa compradora se almacena su nombre, dirección (ambas tipo string) y teléfono
  11. (tipo int), dicha información se encuentra en el fichero clientes.txt. Por otro lado se tiene
  12. almacenada la información sobre las ventas, el número de productos de cada tipo que le compran
  13. las diferentes empresas, fichero cantidades.txt. */
  14.  
  15. struct Producto {
  16. int codigo;
  17. double precio;
  18. string nombre;
  19. };
  20.  
  21. struct Cliente {
  22. string nombre;
  23. string direccion;
  24. int telefono;
  25. };
  26.  
  27. const int MAX=100;
  28.  
  29. /* - Módulo que lea desde el fichero productos.txt los datos de los productos
  30. y los devuelva en un array, que lea desde el fichero compradores.txt los datos
  31. de las empresas compradoras y los devuelva en un array y que lea desde el fichero
  32. cantidades.txt la cantidad de cada tipo de producto comprado por cada empresa y
  33. devuelva dicha información en una matriz de mxn donde cada fila representa una
  34. de las empresas compradoras y cada columna un tipo de producto. Las dimensiones m
  35. y n, se conocerán tras leer los primeros ficheros. El módulo debe también devolver
  36. un valor de tipo lógico indicando si las lecturas se han realizado con éxito o no. */
  37.  
  38.  
  39. bool leeFicheros (Producto v_prod[],int& m,Cliente v_compr[],int& n,int matrix[][MAX]){
  40.  
  41. ifstream entradaProductos ("productos.txt");
  42. ifstream entradaCompradores ("compradores.txt");
  43. ifstream entradaCantidades ("cantidades.txt");
  44.  
  45. if (!entradaProductos || !entradaCompradores || !entradaCantidades)
  46. return false;
  47. else {
  48.  
  49. m=0;
  50.  
  51. while (entradaProductos >> v_prod[m].codigo){
  52. entradaProductos >> v_prod[m].precio;
  53. getline(entradaProductos >> ws, v_prod[m].nombre);
  54. m++;
  55. }
  56.  
  57. n=0;
  58.  
  59. while (getline(entradaCompradores >>ws, v_compr[n].nombre)){
  60. getline(entradaCompradores >> ws, v_compr[n].direccion);
  61. entradaCompradores >> v_compr[n].telefono;
  62. n++;
  63. }
  64.  
  65. for (int i=0; i<m; i++)
  66. for (int j=0; j<n; j++)
  67. entradaCantidades >> matrix[i][j];
  68.  
  69. }return true;
  70. }
  71.  
  72.  
  73.  
  74.  
  75. int main(){
  76.  
  77. Producto v_prod[MAX];
  78. Cliente v_compr[MAX];
  79. int matrix[MAX][MAX];
  80. int m,n;
  81.  
  82. if (leeFicheros (v_prod,m,v_compr,n,matrix)){
  83. for (int i=0; i<0; i++)
  84. cout << "Registros leidos (productos.txt):\n"<< "Codigo: " << v_prod[i].codigo <<endl << "Precio: " << v_prod[i].precio << endl << "Nombre: "<< v_prod[i].nombre<<endl;
  85. }
  86.  
  87. else cout << "Error al abrir los archivos "<<endl;
  88.  
  89. }


En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Ficheros C++
« Respuesta #1 en: 3 Febrero 2011, 20:14 pm »

Donde tienes creados los ficheros?

Código
  1. while (entradaProductos >> v_prod[m].codigo){
  2. entradaProductos >> v_prod[m].precio;
  3. getline(entradaProductos >> ws, v_prod[m].nombre);
  4. m++;
  5. }
  6.  
podrias usar algo asi:
Código
  1. while (!entradaproductos.eof()){
  2.                        entradaProductos >> v_prod[m].codigo
  3. entradaProductos >> v_prod[m].precio;
  4. getline(entradaProductos >> ws, v_prod[m].nombre);
  5. m++;
  6. }
  7.  

Eso esta bien? en la condicion del while has puesto una entrada de archivos, te compila asi?


« Última modificación: 3 Febrero 2011, 20:19 pm por Oblivi0n » En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Ficheros C++
« Respuesta #2 en: 3 Febrero 2011, 20:15 pm »

Tendrian q estar en la misma carpeta donde esta el proyecto no?
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Ficheros C++
« Respuesta #3 en: 3 Febrero 2011, 22:00 pm »

Tendrian q estar en la misma carpeta donde esta el proyecto no?

Segun lo tiene el definido si, pero obviamente ai formas de abrirlo en cualquier lado del hd

Sus fallos creo que estan en las condificiones de los bucles
En línea

harlequinz

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ficheros C++
« Respuesta #4 en: 4 Febrero 2011, 00:04 am »

Gracias Oblivion por contestarme, pero el fallo creo que no esta en la condicion del while, ya que he hecho lecturas de ficheros en otras ocasiones y no me a dado problema, lo que pretende esa condicion es que mientras peda leer el primer string por ejemplo que lea el resto, de todas formas e provado lo de .eof() aunque ya compruebo la apertura de los ficheros al principio y sigue sin irme :S

Nose si puede ser del formato del archivo...ya que programo en Mac OS y tene un formato .txt pero no tendria k dar problema...nuse que pede ser

un saludo! ;)
« Última modificación: 4 Febrero 2011, 00:06 am por harlequinz » En línea

darkvidhack

Desconectado Desconectado

Mensajes: 159


Be Linux my friend...


Ver Perfil WWW
Re: Ficheros C++
« Respuesta #5 en: 4 Febrero 2011, 18:23 pm »

Hola, he mirado por encima el código y no hay ningun fallo aparente, puede ser poque no tengas bien los nombres de los ficheros en la carpeta del proyecto o algo por el estilo, ya que si te devuelve que no se pueden leer los ficheros, es porque alguno de ellos no se ha podido abrir, prueba a ir leyendo y mostrando lo que lees, pero en una función void sin return, para ver lo que se lee y lo que no, y así intentar localizar el fallo.

A todo esto, he hecho un ejercicio exactamente igual, pero con mas funciones, en un examen de practicas de mi universidad, de dónde lo has sacado si no te importa decirlo?

Un saludo ;)
En línea

live and let die

la duda es la base de todo conocimiento
3mp3z@ndo

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: Ficheros C++
« Respuesta #6 en: 4 Febrero 2011, 20:29 pm »

Código
  1. if (leeFicheros (v_prod,m,v_compr,n,matrix)){
  2. for (int i=0; i<0; i++)   // <----- DIRIA QUE EL FALLO LO TIENES AQUI
  3. cout << "Registros leidos (productos.txt):\n"<< "Codigo: " << v_prod[i].codigo <<endl << "Precio: " << v_prod[i].precio << endl << "Nombre: "<< v_prod[i].nombre<<endl;
  4. }

Creo que en ese for que te he marcado está el problema, la condición nunca se cumple
ya que i no es menor que 0 por lo que si no me equivoco al no ser verdadera la condicion finalizaria la sentencia for y su codigo no se ejecutaria.

Saludos
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Ficheros C++
« Respuesta #7 en: 4 Febrero 2011, 21:55 pm »

Código
  1. if (leeFicheros (v_prod,m,v_compr,n,matrix)){
  2. for (int i=0; i<0; i++)   // <----- DIRIA QUE EL FALLO LO TIENES AQUI
  3. cout << "Registros leidos (productos.txt):\n"<< "Codigo: " << v_prod[i].codigo <<endl << "Precio: " << v_prod[i].precio << endl << "Nombre: "<< v_prod[i].nombre<<endl;
  4. }

No he leido el resto del code, pero te recuerdo que el if se hace si el resultado es 1... Y si en vez de true y false pones lo que es? Si no, borra partes del code, hasta reducirlo y saber donde te falla. Prueba a ver si con el mismo code puedes abrir un archivo y escribir algo... Asi sabras donde esta el fallo :P
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Ficheros C++
« Respuesta #8 en: 4 Febrero 2011, 22:13 pm »

Sagrini creo q ya encontraron el fallo y lo dijieron, y lo del if no entiendo porq dices q haga eso :S
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Ficheros C++
« Respuesta #9 en: 4 Febrero 2011, 22:20 pm »

Sagrini creo q ya encontraron el fallo y lo dijieron, y lo del if no entiendo porq dices q haga eso :S
Costumbre. Su code me confunde :P si que me duermo...

Gracias Oblivion por contestarme, pero el fallo creo que no esta en la condicion del while, ya que he hecho lecturas de ficheros en otras ocasiones y no me a dado problema, lo que pretende esa condicion es que mientras peda leer el primer string por ejemplo que lea el resto, de todas formas e provado lo de .eof() aunque ya compruebo la apertura de los ficheros al principio y sigue sin irme :S

Nose si puede ser del formato del archivo...ya que programo en Mac OS y tene un formato .txt pero no tendria k dar problema...nuse que pede ser
¿Seguro que se ha resuelto? Me has dicho dos veces que estoy dormido, falta de lectura; creo...
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ver ficheros *vbs
Programación Visual Basic
programatrix 4 1,786 Último mensaje 24 Junio 2005, 18:00 pm
por Pseudoroot
Ficheros ACT « 1 2 »
Multimedia
pisagatos 12 8,111 Último mensaje 2 Mayo 2006, 23:54 pm
por Sourraund
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines