Pagini recente » Cod sursa (job #2504465) | Cod sursa (job #931766) | Cod sursa (job #2840082) | Cod sursa (job #2493468) | Cod sursa (job #3266588)
/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
struct Elev {
char nume[101];
char prenume[101];
float media1, media2, media3;
float mediaGenerala;
float calculeazaMediaGenerala() {
return (media1 + media2 + media3) / 3.0;
}
};
int main() {
int n, p;
cin >> n >> p;
Elev elevi[100];
float sumaMediilor = 0.0;
for (int i = 0; i < n; i++) {
cin >> elevi[i].nume >> elevi[i].prenume >> elevi[i].media1 >> elevi[i].media2 >> elevi[i].media3;
elevi[i].mediaGenerala = elevi[i].calculeazaMediaGenerala();
sumaMediilor += elevi[i].mediaGenerala;
}
float mediaClasei = sumaMediilor / n;
if (p == 1) {
int count = 0;
for (int i = 0; i < n; i++) {
if (elevi[i].mediaGenerala >= mediaClasei) {
count++;
}
}
cout << count << endl;
} else if (p == 2) {
cout << fixed << setprecision(2) << mediaClasei << endl;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (elevi[i].mediaGenerala < elevi[j].mediaGenerala ||
(elevi[i].mediaGenerala == elevi[j].mediaGenerala && strcmp(elevi[i].nume, elevi[j].nume) > 0) ||
(elevi[i].mediaGenerala == elevi[j].mediaGenerala && strcmp(elevi[i].nume, elevi[j].nume) == 0 && strcmp(elevi[i].prenume, elevi[j].prenume) > 0)) {
Elev temp = elevi[i];
elevi[i] = elevi[j];
elevi[j] = temp;
}
}
}
for (int i = 0; i < n; i++) {
cout << elevi[i].nume << " " << elevi[i].prenume << " " << fixed << setprecision(2) << elevi[i].mediaGenerala << endl;
}
}
return 0;
}