2802 - Clasa: Difference between revisions

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

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>