Informatică, întrebare adresată de nicoletapascu5065, 8 ani în urmă

Un produs e caracterizat prin nume, pret unitar (numar intreg), unitate de masura (sir de caractere). Scrieti clasa Produs si supraincarcati operatorul de scriere, afisandu-l pe ecran conform exemplului. Scrieti o clasa Magazin, care pe langa nume, contine o lista de produse. Cititi datele unui magazin (nume magazin, numar produse, lista produse), si afisati un inventar al magazinului. Sample Input:
Apa plata
2
sticla
MegaImage
2
Coca-Cola
Sticla 2L
6
Rosii
kg
9
Sample Output:
Apa plata, 2 RON/sticla
MegaImage:
* Coca-Cola, 6 RON/Sticla 2L
* Rosii, 9 RON/kg.

Răspunsuri la întrebare

Răspuns de andrei750238
0

#include <iostream>

#include <string>

#include <list>

class Produs {

private:

std::string nume;

float pret_unitar;

std::string unitate;

public:

Produs(const std::string& _nume, float _pret_unitar, const std::string& _unitate) :

 nume(_nume), pret_unitar(_pret_unitar), unitate(_unitate) {}

friend std::ostream& operator<<(std::ostream& out, const Produs& prod);

};

std::ostream& operator<<(std::ostream& out, const Produs& prod) {

out << prod.nume << ", " << prod.pret_unitar << " RON/" << prod.unitate;

return out;

}

class Magazin {

private:

std::string nume_magazin;

unsigned numar_produse;

std::list<Produs> lista_produse;

public:

Magazin(const std::string& _nume_magazin, unsigned _numar_produse) :

 nume_magazin(_nume_magazin), numar_produse(_numar_produse) {}

void citeste_produse() {

 for (unsigned i = 0; i < numar_produse; i++) {

  std::string nume;

  float pret_unitar;

  std::string unitate;

  std::getline(std::cin, nume);

  std::getline(std::cin, unitate);

  std::cin >> pret_unitar;

  std::cin.get();

  lista_produse.emplace_back(nume, pret_unitar, unitate);

 }

}

void afiseaza_inventar() {

 std::cout << nume_magazin << " :\n";

 for (auto& produs : lista_produse)

  std::cout << " * " << produs << std::endl;

}

};

int main() {

Produs* prod;

Magazin* maga;

//Citire produs

{

 std::string nume;

 float pret_unitar;

 std::string unitate;

 std::getline(std::cin, nume);

 std::cin >> pret_unitar;

 std::cin.get();

 std::getline(std::cin, unitate);

 prod = new Produs(nume, pret_unitar, unitate);

}

//Citire magazin

{

 std::string nume_magazin;

 unsigned numar_produse;

 std::getline(std::cin, nume_magazin);

 std::cin >> numar_produse;

 std::cin.get();

 maga = new Magazin(nume_magazin, numar_produse);

 maga->citeste_produse();

}

//Afisare rezultat

std::cout << *prod << std::endl;

maga->afiseaza_inventar();

//Dealocare

delete maga;

delete prod;

}

Anexe:
Alte întrebări interesante