• Viernes 8 de Noviembre de 2024, 20:35

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Luis_Gomez

Páginas: [1]
1
C/C++ / Re: Algo como clrscr o system("cls") que me sirva para win y Lin
« en: Jueves 12 de Noviembre de 2009, 09:28 »
En MS-DOS se usa cls para limpiar la pantalla.
En Linux, si mal recuerdo, se usa clear.

¿Podría usarse la instrucción system("clear") para ese fin?

2
C/C++ / Re: Pregunta con void y enlazar 2 vectores
« en: Jueves 12 de Noviembre de 2009, 09:23 »
Hola jimgom,

Para manejar tantas variables, es decir, variables que van de 1 a 5, o de 1 a 20, lo mejor que se me ocurre es usar vectores. Por ejemplo, para declarar una variable que sea un vector de enteros, usamos:

Código: Text
  1.  
  2.     int nota[3];
  3.  
  4.  

De este modo tenemos, en la misma variable, las tres notas de un alumno.

Además de esto, podemos declarar variables personalizadas, a modo de registros, que contienen variables simples (u otras variables personalizadas), como por ejemplo:

Código: Text
  1.  
  2. struct TEstudiante{
  3.     char nombre[30];
  4.     int nota[4];
  5. };
  6.  
  7.  


Utilizando esta idea, se me ocurre un pequeño programa que te podría ser de gran ayuda para conseguir realizar tu propósito:

Código: Text
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. enum { MAX_ESTUDIANTES = 10 };
  6.  
  7. struct TEstudiante{
  8.     char nombre[30];
  9.     int nota[4];
  10. };
  11.  
  12. int main(){
  13.     TEstudiante estudiante[MAX_ESTUDIANTES];
  14.    
  15.     for(int i = 0; i < MAX_ESTUDIANTES; i++){
  16.         cout << "Estudiante n. " << i+1 << ":" << endl;
  17.         cout << "Nombre? ";
  18.         cin >> estudiante[i].nombre;
  19.         cout << "Nota 1? ";
  20.         cin >> estudiante[i].nota[0];
  21.         cout << "Nota 2? ";
  22.         cin >> estudiante[i].nota[10];
  23.         cout << "Nota 3? ";
  24.         cin >> estudiante[i].nota[2];
  25.         cout << "Nota 4? ";
  26.         cin >> estudiante[i].nota[3];
  27.         cout << endl;
  28.     }
  29. }
  30.  
  31.  

El código anterior crea una estructura (una variable personalizada, que llamo yo) con el nombre y las notas de un alumno. Esa misma variable personalizada la convierte en un vector, así podrá contener el nombre y las notas de varios alumnos.

Espero que sea un ejemplo muy sencillo y comprensible.

3
C/C++ / Re: necesito que alguien me explique conceptos ,POO
« en: Jueves 12 de Noviembre de 2009, 03:02 »
Hola pacorubio77,

Creo que puedo aclarar estas dudas que tienes.

En el constructor por copia, pasamos el parámetro por referencia. Lo del bucle infinito me ha dejado un poco perplejo, pero ante estas situaciones lo mejor es preguntarse cómo queremos usar las variables. Cuando se pasa un parámetro por referencia (al contrario de cuando lo hacemos por valor) no creamos ninguna copia de ese elemento. Eso está bien, porque lo que queremos es usar ese elemento original para asignar sus valores a la nueva variable que estamos creando con el constructor por copia.

Con un ejemplo se verá mucho mejor:

Código: Text
  1.  
  2. class Punto{
  3. public:
  4.     Punto(const Punto& p){ _x = p._x; _y = p._y; }
  5.     (...)
  6. private:
  7.     double _x, _y;
  8. };
  9.  
  10.  

¿Se entiende esto bien?

El uso de la palabra reservada const está recomendado en las ocasiones en las que sepamos a ciencia cierta que no se van a modificar las variables. Es más, yo cuando hago un método que sólo va a mostrar cosas por pantalla, le pongo al final const, porque sé que no va a modificar ninguna variable. Es una buena costumbre, así, con leer la cabecera del método vemos claramente que no va a hacer ningún cambio en ninguna variable.

Por ejemplo, métodos que suelo usar yo con la palabra const al final:

Código: Text
  1.  
  2. void EscribirMenu() const{
  3.     cout << "MENU PRINCIPAL" << endl;
  4.     cout << "1. Ver vector" << endl;
  5.     cout << "2. Ordenar vector" << endl;
  6.     cout << "0. Salir" << endl;
  7. }
  8.  
  9.  

Como no modifica nada, le digo que es un método const.

Nota: las funciones y los procedimientos de la Programación Estructurada se llaman métodos en Programación Orientada a Objetos.  

Espero haber ayudado con lo poco que sé.


Saludos.

4
C/C++ / Problema al acceder a un atributo privado de una clase
« en: Jueves 12 de Noviembre de 2009, 02:11 »
Hola,

Estoy intentando crear un programa que consiste en una lista de equipos de fútbol, cada cual contiene una lista de jugadores. Cuando la aplicación se inicie, además de crearse todas las variables, se rellenarán con datos definidos en el mismo código.

Para ello he creado dos clases:

Código: Text
  1.  
  2. class Jugador{
  3. public:
  4. (...)
  5. private:
  6.     string _nombre;
  7.     int _valor;
  8. };
  9.  
  10.  

Código: Text
  1.  
  2. class Equipo{
  3. public:
  4. (...)
  5. private:
  6.     string _nombre;
  7.     Jugador _jugador[12];
  8. };
  9.  
  10.  


El problema aparece cuando, en el fichero main.cpp, y después de declarar las variables que voy a usar, quiero comenzar a rellenarlas con datos.

Al rellenar las variables Equipo no hay problema:

Código: Text
  1.  
  2. enum { MAX_EQUIPOS = 8 };
  3.  
  4. int main(){
  5.     Equipo eq[MAX_EQUIPOS];
  6.     eq[0].nombre("Informatica");
  7.     eq[1].nombre("Telecomunicaciones");
  8.     eq[2].nombre("Derecho");
  9. (...)
  10. }
  11.  
  12.  

Pero cuando quiero rellenar la información de los jugadores, al usar este código obtengo un error de acceso prohibido a un miembro privado:

Código: Text
  1.  
  2. (...)
  3.     eq[0]._jugador[0].nombre("Luis Gamusino");
  4.     eq[0]._jugador[1].nombre("Borja Lobaton");
  5.     eq[0]._jugador[2].nombre("Fernando Alpargata");
  6. (...)
  7.  
  8.  

He intentado crear un método de acceso al miembro privado, pero no me sirve dado que es una matriz, y el método de acceso sólo sé hacerlo sobre una variable que no sea matriz.

¿De qué manera puedo rellenar esa información sin acceder de esa forma al miembro privado?

Muchas gracias.

Páginas: [1]