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

 

 


Tema destacado:


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

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Ayuda Clases c++
« en: 22 Enero 2011, 22:38 pm »

Vereis soy nuevo en esto de la programación en c++, y empecé con "c" el año pasado... el caso es que tengo una práctica para febrero y estoy un poco liado... tengo una clase que se llama documento y querría listar por pantalla los documentos existentes... y no se me ocurre como hacerlo... la clase la tengo así:

class Documento
      {
      private:
              //Atributos privados de la clase documentos.
              char Titulo[20];
              char Genero[20];
              char Idioma[20];
              int Edad_recomendada;
              int año;
              int Prestado;
              int Dias_prestamo;
      public:
 //constructor.

// Documento ():Titulo("Desconocido"), Genero("Desconocido"), Editorial("Desconocido"), Autor("Desconocido"), Idioma("Desconocido"), Edad_recomendada(0), año(0),       Dias_prestamo(0){}

      };

int main()
{
Documento doc1;
Documento doc2;
...
Documento doc8;


system("PAUSE");
return 0;
}

Lo que quería era usar un for y fuese buscando hasta que el documento no existiese pero claro... no sé como hacer eso... una cosa es pensarlo y otra escribirlo... jaja

Otro problema en este mismo código es que los char no me los compila, cuando introduzco el constructor y le meto los datos "Desconocido" a los diferentes char me da error y al crear un documento del tipo de la clase y pasarle la cadena también me da fallo...

Un Saludo y gracias de antemano :)


« Última modificación: 23 Enero 2011, 13:27 pm por kyon19 » En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


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


Ver Perfil WWW
Re: Ayuda Clases c++
« Respuesta #1 en: 23 Enero 2011, 00:33 am »

Si te sirve en C, me saco esto de la manga jeje...
Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5. struct documento
  6. {
  7. char titulo[20];
  8. char genero[20];
  9. char idioma[20];
  10. int edad_recomendada;
  11. int axo;
  12. int prestado;
  13. int dias_prestamo;
  14. };
  15.  
  16. int num, i;
  17. printf ("Num. docs: ");
  18. scanf ("%d", &num);
  19. struct documento docs [num];
  20. for (i = 0; i<num; i++)
  21. {
  22. printf ("Titulo %d: ", i);
  23. fgets (docs [i].titulo, 20, stdin);
  24. printf ("Genero %d: ", i);
  25. fgets (docs [i].genero, 20, stdin);
  26. printf ("Idioma %d: ", i);
  27. fgets (docs [i].idioma, 20, stdin);
  28. printf ("Edad recm. %d: ", i);
  29. scanf ("%d", &docs [i.edad_recomendada]);
  30. printf ("A*o %d: ", i);
  31. scanf ("%d", &docs [i.axo]);
  32. printf ("Prestado %d: ", i);
  33. scanf ("%d", &docs [i.prestado]);
  34. printf ("Dias prestamo %d: ", i);
  35. scanf ("%d", &docs [i.dias_prestamo]);
  36. }
  37.  
  38. getchar ();
  39. return 0;
  40. }
  41.  

Ahi te lo dejo. Ahora debes continuar con el ejercicio jeje... Lo de dias prestamo podrias calcular el tiempo... Mira funciones de tiempo en el "Rincon del C++". Lo explican muy bien... (Url: Google).
Y lo de prestado puedes usar tmb tiempo, pero solo obtenerlo...

Ahora deberias meterle algo para que vaya guardando en algun sitio, un fichero, etc...
Suerte!


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
kyon19

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda Clases c++
« Respuesta #2 en: 23 Enero 2011, 04:13 am »

No me sirve en C... jajaja yo pensé algo asi pero no me dejan... ahora estamos con C++ aunque gracias de todas formas :) espero que alguien sepa como conseguir que me lea los char en C++ con las clases... y respecto a lo de los ficheros para guardarlo gracias por avisar, le meti unos también en C++ :)
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda Clases c++
« Respuesta #3 en: 23 Enero 2011, 05:40 am »

Puedes utilizar un arreglo de objetos:

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4. using std::cin;
  5. using std::string;
  6.  
  7. class Documento
  8. {
  9.      private:
  10.              //Atributos privados de la clase documentos.
  11.            string Titulo;
  12.            string Genero;
  13.            string Idioma;
  14.            int Edad_recomendada;
  15.            int ano;
  16.            int Prestado;
  17.            int Dias_prestamo;
  18.      public:
  19.  
  20.    Documento(const string &Titulo, const string &Genero, const string &Idioma, const int &Edad_recomendada)
  21.    {
  22.        this->Titulo = Titulo;
  23.        this->Genero = Genero;
  24.        this->Edad_recomendada = Edad_recomendada;
  25.    }
  26.  
  27.    // Setters and getters
  28. // Libros ():Titulo("Desconocido"), Genero("Desconocido"), Editorial("Desconocido"), Autor("Desconocido"), Idioma("Desconocido"), Edad_recomendada(0), año(0),       Dias_prestamo(0){}
  29.  
  30.      };
  31.  
  32.  
  33. int main(void)
  34. {
  35.    // Creación:
  36.    Documento **docs = new Documento *[10];
  37.  
  38.    // Liberación:
  39.    for(unsigned int i = 0; i < n; i++)
  40.    delete arreglo[i];
  41.    delete arreglo;
  42.  
  43.  
  44.    return 0;
  45. }
  46.  

Es solo un borrador, faltan los setters y getters y lo que tengas que hacer con los objetos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
kyon19

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda Clases c++
« Respuesta #4 en: 23 Enero 2011, 13:49 pm »

Bueno mas o menos basandome en esos dos códigos que me pusisteis hice este:

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

//Clases Definidas.
class Documento
      {
      private:
              //Atributos privados de la clase documentos.
              string Titulo;
              string Genero;
              string Idioma;
              int Edad_recomendada;
              int año;
              int Prestado;
              int Dias_prestamo;
      public:
             Documento ():Titulo("Desconocido"), Genero("Desconocido"), Idioma("Desconocido"), Edad_recomendada(0), año(0),Prestado(0), Dias_prestamo(0){}
             int getP(){return Prestado;}
      };

int main()
{
    
Documento doc1("poke","anag","pepe",58,1995,1,9);

cout << doc1.getP() << endl;
system("PAUSE");
}

Para hacer una pequeña prueba y haber si tiraba pero no...
Solo me da este fallo en la linea que creo el Documento doc1:

no matching function for call to 'Documento::Documento(cons char[5], const char[5]...)'

y me pone dos notes que son:

1. candidates are Documento::Documento(const Documento&)

2. Documento::Documento()


Gracias por la ayuda que me estais dando :D
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda Clases c++
« Respuesta #5 en: 24 Enero 2011, 00:26 am »

Te da error porque en el contructor te falta definir los tipos de datos de los parámetros:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. using namespace std;
  7.  
  8. //Clases Definidas.
  9. class Documento
  10.      {
  11.      private:
  12.              //Atributos privados de la clase documentos.
  13.              string Titulo;
  14.              string Genero;
  15.              string Idioma;
  16.              int Edad_recomendada;
  17.              int ano;
  18.              int Prestado;
  19.              int Dias_prestamo;
  20.      public:
  21.             Documento(string, string, string, int, int, int, int): Titulo("Desconocido"), Genero("Desconocido"), Idioma("Desconocido"), Edad_recomendada(0), ano(0),Prestado(0), Dias_prestamo(0)
  22.             {
  23.  
  24.             }
  25.             int getP()
  26.             {
  27.                return Prestado;
  28.            }
  29.      };
  30.  
  31. int main(void)
  32. {
  33.  
  34.    Documento doc1("poke", "anag", "pepe", 58, 1995, 1, 9);
  35.    cout << doc1.getP() << endl;
  36.  
  37. }
  38.  
  39.  
  40.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
kyon19

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda Clases c++
« Respuesta #6 en: 25 Enero 2011, 21:45 pm »

Muchísimas gracias!! a veces estoy empanado... esto de la programación me deja tonto... jajaja
En línea

kyon19

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda Clases c++
« Respuesta #7 en: 3 Febrero 2011, 02:24 am »

Ains... tengo otro problema... ahora al compilar me dice esto:

base "Documento" with only non-default constructor in class without a constructor
en las dos clases derivadas.

En el constructor de las clases derivadas me da este otro error:

no matching function for call to "Documento::Documento()"

Adjunto la clase base y una de las derivadas...:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. using namespace std;
  7.  
  8. //Clases Definidas.
  9. class Documento
  10. {
  11. protected:
  12. //Atributos privados de la clase documentos.
  13. string Titulo;
  14. string Genero;
  15. string Idioma;
  16. int Edad_recomendada;
  17. int año;
  18. bool Prestado;
  19. int Dias_prestamo;
  20. public:
  21. Documento (string, string, string, int, int, bool, int) : Titulo("Desconocido"), Genero("Desconocido"), Idioma("Desconocido"), Edad_recomendada(0), año(0),Prestado(false), Dias_prestamo(0){}
  22. string getT(){return Titulo;}
  23. };
  24.  
  25.  
  26.  
  27. //Clases Derivadas.
  28. class Libros : public Documento
  29. {
  30. private:
  31. //Atributos privados de la clase libros.
  32. string Editorial;
  33. string Autor;
  34. int Paginas;
  35. public:
  36. //Constructor de los valores por defecto.
  37. Libros (string, string, int) : Editorial("Desconocido"), Autor("Desconocido"), Paginas(0){}
  38. };
« Última modificación: 4 Febrero 2011, 09:13 am por kyon19 » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda Clases c++
« Respuesta #8 en: 3 Febrero 2011, 03:27 am »

Primero coloca el código con la etiqueta GeShi.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
kyon19

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda Clases c++
« Respuesta #9 en: 4 Febrero 2011, 09:13 am »

Mmmm vale, perdon jaja
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arrays con clases? [AYUDA]
Programación Visual Basic
EstoyBaneado 5 2,066 Último mensaje 13 Septiembre 2005, 17:58 pm
por EstoyBaneado
Ayuda con diseno de una jerarquia de clases
Java
Sujeto 0 2,440 Último mensaje 24 Enero 2009, 19:48 pm
por Sujeto
[AYUDA]Clases en structuras
Programación C/C++
anonimo12121 2 2,218 Último mensaje 9 Mayo 2010, 00:19 am
por anonimo12121
Ayuda Urgente! Cola con Templates Clases
Programación C/C++
¡Micronet! 0 1,775 Último mensaje 28 Octubre 2010, 04:34 am
por ¡Micronet!
Ayuda codigo con clases.
Programación C/C++
kaskull 1 2,612 Último mensaje 30 Marzo 2014, 19:02 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines