Sa se scrie un program care administreaza o fabrica de jucarii. Fiecare jucarie are atasata o eticheta pe care este scris: denumire, material, mod de functionare(mecanic, electronic), destinatar. Campul “destinatar” contine la randul lui informatii referitoare la varsta si gen. Sa se afiseze pe ecran toate jucariile destinate fetelor. Rezolvare in c++.
Multumesc!
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <string>
#include <vector>
class Destinatar
{
int varsta;
std::string gen;
public:
Destinatar(int varsta, std::string gen)
: varsta(varsta)
, gen(gen)
{}
~Destinatar() {}
friend std::ostream& operator<<(std::ostream& os, const Destinatar& destinatar)
{
os << "varsta: " << destinatar.varsta << ", gen: " << destinatar.gen;
return os;
}
std::string getGen() const { return gen; }
};
class Jucarie
{
std::string denumire, material, modDeFunctionare;
Destinatar destinatar;
public:
Jucarie(std::string denumire, std::string material, std::string modDeFunctionare, Destinatar destinatar)
: denumire(denumire), material(material), modDeFunctionare(modDeFunctionare), destinatar(destinatar) {}
friend std::ostream& operator<<(std::ostream& os, const Jucarie& jucarie)
{
os << "Denumire jucarie: " << jucarie.denumire << ", material: " << jucarie.material
<< ", mod de functionare: " << jucarie.modDeFunctionare << ", destinatar: " << jucarie.destinatar;
return os;
}
Destinatar getDestinatar() const { return destinatar; }
};
class FabricaDeJucarii
{
std::vector<Jucarie> vectorJucarii;
public:
FabricaDeJucarii(std::vector<Jucarie> vectorJucarii)
: vectorJucarii(vectorJucarii)
{}
friend std::ostream& operator<<(std::ostream& os, const FabricaDeJucarii& fabricaDeJucarii)
{
os << "Magazinul de jucarii are urmatoarele jucarii in depozit:\n";
for (const auto& jucarie : fabricaDeJucarii.vectorJucarii) {
os << "\t" << jucarie << "\n";
}
return os;
}
void afisareJucarii() {
for (const Jucarie& jucarie : vectorJucarii) {
if (jucarie.getDestinatar().getGen() == "Feminin") {
std::cout << jucarie << std::endl;
}
}
}
};
int
main()
{
/* creăm 3 obiecte de tip Destinatar (poți adăuga field-urile-n Jucarie dacă nu mai vrei o clasă-n +) */
Destinatar destinatarPrimaJucarie(16, "Baiat");
Destinatar destinatarADouaJucarie(17, "Feminin");
Destinatar destinatarATreiaJucarie(13, "Feminin");
/* crăm vectorul în care și construim obiectele (pentru a evita copierea lor folosim emplace_back în loc de push_back) */
std::vector<Jucarie> vectorJucarii;
vectorJucarii.emplace_back("Masina cu Telecomanda", "Plastic", "Electronic", destinatarPrimaJucarie);
vectorJucarii.emplace_back("Papusa", "Plastic", "Mecanic", destinatarADouaJucarie);
vectorJucarii.emplace_back("Papusa", "Plastic", "Mecanic", destinatarATreiaJucarie);
/* construim fabrica de jucării iar metoda afisareJucarii() va afișa jucăriile destinate fetelor */
FabricaDeJucarii fabricaDeJucarii(vectorJucarii);
fabricaDeJucarii.afisareJucarii();
return 0;
}
Cam asta e baza, mai poți crea tu funcțiile în care introduci datele de la tastatură și creezi obiectele în loc de a le avea deja create.