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

Urgente

Estas en el tema de Urgente en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/05/2010, 07:58
 
Fecha de Ingreso: mayo-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Pregunta Urgente

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[i];
}

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[i] = co.referencia[i];
}
}
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[i]; //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.

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 (permalink)  
Antiguo 25/05/2010, 12:44
Avatar de pmike  
Fecha de Ingreso: marzo-2004
Ubicación: Barcelona
Mensajes: 313
Antigüedad: 20 años, 1 mes
Puntos: 7
Respuesta: Urgente

Llama la atención que no sepas desarrollar el menu principal de opciones (que es lo menos dificil) y sin embargo tienes implementadas las clases y los métodos que ha simple vista están bien.
Lo que tienes que hacer en cada opción es llamar a un método de la clase, para que realize lo que deseas.
__________________
www.visitaspirata.com
  #3 (permalink)  
Antiguo 27/05/2010, 13:11
 
Fecha de Ingreso: mayo-2010
Mensajes: 5
Antigüedad: 14 años
Puntos: 0
Respuesta: Urgente

Si la cuestion es que no se como llamarlos, por favor que alguien me lo diga necesito hacer eset ejercicio.

Muchas gracias

Etiquetas: Ninguno
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 08:56.