2
« en: Martes 1 de Junio de 2010, 14:03 »
estoy haciendo un curso en c++ el cual ya ha terminado pero ante la falta de tiempo he tenido que ver los ultimos temas un poco deprisa y casi sin comprenderlos y ahora me han mandado el ejercicio final para poder darme el certificado de realizacion y me falta la ultima cuestion que no soy capaz de resolver, por eso os pido un poco de ayuda ya que tengo que entregarlo ya.
el codigo es el siguiente:
// FECHA: --------------
// AUTOR: -----------------
#include <iostream>
#include <stdlib.h>
#include <cstring>
using namespace std;
//---------------Clase base Cmedio-------------------------
class Cmedio
{
protected:
char titulo[50];
float precio;
public:
Cmedio (char *s, float a)
{
strcpy(titulo,s);
precio = a;
}
virtual void mostrar() {} // función virtual vacia
};
//---------------Clase derivada Clibro-----------------------
class Clibro: public Cmedio
{
int paginas;
public:
Clibro (char *s, float a ,int p) : Cmedio (s,a)
{
paginas = p;
}
virtual void mostrar();
};
//---------------Clase derivada Ccinta---------------------
class Ccinta: public Cmedio
{
float duracion;
public:
Ccinta (char *s, float a ,float t) : Cmedio (s,a)
{
duracion = t;
}
virtual void mostrar();
};
//---------------Clase derivada Clibroe--------------------
class Clibroe: public Cmedio
{
int megabytes;
public:
Clibroe (char *s, float a, int mb) : Cmedio (s,a)
{
megabytes = mb;
}
virtual void mostrar();
};
void Clibro :: mostrar()
{
cout << "Tilulo: " << titulo << endl;
cout << "Paginas: " << paginas << endl;
cout << "Precio: " << precio << endl;
system("PAUSE");
}
void Ccinta :: mostrar()
{
cout << "Tilulo: " << titulo << endl;
cout << "Duracion: " << duracion << " minutos" << endl;
cout << "Precio: " << precio << endl;
system("PAUSE");
}
void Clibroe :: mostrar()
{
cout << "Titulo: " << titulo << endl;
cout << "Precio: " << precio << endl;
cout << "Tamaxa4o: " << megabytes << " MB " << endl;
system("PAUSE");
}
//------------- PROGRAMA PRINCIPAL--------------------
int main()
{
char * titulo = new char[30];
float precio, duracion;
int paginas, megabytes;
// CREAR LIBRO
cout << "Tilulo: "; cin >> titulo ;
cout << "Paginas: "; cin >> paginas ;
cout << "Precio: "; cin >> precio ;
Clibro libro1(titulo,precio,paginas);
// CREAR CINTA
cout << "Tilulo: "; cin >> titulo ;
cout << "Duracion: "; cin >> duracion ;
cout << "Precio: "; cin >> precio ;
Ccinta cinta1(titulo,precio,duracion);
// CREAR LIBROE
cout << "Titulo : "; cin >> titulo ;
cout << "Precio : "; cin >> precio ;
cout << "Tamaxa4o : "; cin >> megabytes ;
Clibroe libroe1(titulo,precio,megabytes);
//---------MUESTRA LOS DATOS DE CADA OBJETO-----
libro1.mostrar();
cinta1.mostrar();
libroe1.mostrar();
return 0;
}
Ejercicios propuestos:
1.- Corregir los errores sintácticos.
ya los he realizado
2.- Suponed que ahora la librería pude vender libros electrónicos, para estos libros además del título y el precio es
necesario guardar su tamaño en megabytes. Modificad el código anterior para que permita gestionar este nuevo
tipo de productos. Justificad mediante comentarios en el programa las decisiones tomadas. El programa debe crear y mostrar un libro normal, una cinta y un libro electrónico.
realizado a falta de los comentarios
3.- Teniendo presente que la función mostrar() ha sido declarada como virtual en la clase base Cmedio, cread en
el programa principal una lista heterogénea de punteros de tipo Cmedio, para los tres objetos que hemos creado
libro1, cinta1,libroe1. Mediante una estructura repetitiva mostrar los datos de cada objeto utilizando la lista de
punteros. Justificad mediante comentarios en el programa las decisiones tomadas.
este es el que no soy capaz de realizar
gracias de todas formas.