Rezolvare completă PbInfo #3164 qclasa

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 la 10
  • valorile pentru numărul de absențe sunt cuprinse între 0 și 100

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 Adresa de email.

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!