397
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;
Exemplu
qclasa.in
3 1 10 3 2 8 1 3 8 5
Ieșire
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.
#include <bits/stdc++.h>
using namespace std;
ifstream cin("qclasa.in");
ofstream cout("qclasa.out");
int n , cnt , cc;
struct elev
{
int medie, cod, abs;
}a[50];
bool comp(elev a, elev b)
{
if(a.abs > b.abs) return 1;
else if(a.abs == b.abs && a.cod < b.cod) return 1;
else return 0;
}
int main()
{
cin >> n;
for(int i = 1; i <= n; ++i)
{
cin >> a[i].cod >> a[i].medie >> a[i].abs;
if(a[i].medie == 10) cnt++;
cc += a[i].medie;
}
cout << cnt << '\n' << cc / n << '\n';
sort(a + 1, a + n + 1, comp);
for(int i = 1; i <= 2; ++i)
cout << a[i].cod << ' ' << a[i].medie << ' ' << a[i].abs << "\n";
return 0;
}
Comentarii