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; }