Se dau n elevi pentru ascestia se citeste numele si 2 note
a) Sa se calculeze media fiecărui elev
b) Sa se afiseze elevi in ordine descrescatoare a mediilor ,iar pentru medii egale in ordine alfabetica
In (c++)
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <vector>
#include <algorithm>
struct dateElev {
std::string nume;
int nota1, nota2;
double media;
};
bool comparator(dateElev a, dateElev b)
{
return a.media == b.media ? a.nume < b.nume : a.media > b.media;
}
int main()
{
std::vector<dateElev> clasa;
int n;
std::cout << "Număr elevi: ";
std::cin >> n;
clasa.reserve(n);
for (int i = 0; i < n; i++) {
dateElev elev;
std::cout << "Elev " << i + 1 << std::endl;
std::cout << " Nume: ";
std::cin >> elev.nume;
std::cout << " Nota 1: ";
std::cin >> elev.nota1;
std::cout << " Nume: ";
std::cin >> elev.nota2;
clasa.push_back(elev);
}
for (int i = 0; i < clasa.size(); i++) {
clasa[i].media = (clasa[i].nota1 + clasa[i].nota2) / 2.0;
}
std::sort(clasa.begin(), clasa.end(), comparator);
for (int i = 0; i < clasa.size(); i++) {
std::cout << clasa[i].nume << ": " << clasa[i].media << std::endl;
}
}
Explicație:
Am presupus că aţi studiat tipul de date struct.