2802 - Clasa

From Bitnami MediaWiki

Cerința[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 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:[edit | edit source]

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[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python" line="1"> ​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));
   }

} </syntaxhighlight>