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;
b) afișați numărul de elevi cu media 10
c) afișați media clasei (se va afișa doar partea întreagă a ei).
d) afișați primii doi elevi după absențe (elevii cu cele mai multe absențe). Dacă sunt mai mulți elevi cu același număr de absențe se afișează în ordine crescătoare a codului. Dacă sunt mai mult de doi elevi număr maxim de absențe se afișează doar doi.
Date de intrare
Programul citește datele din fișierul qclasa.in
astfel: pe primul rând n
reprezentând numărul de elevi, iar apoi n
rânduri cu câte trei numere naturale fiecare, separate prin câte un spațiu, reprezentând respectiv: codul, media și numărul de absențe pentru câte un elev.
Date de ieșire
Programul va afișa în fișierul qclasa.out
patru linii, astfel: pe prima valoarea de la cerința b), pe a doua valoarea de la cerința c) pe a treia și pe a patra toate datele pentru fiecare dintre elevii obținuți la cerința d). Datele aceluiași elev se afișează în ordinea în care acestea se citesc din fișierul de intrare.
Restricții și precizări
1 ≤ n ≤ 40
- codurile elevilor se garantează că sunt distincte
- mediile sunt numere naturale de la
1
la10
- valorile pentru numărul de absențe sunt cuprinse între
0
și100
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
.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema qclasa:
#include <fstream>
using namespace std;
struct elev {
int cod;
int media;
int absente;
};
elev v[100], maxim1, maxim2;
int n, i, a, b;
int main () {
ifstream fin("qclasa.in");
ofstream fout("qclasa.out");
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i].cod>>v[i].media>>v[i].absente;
a = 0;
for (i=1;i<=n;i++)
if (v[i].media == 10)
a++;
fout<<a<<"\n";
b = 0;
for (i=1;i<=n;i++)
b += v[i].media;
fout<<b/n<<"\n";
maxim1 = v[1];
maxim2 = v[1];
for (i=2;i<=n;i++)
if (v[i].absente > maxim1.absente || v[i].absente == maxim1.absente && v[i].cod < maxim1.cod) {
maxim2 = maxim1;
maxim1 = v[i];
} else
if (v[i].absente > maxim2.absente || v[i].absente == maxim2.absente && v[i].cod < maxim2.cod)
maxim2 = v[i];
fout<<maxim1.cod<<" "<<maxim1.media<<" "<<maxim1.absente<<"\n";
fout<<maxim2.cod<<" "<<maxim2.media<<" "<<maxim2.absente<<"\n";
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3164 qclasa
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3164 qclasa de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!