Ayuda Urgente

En este foro irán los mensajes cuyo asunto viola las normas del foro. Por ejemplo los que contienen la palabra "urgente", "ayuda", "re:", mayúsculas, o cualquier otra forma de llamar la atención.

Se quedarán aquí hasta que el autor del mensaje lo modifique. Mientras el mensaje esté aquí no podrá recibir respuestas.
Responder
Mensaje
Autor
ShineV2
Mensajes: 1
Registrado: 27/05/2010 5:24 am

Ayuda Urgente

#1 Mensaje por ShineV2 » 27/05/2010 5:27 am

Que alguien me eche una mano porfavor

Notapor ShineV2 » Mar May 25, 2010 3:04 pm
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

Código: Seleccionar todo

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;
};

Código: Seleccionar todo

publicacion .h
#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;
};

//son herencias

Código: Seleccionar todo

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;
}


Código: Seleccionar todo

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)
{
	/*titulo = a;
	delete [] titulo;
	titulo = new char[nChar + 1];
	strcpy(titulo, a);
	cout << "Escribe el titulo: " << endl;
	cin >> titulo[nChar];
	*/
	autor = a;
	delete [] autor;
	autor = new char[nChar + 1];
	strcpy(autor, a);
	cout << "Escribe el autor del libro" << endl;
	cin >> autor[nChar];
}

void Libro::ponEditorial(char* e)
{
	editorial = e;
	delete [] editorial;
	editorial = new char[nChar + 1];
	strcpy(editorial,e);
	cout << "Escribe el editorial al que perentece:" << endl;
	cin >> editorial[nChar];
}

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];
		}
	}
	return *this;
}

	
void Revista::ponNroRevista(int n)
{
	cout << "Escribe el numero de la revista" << endl;
	cin >> n;
}
void Revista::ponAnyo(int a)
{
	cout << " Introduce el año" << endl;
	cin >> a;
}

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


Código: Seleccionar todo

Principal.cpp

#include <stdio.h>
#include "Biblioteca.h"


void main()
{
	int eleccion,cont;
	char ref;
	char i=0;
	int ej=0;

	Publicacion* plib = new Libro[i + 1];
	Biblioteca a;

	Libro lib;
	plib = &lib;
	printf("MENU\n");
	printf("Escoga una de las siguientes opciones:\n");


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

		switch(eleccion)
		{
		case 1:

			cout << a.obtenNroDeEjem();
			cin >> cont;

			lib.ponReferencia(&ref);

			for(ej = 0; ej < cont; ej++)
			{
				cin >> ref;
			}
		

			/*

			for(i = 0; i < cont; i++)
			{
				cout << lib.ponReferencia(i) << "Referencia: ";
				cout << lib.ponTitulo(i) << "Titulo";
				cout << lib.ponAutor(i) << "Autor":
				cout << lib.ponEditorial(i) << "Editorial";
			}
			*/
		

			break;

		case 2:
		
			
				/*cout << rev.ponReferencia(i) << "Referencia: ";
				cin >> rev.referencia[i];
				cout << rev.ponTitulo(i) << "Titulo: ";
				cin >> rev.titulo[i];
				cout << rev.ponNroRevista(i) << "Numero de la revista: ";
				cin >> rev.nroRevista[i];
				cout << rev.ponAnyo(i) << "Anio de publicacion" << endl;
				cin >> rev.anyo[i];
				*/
			
			break;
		case 3:

			for(i=0; i <cont ; i++)
			{
				//cout << "Referencia=" << lib[i].ponReferencia(ref) << endl;
				//printf("Referencia: %s", lib[i].ponReferencia());

			}
			break;
		}
	}
	while (eleccion != 4);
}

Mi problema es que no se como desarrollar el Pricpila porque se supone que desde cad una de las opciones del menú, se deben introducir una referencia y un titulo en comun, y luego un autor y un editorial en cso de elegir libro, y un nurmero de ejemplar de revista y un año en caso de revista.

En la opcion de visualiar se supone que se deben de ver todos los datos obtenidos (de libros y revistas).

He intentado hacerlo y mi porblema esta sobre todo entor a los accesos a los miembros de la clases desde main.

Eso es todo. Por favor, si alguien sabe como se podría acceder que me lo ponga, tengo que presentar el ejercicio el martes que viene y me hes necesario para aprobar mi curso.

Nota: perdona por no poner lo de code,es uqe soy nuevo y no se como va esto aun, xdddddddd gracias
Última edición por ShineV2 el 27/05/2010 11:33 am, editado 1 vez en total.

Avatar de Usuario
Sorancio
Mensajes: 1157
Registrado: 29/05/2009 12:42 pm
Ubicación: España
Contactar:

#2 Mensaje por Sorancio » 27/05/2010 10:52 am

Lo siento pero así no puedo ayudarte, podrías poner todo el código (o cada fichero por separado) entre las etiquetas [.code] y [./code]? Sin el punto claro.

Saludos.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado