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 vizitat platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, vă rugăm să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la lista de favorite!