2802 - Clasa: Difference between revisions
Pagină nouă: = Cerința = Se citește de la tastatură numărul <code>n</code> și un număr <code>p</code> cu valoarea <code>1</code> sau <code>2</code> și apoi <code>n</code> șiruri de tip <code>nume prenume media1 media2 media3</code> separate prin spații. Pentru <code>p=1</code>, se va afișa numărul elevilor care au media generală mai mare sau egală decât media clasei. Pentru <code>p=2</code>, se va afișa pe primul rând media clasei și pe următoarele <code>n</code> rân... |
No edit summary |
||
Line 38: | Line 38: | ||
=== Lipește codul aici === | === Lipește codul aici === | ||
1 | <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> | |||
Latest revision as of 13:56, 14 December 2023
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>