# PBinfo #3164 – qclasa – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Se dau n, reprezentând numărul de elevi apoi, pe câte un rând, datele fiecărui elev: codul (număr natural de maxim 4 cifre), media la informatică (număr natural de la 1 la 10) și numărul de absențe. Definiți un tip structură pentru a putea memora datele unui elev și rezolvați cerințele:

a) memorați datele tuturor elevilor într-un vector de structuri de tipul definit;
b) afișați numărul de elevi cu media 10
c) afișați media clasei (se va afișa doar partea întreagă a ei).
d) afișați primii doi elevi după absențe (elevii cu cele mai multe absențe). Dacă sunt mai mulți elevi cu același număr de absențe se afișează în ordinea crescătoare a codului. Dacă sunt mai mult de doi elevi număr maxim de absențe se afișează doar doi.

Date de intrare
Programul citește datele din fișierul qclasa.in astfel: pe primul rând n reprezentând numărul de elevi, iar apoi n rânduri cu câte trei numere naturale fiecare, separate prin câte un spațiu, reprezentând respectiv: codul, media și numărul de absențe pentru câte un elev.

Date de ieșire
Programul va afișa în fișierul qclasa.out patru linii, astfel: pe prima valoarea de la cerința b), pe a doua valoarea de la cerința c) pe a treia și pe a patra toate datele pentru fiecare dintre elevii obținuți la cerința d). Datele aceluiași elev se afișează în ordinea în care acestea se citesc din fișierul de intrare.

Restricții și precizări

1 ≤ n ≤ 40
codurile elevilor se garantează că sunt distincte
mediile sunt numere naturale de la 1 la 10
valorile pentru numărul de absențe sunt cuprinse între 0 și 100

Exemplu:
qclasa.in

3
1 10 3
2 8 1
3 8 5
qclasa.out

1
8
3 8 5
1 10 3
Explicație
Este un singur elev cu media 10. Media clasei este 8.6666 dar noi afișăm doar partea întreagă a ei. Elevul cu codul 3 are cele mai multe absențe și îl urmează cel cu codul 1.

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
struct elev {
    int cod;
    int media;
    int absente;
};
elev v[100], maxim1, maxim2;
int n, i, a, b;
int main () {
    ifstream fin("qclasa.in");
    ofstream fout("qclasa.out");
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i].cod>>v[i].media>>v[i].absente;
    a = 0;
    for (i=1;i<=n;i++)
        if (v[i].media == 10)
            a++;
    fout<<a<<"\n";
    b = 0;
    for (i=1;i<=n;i++)
        b += v[i].media;
    fout<<b/n<<"\n";
    maxim1 = v[1];
    maxim2 = v[1];
    for (i=2;i<=n;i++)
        if (v[i].absente > maxim1.absente || v[i].absente == maxim1.absente && v[i].cod < maxim1.cod) {
            maxim2 = maxim1;
            maxim1 = v[i];
        } else
            if (v[i].absente > maxim2.absente || v[i].absente == maxim2.absente && v[i].cod < maxim2.cod)
                maxim2 = v[i];
    fout<<maxim1.cod<<" "<<maxim1.media<<" "<<maxim1.absente<<"\n";
    fout<<maxim2.cod<<" "<<maxim2.media<<" "<<maxim2.absente<<"\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3164)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3164/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3164/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
