#include <iostream>
using namespace std;
#include <iostream>
#include <cstring>
using namespace std;
struct Elev {
double medie;
char nume[21];
};
void sortare(int n, Elev elevi[30]) {
int aux;
char auxCh[20];
for (int i = 0; i < n - 1; ++i) {
for (int j = i + 1; j < n; ++j) {
if (elevi[i].medie > elevi[j].medie) {
aux = elevi[i].medie;
elevi[i].medie = elevi[j].medie;
elevi[j].medie = aux;
strcpy(auxCh, elevi[i].nume);
strcpy(elevi[i].nume, elevi[j].nume);
strcpy(elevi[j].nume, auxCh);
} else if (elevi[i].medie == elevi[j].medie) {
if (strcmp(elevi[i].nume, elevi[j].nume) > 0) {
aux = elevi[i].medie;
elevi[i].medie = elevi[j].medie;
elevi[j].medie = aux;
strcpy(auxCh, elevi[i].nume);
strcpy(elevi[i].nume, elevi[j].nume);
strcpy(elevi[j].nume, auxCh);
}
}
}
}
return;
}
int main() {
int n;
Elev elevi[30];
cout << "Introdu numarul de elevi: ";
cin >> n;
// Verificăm dacă numărul de elevi este valid
if (n < 0 || n > 30) {
cout << "Numar invalid de elevi. Trebuie sa fie intre 0 si 30." << endl;
return 1;
}
for (int i = 0; i < n; ++i) {
cout << "Introdu datele pentru elevul " << i + 1 << " (medie nume): ";
cin >> elevi[i].medie;
cin.ignore(); // ignorăm caracterul de newline rămas de la citirea mediei
cin.getline(elevi[i].nume, 21);
// Validăm media
if (elevi[i].medie < 1.00 || elevi[i].medie > 10.00) {
cout << "Media trebuie sa fie intre 1.00 si 10.00." << endl;
return 1;
}
}
sortare(n, elevi);
cout << "Lista elevilor sortata:" << endl;
for (int i = 0; i < n; ++i) {
cout << elevi[i].medie << " " << elevi[i].nume << "\n";
}
return 0;
}