👤

Cei N prieteni se intalnesc dupa mult timp. Se da urmatorul tabel cu cei n prieteni care contine: ● numele ● prenumele ● greutate ● inaltime ● varsta Sa se elimine minorii, cei care inaltime sub 140 cm si peste 220 cm, iar apoi sa se afiseze prietenul care este cel mai gras si cel mai slab

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!


Ze Learners: Alte intrebari