Răspuns :
Răspuns:
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using std::cout, std::endl, std::cin, std::string, std::vector;
struct Prieten {
string _nume, _prenume;
double _greutate;
int _inaltime, _varsta;
// constructor-ul
Prieten(string nume, string prenume, double greutate, int inaltime, int varsta)
: _nume(nume), _prenume(prenume), _greutate(greutate), _inaltime(inaltime), _varsta(varsta) { }
};
// Adaugă prieteni în vector
static void creeareVector(vector<Prieten>& vectorPrieteni) {
vectorPrieteni.reserve(5);
vectorPrieteni.emplace_back("Vasilescu", "Vasile", 88.5, 163, 20);
vectorPrieteni.emplace_back("Andreescu", "Andrei", 95.3, 160, 17);
vectorPrieteni.emplace_back("Ionescu", "Ion", 105.8, 189, 23);
vectorPrieteni.emplace_back("Alexandrescu", "Alex", 93.4, 175, 35);
vectorPrieteni.emplace_back("Gigeleanu", "Gigi", 73, 223, 38);
}
// Caută prietenul minor sau cu o înălțime necorespunzătoare și-l scoate din listă
static void eliminarePrieteni(vector<Prieten>& vectorPrieteni) {
for (size_t i = 0; i < vectorPrieteni.size(); ++i)
// dacă are mai puțin de 18 ani sau înălțimea nu e în intervalul (140, 220)
if (vectorPrieteni.at(i)._varsta < 18 || !(vectorPrieteni.at(i)._inaltime > 140 && vectorPrieteni.at(i)._inaltime < 220))
// îl ștergem din vector
vectorPrieteni.erase(vectorPrieteni.begin() + i);
}
// Funcție ajutătoare pentru a afișa elementele vectorului
static void afisareVector(vector<Prieten>& vectorPrieteni) {
int i = 1;
for (Prieten& prietenCurent : vectorPrieteni)
cout << "\t" << i++ << ". " << prietenCurent._nume << " " << prietenCurent._prenume << " are " <<
prietenCurent._varsta << " ani, " << prietenCurent._greutate << " kg si " << prietenCurent._inaltime << "cm inaltime!" << endl;
}
// Funcția returnează o pereche cu cel mai slab și cel mai gras prieten
static void ceiDoiPrieteni(vector<Prieten>& vectorPrieteni) {
// ne folosim de std::minmax_element pentru a găsi cel mai slab și cel mai gras prieten
const auto perechePrieteni = std::minmax_element(begin(vectorPrieteni), end(vectorPrieteni),
// funcție lambda care verifică dacă primul prieten este mai slab decât al doilea
[](const Prieten& primulPrieten, const Prieten& alDoileaPrieten) {
return primulPrieten._greutate < alDoileaPrieten._greutate;
});
/* și afișăm, cel mai slab îl preluăm cu 'first' iar cel mai gras cu 'second' iar '->' este folosit pentru a accesa atributele obiectelor */
cout << "\n" << perechePrieteni.first->_nume << " " << perechePrieteni.first->_prenume << " e cel mai slab (" <<
perechePrieteni.first->_greutate << ")" << endl;
cout << perechePrieteni.second->_nume << " " << perechePrieteni.second->_prenume << " e cel mai gras ("
<< perechePrieteni.second->_greutate << ")" << endl;
}
int main() {
vector<Prieten> vectorPrieteni;
creeareVector(vectorPrieteni);
cout << "Vectorul cu prieteni initial:\n";
afisareVector(vectorPrieteni);
eliminarePrieteni(vectorPrieteni);
cout << "\nVectorul cu prieteni dupa stergere:\n";
afisareVector(vectorPrieteni);
ceiDoiPrieteni(vectorPrieteni);
}
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!