Witam serdecznie,
muszę napisać program wypełniający założenia zadania o następującej treści :
Opracuj klasę TablicaPlyt, która pozwala administrować zbiorem obiektów klasy TPlyta. W klasie TPlyta przechowywana jest informacja o płycie w postaci: wykonawca, tytuł płyty i cena. W klasie TablicaPlyt przechowywane są obiekty typu TPlyta. Klasy mają umożliwiać w szczególności :
- dodanie płyt za pomocą konstruktora
- dodawanie płyty do tablicy płyt za pomocą przeciążonego operatora <<
- wyświetlanie zawartości obiektu wskazanego za pomocą indeksu w tablicy za pomocą przeciążonego operatora <<
- usuwanie z tablicy płyty o wskazanym indeksie
- zapisać tablicę płyt do pliku
- wczytać opisy płyt z pliku do tablicy
- wyświetlić tytuł płyty o najmniejszej cenie
- wyświetlić wykaz wszystkich płyt
ZWRACAM się z uprzejmą prośbą o sprawdzenie programu. Wszelkie uwagi są bardzo mile widziane :)
Pozdrawiam serdecznie
student_RRK
```// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
class Plyta
{
private:
string wykonawca;
string tytul;
double cena;
public:
Plyta() {};
Plyta(string wykonawca, string tytul, double cena)
{
this->wykonawca = wykonawca;
this->tytul = tytul;
this->cena = cena;
}
double get_cena() const
{
return cena;
}
string toString()
{
return (wykonawca + " " + tytul + " " + to_string(cena) + "\n");
}
friend ostream & operator<<(ostream & wy, Plyta & plyt) {
return wy << "Wykonawca: " << plyt.wykonawca << ", tytul: " << plyt.tytul << ", cena: " << plyt.cena << endl;
}
};
class TablicaPlyt
{
private:
vector<Plyta> Plyty;
public:
TablicaPlyt(int rozmiar)
{
Plyty.reserve(rozmiar);
}
void operator+(Plyta& p)
{
Plyty.push_back(p);
}
void save()
{
ofstream plik("D:/plik.txt");
for (vector<Plyta>::iterator i = Plyty.begin(); i<Plyty.end(); i++)
plik << i->toString();
plik.close();
}
void load()
{
ifstream plik("D:/plik.txt");
while (plik)
{
string wykonawca, tytul, cena;
plik >> wykonawca >> tytul >> cena;
if(!plik.eof()){
Plyta tmp(wykonawca, tytul, atof(cena.c_str()));
Plyty.push_back(tmp);
}
}
}
Plyta& operator[](int element)
{
return Plyty[element];
}
void usun(int element) {
Plyty.erase(Plyty.begin() +element);
}
~TablicaPlyt() {
Plyty.clear();
}
void drukujTest()
{
cout << "\n\nAktualny rozmiar: " << Plyty.size() << endl << endl;
cout << "Aktualne elementy " << endl;
for (vector<Plyta>::iterator i = Plyty.begin(); i<Plyty.end(); i++)
cout << i->toString();
cout << "-*-*-*-*-*-*-*-*-*-" << endl;
}
void drukujNajtansze()
{
cout << "\n\nNajtansza plyta to : \n\n";
int min = Plyty[0].get_cena();
int indeks_min = 0;
for (unsigned i = 1; i < Plyty.size(); i++)
{
if (Plyty[i].get_cena() < min)
{
min = Plyty[i].get_cena();
indeks_min = i;
}
}
cout << Plyty[indeks_min].toString();
}
};
int main() {
Plyta p1("Bach", "Fuga", 22.50);
Plyta p2("Rolling", "Stone", 49.99);
Plyta p3("Celin", "Show", 100.20);
Plyta p4("Freddy", "Hot", 115.40);
Plyta p5("Metalica", "Dark", 19.99);
Plyta p6("Nirvana", "Luna", 50.90);
Plyta p7("Rihana", "Love", 90.20);
Plyta p8("The", "Winter", 115.40);
Plyta p9("Red", "Onion", 10.99);
Plyta p10("Brain", "Feel", 30.90);
TablicaPlyt tabP(10);
tabP + p1;
tabP + p2;
tabP + p3;
tabP + p4;
tabP + p5;
tabP + p6;
tabP.drukujTest();
tabP.usun(1);
cout << "Tablica plyt po usunieciu jednej pozycji: " << endl << endl;
tabP.drukujTest();
tabP.save();
cout << "\n\n\n\nNOWA TABLICA WCZYTANA Z PLIKU";
TablicaPlyt nowatab(10);
nowatab.load();
nowatab.drukujTest();
nowatab.drukujNajtansze();
system("pause");
return 0;
}