• Miércoles 15 de Abril de 2026, 09:50

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 - ShineV2

Páginas: [1]
1
C/C++ / Que alguien me eche una mano porfavor
« en: Martes 25 de Mayo de 2010, 16:04 »
Hola buenas:

Me mandaron el siguiente ejercicio, y me he quedado congelado en la parte del fichero pricipal, no se como hacerlo y no se me ocurre ninguna cosa.

Os pongo todos los ficheros del proyecto

Libreria.h
#include <iostream.h>
#include "Publicacion.h"

typedef Publicacion* PunteroPublicacion;

class Biblioteca
{
public:
   Biblioteca(int = 0); //constructor
   ~Biblioteca();
   Publicacion& operator[](int); //operador de indexacion
   //Otras funciones
   void ponEjemplar(PunteroPublicacion);
   int obtenNroMaxDeEjemp();
   int obtenNroDeEjem();
private:
   int nroMaxDeEjemp;
   int nroDeEjemp;
   PunteroPublicacion* ejemplar;
};

#include <iostream.h>

class Publicacion
{
public:
   //Constructores
   Publicacion();
   Publicacion(char* , char* );
   Publicacion(const Publicacion&);
   //Destructor
   virtual ~Publicacion();
   //Otras funciones
   void ponReferencia(char*);
   void ponTitulo(char*);
   virtual void visualizar()const = 0; // funcoin virtual pura
   friend ostream& operator << (ostream&, const Publicacion&);
protected:
   char* referencia;
   char* titulo;
};

class Libro:public Publicacion
{
public:
   Libro();
   Libro(char*, char*, char*, char*);
   Libro(const Libro&);
   //operador asignacion
   Libro &operator = (const Libro&);
   //destructor
   ~Libro();
   //otras fucniones
   void ponAutor(char*);
   void ponEditorial(char*);
   virtual void visualizar() const;
private:
   char *autor;
   char *editorial;
};

class Revista:public Publicacion
{
public:
   //Constructores
   Revista();
   Revista(char*, char*, int, int);
   Revista(const Revista&);
   //operador de asignacion
   Revista &operator=(const Revista&);
   //otras funciones
   void ponNroRevista(int);
   void ponAnyo(int);
   virtual void visualizar()const;
private:
   int nroRevista;
   int anyo;
};


Libreria.cpp

#include "Libreria.h"
Biblioteca::Biblioteca(int)
{
   nroMaxDeEjemp = 0;
   nroDeEjemp = 0;
}

Biblioteca::~Biblioteca()
{
   delete [] ejemplar; //Solo se pueden borrar punteros
}

Publicacion& Biblioteca::operator [](int i)
{
   return *ejemplar;
}

void Biblioteca::ponEjemplar(PunteroPublicacion c)
{
   ejemplar = &c;
}
int Biblioteca::obtenNroMaxDeEjemp()
{
   cout << "Limite de ejemplares:" << endl;
   cin >> nroMaxDeEjemp;
   return nroMaxDeEjemp;
}
int Biblioteca::obtenNroDeEjem()
{
   cout << "Cantidad de ejemplares" << endl;
   cin >> nroDeEjemp;
   return nroDeEjemp;
}


publicacion.cpp

//funciones miembro de publicaciones.h
#include <string.h>
#include "Publicaciones.h"

int nChar = 0;
int nChar2 = 0;

Publicacion::Publicacion()
{
   referencia = new char[1];
   strcpy(referencia, "");
   titulo = new char[1];
   strcpy(titulo, "");
}

Publicacion::Publicacion(char* a, char* b)
{
   nChar = strlen(a);
   referencia = new char[nChar + 1];
   nChar2 = strlen(b);
   titulo = new char[nChar2 + 1];
}

Publicacion::Publicacion(const Publicacion& c)
{
   referencia = new char;
   strcpy(referencia, c.referencia);
   titulo = new char;
   strcpy(titulo, c.titulo);
}

Publicacion::~Publicacion()
{
   delete [] referencia;
   delete [] titulo;
}

void Publicacion::ponReferencia(char* a)
{
   referencia = a;
   delete [] referencia;
   referencia = new char[nChar + 1];
   strcpy(referencia, a);
   cout << "Escriba la referencia: " << endl;
   cin >> referencia[nChar];
}

void Publicacion::ponTitulo(char* a)
{
   titulo = a;
   delete [] titulo;
   titulo = new char[nChar + 1];
   strcpy(titulo, a);
   cout << "Escribe el titulo: " << endl;
   cin >> titulo[nChar];
}

ostream& operator << (ostream& co, const Publicacion& pub)
{
   co << pub.titulo;
   co << pub.referencia;
   return co;
}
 //hasta aki si errores 20-5-10 10:16

Libro::Libro()
{
   autor = new char[1];
   strcpy(autor, "");
   editorial = new char[1];
   strcpy(titulo, "");
}


Libro::Libro(char* unaReferencia, char* unAutor, char* unTitulo, char* unaEditorial) : Publicacion(unaReferencia, unTitulo)
{
   autor = unAutor;
   editorial = unaEditorial;
}


Libro::Libro(const Libro& co)
{
   referencia = new char;
   strcpy(referencia, co.referencia);
   titulo = new char;
   strcpy(titulo, co.titulo);
   autor = new char;
   strcpy(autor, co.autor);
   editorial = new char;
   strcpy(editorial, co.editorial);
}

Libro::~Libro()
{
   delete [] referencia;
   delete [] titulo;
   delete [] autor;
   delete [] editorial;
}

void Libro::ponAutor(char* a)
{
   autor = a;
   delete [] autor;
   autor = new char;
   cout << "ponAutor()" << endl;
}

void Libro::ponEditorial(char* e)
{
   editorial = e;
   delete [] editorial;
   editorial = new char;
   cout << "ponEditorial()" << endl;


}

void Libro::visualizar() const
{
   cout << "Autor: " << "ponAutor(a)" << endl;
   cout << "Editorial: " << "ponEditorial()" << endl;
}

Revista::Revista()
{
   nroRevista = 0;
   anyo = 0;
   referencia = new char[1];
   strcpy(referencia, "");
   titulo = new char[1];
   strcpy(titulo, "");
}

Revista::Revista(char* unaReferencia, char* unTitulo,int unNroRevista, int unAnyo) : Publicacion(unaReferencia, unTitulo)
{
   nroRevista = unNroRevista;
   anyo = unAnyo;
}

Revista& Revista::operator= (const Revista& co)
//Revista &operator=(const Revista&);
{
   int i;
   if (this != &co)
   {
      delete [] referencia;
      delete [] titulo;
      nroRevista = co.nroRevista;
      referencia = new char[nroRevista];
      for(i = 0; i < nroRevista; i++)
      {
         referencia = co.referencia;
      }
   }
   else
   {
      return *this;
   }
}

   
void Revista::ponNroRevista(int n)
{
   nroRevista = n;

}
void Revista::ponAnyo(int a)
{
   anyo = a;
}

void Revista::visualizar()const
{
   cout << "Referencia: " << "ponReferencia()" << endl;
   cout << "Titulo: " << "ponTitulo()" << endl;
   cout << "nroRevista: " << "ponNroRevista()" << endl;
   cout << "Editorial: " << "ponAnyo()" << endl;
}

Principal.cpp

#include "Biblioteca.h"

void main()
{
   int eleccion = 0;
   int i = 100;
   Publicacion *c1 = new char Publicacion; //apañar

   cout << endl << "MENU";
   cout << endl << "Escoga una de las siguientes opciones";
   do
   {
      do
      {
         cout << endl << "1.-Libro";
         cout << endl << "2.-Revistas";
         cout << endl << "3.-Visualizar";
         cout << endl << "4.-Salir";
         cout << "Introduce una opcion: ";
         cin >> eleccion;
      }while (eleccion < 1 || eleccion > 4);

      switch(eleccion)
      {
      case 1:
         break;
         
      case 2:
         cout << endl << "GESTION DE REVISTAS";
         break;
         //poner funciones
      case 3:
         cout << endl << "VISUALIZACION DE DATOS";
         break;
      
      }
   }while (eleccion != 4);

}




FIN

Eset ultimo cpp es el que no se como desarrollarlo ya que supuestamente el programa dependiedno de las opciones debe pedirle al usuario un referncia, un tiluto (si es libro9 un autor y una editorial, (so es revista) un numero y un año.
Losd atos se introducen mediante meoria dinamica y la opción visualia debe mostrar las revista y libros introducidos.:neurotico

Bueno si alguien tiene alguna solúción porfaor que melo diga lo mas pronto posible pq me urge hacer ese ejercicio.

Psd: Si no importa porfavor repasad mis demas ficheros por si hay algun error.

Nota: suspuestamente las cabeceras no se pueden modificar.

Eso es todo, gracias de ante mano :-)

2
C/C++ / ¿COMO SE HACE ESTO?
« en: Lunes 17 de Mayo de 2010, 20:01 »
Hola muy buenas:

Lo primero es decir que soy nuevo en la programación orientada a objeto y aunque es algo que me gusta pues hay problemas que me cuestian solucionar com es que os voy a exponer ahora. :P

Se trata de una clase  que tiene la siguiente cabecera:
class Punto
{
protected:
  int x, y;
public:
  Punto(int , int );
};

class Col
{
protected:
  int color;
public:
  Col(int );
};

class PuntoCol: public Punto,  Col
{

public:
  PuntoCol(int , int , int );
  void visualiza();
};

El fichero .cpp al que he llamado Puno teien el siguiente codigo:
class Punto
{
protected:
  int x, y;
public:
  Punto(int , int );
};

class Col
{
protected:
  int color;
public:
  Col(int );
};

class PuntoCol: public Punto,  Col
{

public:
  PuntoCol(int , int , int );
  void visualiza();
};

Y por últmo el .cpp principal:
#include"Punto.h"

void main()
{
   PuntoCol* c1 = new PuntoCol(3,2,9);
   c1->visualiza();   
}


Buneo hasta hay todo bien:
Mi rpoblema es que con el segundo punto del ejercicio en cuesios¡n en el cual se pide lo siguiente:

2) Introducir  todas las modificaciones necesarias para que mantengan los anteriores resultados,
   cuando modificamos el acceso a los datos miembros de las clases desde protected a private.


Esto quiere decir que los miebros protected de las clase pasen a ser private.
Yo lo he intentado con casi todo pero no se porque siempre me sale el tipico error de acceso.  :hitcomp:

por favor si  alguien sabe como solucionar este problema que me lo ahga saber lo antes posible, y si no es molestia que exponga un breve explicacion de como se accdeden alos datos pmiembro privado de una calse desde fuera del ambito.
Se me da una diea de hcerlo con clases amgias pero no se como implementarlas.

bueno pues nada mas un saludo a todos y gracias por adelantado:  :good:

Páginas: [1]