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

Dudas prgramación en c++ matrices... y de todo un poco

Estas en el tema de Dudas prgramación en c++ matrices... y de todo un poco en el foro de C/C++ en Foros del Web. Hola muy buenas foro, me presento. Soy Rubén y soy principiante en el mundo de c y c++ y tengo una cuantas dudas que no ...
  #1 (permalink)  
Antiguo 26/12/2011, 09:25
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Dudas prgramación en c++ matrices... y de todo un poco

Hola muy buenas foro, me presento. Soy Rubén y soy principiante en el mundo de c y c++ y tengo una cuantas dudas que no consigo resolver y después de visitar muchas webs y foros me he decido por abrir un tema aquí a ver si puedo aclararme un poco y ya de paso que sirva para mas gente como yo que tenga este tipo de dudas.

Bueno empiezo comentando el programa que estoy haciendo e iré comentando las dudas que tengo.

Estoy haciendo un proyecto en visual 2010 de c++ el programa que estoy haciendo como practica es sobre un avión, dicho avión tiene sus asientos que serán ocupados por pasajeros, el avión tiene 2 zonas, primera clase y clase turista, y los pasajeros se dividen en dos tipos, menores y mayores de edad.

El proyecto lo estoy dividiendo en 3 archivos:

Pasajeros.h en donde implementaré una clase Pasajero y dos clases mas Adulto y Niño que heredarán de Pasajero

Avión.h donde implementare los asientos

Y por ultimo Main.cpp donde realizare las pruebas

Bueno estoy empezando implementando el avión, como ya he dicho mis conocimientos de programación no soy muy altos, para empezar he decidido comenzar de la manera mas simple, para ello cree un pequeño programa en c++ donde creo una matriz de un tamaño fijo que representan los asientos de un avión, dicha matriz es de tipo int y la inicializo a 0 y la muestro por pantalla, este es el código del pequeño programa:

Código C++:
Ver original
  1. #include <iostream>
  2. #define FILAS 5
  3. #define COLUMNAS 4
  4.  
  5. using namespace std;
  6.  
  7. void mostrar(int asientos[FILAS][COLUMNAS]);
  8.  
  9. int main(){
  10.     int asientos[FILAS][COLUMNAS]={0};
  11.     mostrar(asientos);
  12. }
  13.  
  14. void mostrar(int a[FILAS][COLUMNAS]){
  15.     int i,j;
  16.     for(i=0;i<FILAS;i++){
  17.         cout<<"\n";
  18.         for(j=0;j<COLUMNAS;j++){
  19.             cout<<a[i][j];
  20.         }
  21.     }
  22. }

hasta aqui todo parece ir bien, mi primera duda me surge a la hora de "separarlo", es decir en este primer programa este todo junto pero quiero hacerlo como lo explique al principio con Avion.c y Main.cpp pro claro estoy algo perdido ya que lo he intentado y por ahora la única manera que encuentro de obtener un resultado parecido al de antes es esta:

Este es el archivo Main.cpp

Código C++:
Ver original
  1. #include "Pasajeros.h";
  2. #include "Avion.h";
  3. #define FILAS 20
  4. #define COLUMNAS 6
  5.  
  6. using namespace std;
  7.  
  8. void mostrar(int a[FILAS][COLUMNAS]){
  9.     int i,j;
  10.               cout<<"\n\nAvion:";
  11.     for(i=0;i<FILAS;i++){
  12.         cout<<"\n";
  13.         for(j=0;j<COLUMNAS;j++){
  14.             cout<<a[i][j];
  15.         }
  16.     }
  17. }
  18.  
  19. int main(){
  20.     int asientos[FILAS][COLUMNAS];
  21.     mostrar(asientos);
  22.     return 0;
  23. }

Y este Avion.h
Código C++:
Ver original
  1. #ifndef _Avion_
  2. #define _Avion_
  3. #include <iostream>
  4. #define FILAS 6
  5. #define COLUMNAS 4
  6.  
  7. using namespace std;
  8.  
  9. class Avion{
  10.    
  11. public:
  12.    
  13. };
  14. #endif

Como podéis ver en Avion.h no tengo hecho nada, ya que si creo la matriz ahí no se como puedo mostrarla luego desde Main.cpp.

¿Esta bien hecho así?, ¿como puedo crear la matriz en Avion.h? También y no se muy bien por que... en el primer programa muestro la matriz correctamente todo con 0 pero cuando lo hago en el 2º proyecto la matriz me muestra el valor -858993406 en todas sus filas y columnas, ¿Estos son direcciones de memoria?

Bueno espero alguna respuesta y a ver si voy aprendiendo algo mas, voy a seguir con ello, hasta luego foro
  #2 (permalink)  
Antiguo 26/12/2011, 10:37
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: Dudas prgramación en c++ matrices... y de todo un poco

No estás aplicando correctamente los principios de la OO (Orientación a objetos).

La matriz asientos debería ser un atributo de la clase Avion y no una variable externa.

Pensando en OO, tenemos un objeto Avión, que está compuesto por asientos (por eso es un atributo).

Es decir, tendrías divididos así los ficheros:

Avion.h

Código C++:
Ver original
  1. #ifndef _Avion_
  2. #define _Avion_
  3. #include <iostream>
  4. #define FILAS 6
  5. #define COLUMNAS 4
  6.  
  7. using namespace std;
  8.  
  9. class Avion{
  10.    
  11. public: void mostrar();
  12.  
  13. private:
  14. int asientos[FILAS][COLUMNAS];
  15.    
  16. };
  17. #endif

Avion.c

Código C++:
Ver original
  1. #include "Avion.h";
  2.  
  3. Avion::Avion(){
  4.  
  5. for(i=0;i<FILAS;i++){
  6.         cout<<"\n";
  7.         for(j=0;j<COLUMNAS;j++){
  8.            asientos[i][j] = 0;
  9.         }
  10.     }
  11. }
  12. void Avion::mostrar(){
  13.     int i,j;
  14.     for(i=0;i<FILAS;i++){
  15.         cout<<"\n";
  16.         for(j=0;j<COLUMNAS;j++){
  17.             cout<<asientos[i][j];
  18.         }
  19.     }
  20. }

Main.cpp

Código C++:
Ver original
  1. #include "Avion.h";
  2.  
  3. int main(){
  4.  
  5. Avion unAvion;
  6. unAvion.mostrar();
  7. }
  #3 (permalink)  
Antiguo 27/12/2011, 08:39
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: Dudas prgramación en c++ matrices... y de todo un poco

Ok ya lo entiendo, Muchas gracias,

Voy con ello.
  #4 (permalink)  
Antiguo 30/12/2011, 02:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: Dudas prgramación en c++ matrices... y de todo un poco

Buenos días,

en mi opinión, la matriz de los asientos (que es la idea correcta de representar los asientos del avión), no debería ser de tipo entero, si no una matriz de punteros a tipo pasajero. Así, si necesitas acceder a los datos de un pasajero, sólo tendrás que buscar en la matriz el asiento correspondiente y tendrás sus datos. A la hora de buscar a algún pasajero, también será relativamente fácil, porque será cuestión de recorrer la matriz y de comprobar, por ejemplo el nombre, en cada uno de los asientos hasta que lo encuentres.

También podrías hacer dos matrices: una para los pasajeros que van en primera clase y otra para los que van en clase turista.

Un saludo,
gonzo.

Etiquetas: clase, dudas, matrices, poco, programa, proyecto, todo
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 17:01.