2802 - Clasa

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerința

Se citește de la tastatură numărul n și un număr p cu valoarea 1 sau 2 și apoi n șiruri de tip nume prenume media1 media2 media3 separate prin spații.

Pentru p=1, se va afișa numărul elevilor care au media generală mai mare sau egală decât media clasei.

Pentru p=2, se va afișa pe primul rând media clasei și pe următoarele n rânduri, numele, prenumele și media generală a fiecărui elev, separate printr-un singur spațiu, sortat descrescător după medie; la medii egale se sortează crescător după nume, iar la nume egale crescător după prenume.

Date de intrare

Programul citește de la tastatură numerele n p, iar apoi de pe câte o linie cele n structuri de forma specificată în enunț.

Date de ieșire

Dacă p=1 programul va afișa pe ecran numărul elevilor care au media generală mai mare au egală decât media clasei.

Dacă p=2 programul va afișa pe primul rând media clasei și pe următoarele n rânduri, numele, prenumele și media generală ale elevilor, separate printr-un singur spațiu, sortate conform cerinței.

Restricții și precizări

  • 1 ≤ n ≤ 100
  • numele și prenumele au cel mult 100 de caractere
  • toate mediile clasei se vor afișa cu două zecimale, rezultatul afișat este considerat valid dacă diferența în valoare absolută dintre acesta și cel corect este cel mult 0.01.
  • media generală a unui elev este media aritmetică celor trei medii date.
  • media clasei este media aritmetică a mediilor generale ale elevilor.
  • pentru datele reale se recomandă folosirea tipurilor de date în dublă precizie (tipul C/C++ double)

Exemplul 1:

Intrare

5 1
Juro Muro 2 3 5
San Hill 7 5 9
Barbarigo San 9 2 4
Ezio Marbo 2 6 3
Gorbo Borbo 2 4 6

Ieșire

2

Încărcare soluție

Lipește codul aici

function comp(i, j) {
    if (i.medieg > j.medieg)
        return 1;
    if (i.medieg === j.medieg && i.nume < j.nume)
        return 1;
    if (i.medieg === j.medieg && i.nume === j.nume && i.prenume < j.prenume)
        return 1;
    return 0;
}
var w = new Array(101);
var s;
var n, p;
var g = 0;
n = parseInt(prompt());
p = parseInt(prompt());
prompt();
for (var i = 0; i < n; i++) {
    var v = [];
    s = prompt();
    var buffer = s.split(" ");
    for (var j = 0; j < buffer.length; j++) {
        v.push(buffer[j]);
    }
    switch (j) {
        case 0:
            w[i].nume = v[j];
            break;
        case 1:
            w[i].prenume = v[j];
            break;
        case 2:
            w[i].medie1 = parseInt(v[j]);
            break;
        case 3:
            w[i].medie2 = parseInt(v[j]);
            break;
        case 4:
            w[i].medie3 = parseInt(v[j]);
            break;
    }
    w[i].medieg = (w[i].medie1 + w[i].medie2 + w[i].medie3) / 3;
    g += w[i].medieg;
}
g /= n;
if (p === 1) {
    var ap = 0;
    for (var i = 0; i < n; i++) {
        if (w[i].medieg >= g)
            ap++;
    }
    console.log(ap);
} else if (p === 2) {
    console.log(g.toFixed(2));
    w.sort(comp);
    for (var i = 0; i < n; i++) {
        console.log(w[i].nume + " " + w[i].prenume + " " + w[i].medieg.toFixed(2));
    }
}