Informatică, întrebare adresată de Adymocanu05, 8 ani în urmă

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 de VxF
1

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.

Alte întrebări interesante