ChatGPT4 | Midjourney:
biblioteca.push_back(new Disco(titulo, precio, duracion));
cout << "Disco agregado correctamente." << endl;
break;
}
case 3: {
if ([Link]()) {
cout << "La biblioteca está vacía." << endl;
} else {
cout << "===== Biblioteca =====" << endl;
for (Producto* producto : biblioteca) {
producto->obtenerDetalles();
cout << "------------------------" << endl;
}
}
break;
}
case 0:
cout << "¡Hasta luego!" << endl;
break;
default:
cout << "Opción inválida." << endl;
break;
}
cout << endl;
} while (opcion != 0);
// Liberar la memoria de los productos almacenados
for (Producto* producto : biblioteca) {
delete producto;
}
return 0;
}
Lamento la confusión anterior. Espero que esta revisión te sea útil. Si tienes
alguna otra pregunta, no dudes en preguntar.
Sí, por supuesto. A continuación, se muestra una revisión del código que
proporcioné anteriormente:
**archivo Producto.h**
#ifndef PRODUCTO_H
#define PRODUCTO_H
#include <string>
class Producto {
protected:
std::string titulo;
float precio;
public:
Producto(std::string _titulo, float _precio);
virtual ~Producto();
virtual void obtenerDetalles() = 0;
};
#endif
**archivo [Link]**
#include "Producto.h"
Producto::Producto(std::string _titulo, float _precio) : titulo(_titulo),
precio(_precio) {}
Producto::~Producto() {}
**archivo Libro.h**
#ifndef LIBRO_H
#define LIBRO_H
#include "Producto.h"
class Libro : public Producto {
private:
int numPaginas;
public:
Libro(std::string _titulo, float _precio, int _numPaginas);
void obtenerDetalles();
};
#endif
**archivo [Link]**
#include "Libro.h"
#include <iostream>
Libro::Libro(std::string _titulo, float _precio, int _numPaginas) :
Producto(_titulo, _precio), numPaginas(_numPaginas) {}
void Libro::obtenerDetalles() {
std::cout << "Título: " << titulo << std::endl;
std::cout << "Precio: $" << precio << std::endl;
std::cout << "Número de páginas: " << numPaginas << std::endl;
}
**archivo Disco.h**
#ifndef DISCO_H
#define DISCO_H
#include "Producto.h"
class Disco : public Producto {
private:
int duracionMinutos;
public:
Disco(std::string _titulo, float _precio, int _duracionMinutos);
void obtenerDetalles();
};
#endif
**archivo [Link]**
#include "Disco.h"
#include <iostream>
Disco::Disco(std::string _titulo, float _precio, int _duracionMinutos) :
Producto(_titulo, _precio), duracionMinutos(_duracionMinutos) {}
void Disco::obtenerDetalles() {
std::cout << "Título: " << titulo << std::endl;
std::cout << "Precio: $" << precio << std::endl;
std::cout << "Duración en minutos: " << duracionMinutos << std::endl;
}
**archivo [Link]**
#include <iostream>
#include <vector>
#include "Producto.h"
#include "Libro.h"
#include "Disco.h"
using namespace std;
int main() {
vector<Producto*> biblioteca;
// Agregar libros y discos a la biblioteca
biblioteca.push_back(new Libro("El Gran Gatsby", 15.99, 352));
biblioteca.push_back(new Disco("Thriller", 12.50, 42));
biblioteca.push_back(new Libro("Cien años de soledad", 20.75, 432));
int opcion;
do {
cout << "===== Menú Principal =====" << endl;
cout << "1. Agregar libro" << endl;
cout << "2. Agregar disco" << endl;
cout << "3. Mostrar biblioteca" << endl;
cout << "0. Salir" << endl;
cout << "Ingrese una opción: ";
cin >> opcion;
switch (opcion) {
case 1: {
string titulo;
float precio;
int numPaginas;
cout << "Ingrese el título del libro: ";
[Link]();
getline(cin, titulo);
cout << "Ingrese el precio del libro: ";
cin >> precio;
cout << "Ingrese el número de páginas del libro: ";
cin >> numPaginas;
biblioteca.push_back(new Libro(titulo, precio, numPaginas));
cout << "Libro agregado correctamente." << endl;
break;
}
case 2: {
string titulo;
float precio;
int duracion;
cout << "Ingrese el título del disco: ";
[Link]();
getline(cin, titulo);
cout << "Ingrese el precio del disco: ";
cin >> precio;
cout << "Ingrese la duración en minutos del disco: ";
cin >> duracion;