Hola nolasco, acabo de revisar tu código. En rasgos generales, pero tienes como un pequeño problema de organización. Fíjate que estás guardando la cantidad de camiones como un miembro de cada objeto (o "instancia") de la clase Camion. Eso es absurdo. Imagínate que creas un primer objeto Camion, entonces su campo cantidadDeCamiones tiene el valor de 1, porque hasta el momento has creado un solito objeto de dicha clase.
Ahora creas otro camión. El primero tiene el campo cantidadDeCamiones = 1, el segundo tiene cantidadDeCamiones = 2, porque (a menos que yo haya leído mal el código) tú no actualizas el campo cantidadDeCamiones en cada uno de los objetos anteriormente creados de la clase Camion (¿verdad?). Y creo que precisamente por eso es que te imprime uno solo, porque la primera instancia creada tiene el valor cantidad de camiones en "1".
En todo caso, hacer esto de esa manera tampoco sería lo ideal. Yo te recomendaría definir una clase aparte listaCamiones con dos únicos campos: Uno un arreglo de camiones y otro un entero indicando la cantidad de camiones creados hasta el momento:
La constante MAXIMO (que tú quieres sea 100) yo te recomiendo la definas como una macro de cabecera:
ya que es un valor que se supone debe permanecer constante durante todo el programa (si la pones como variable int, ¿te imaginas qué pasaría si por error cambias su valor durante el programa?)
Los métodos ingresarCamion(), flistaDeCamiones(), imprimir(), buscarCamion(int), modificarCamion(), eliminarCamion() serían de la clase listaCamiones, y no de la clase individual Camion (¿vas captando la idea?). Al añadir un nuevo camión puedes hacer algo como esto:
Ahora debes definir la función de imprimir lista como un método de la clase listaCamiones, y ya debería imprimir todos los camiones.
En fin, sólo hace falta una pequeña reingeniería del software (mover unas cosas de aquí para allá) y debería estar funcionando bien.
Saludos, y cualquier cosa comenta, ....
Yoel.
Ahora creas otro camión. El primero tiene el campo cantidadDeCamiones = 1, el segundo tiene cantidadDeCamiones = 2, porque (a menos que yo haya leído mal el código) tú no actualizas el campo cantidadDeCamiones en cada uno de los objetos anteriormente creados de la clase Camion (¿verdad?). Y creo que precisamente por eso es que te imprime uno solo, porque la primera instancia creada tiene el valor cantidad de camiones en "1".
En todo caso, hacer esto de esa manera tampoco sería lo ideal. Yo te recomendaría definir una clase aparte listaCamiones con dos únicos campos: Uno un arreglo de camiones y otro un entero indicando la cantidad de camiones creados hasta el momento:
Código [Seleccionar]
class listaCamiones {
public:
Camion Camiones[ MAXIMO ];
int N_Camiones;
}
La constante MAXIMO (que tú quieres sea 100) yo te recomiendo la definas como una macro de cabecera:
Código [Seleccionar]
#define MAXIMO 100
ya que es un valor que se supone debe permanecer constante durante todo el programa (si la pones como variable int, ¿te imaginas qué pasaría si por error cambias su valor durante el programa?)
Los métodos ingresarCamion(), flistaDeCamiones(), imprimir(), buscarCamion(int), modificarCamion(), eliminarCamion() serían de la clase listaCamiones, y no de la clase individual Camion (¿vas captando la idea?). Al añadir un nuevo camión puedes hacer algo como esto:
Código [Seleccionar]
void listaCamiones :: ingresarCamion( ) {
/* aquí pides los datos para el nuevo camión */
/* creas una instancia de Camion */
Camion new_Camion = new Camion( idCamion, cilindrajeCamion,
nPuertasCamion, anioCamion,
precioCamion, marcaCamion,
modeloCamion,colorCamion);
/* y la añades al arreglo, actualizando el contador */
Camiones[ N_Camiones++ ] = new_Camion;
}
Ahora debes definir la función de imprimir lista como un método de la clase listaCamiones, y ya debería imprimir todos los camiones.
En fin, sólo hace falta una pequeña reingeniería del software (mover unas cosas de aquí para allá) y debería estar funcionando bien.
Saludos, y cualquier cosa comenta, ....
