fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #include <iostream>
  5. #include <cstring>
  6. using namespace std;
  7.  
  8. struct Elev {
  9. double medie;
  10. char nume[21];
  11. };
  12.  
  13. void sortare(int n, Elev elevi[30]) {
  14. int aux;
  15. char auxCh[20];
  16. for (int i = 0; i < n - 1; ++i) {
  17. for (int j = i + 1; j < n; ++j) {
  18. if (elevi[i].medie > elevi[j].medie) {
  19. aux = elevi[i].medie;
  20. elevi[i].medie = elevi[j].medie;
  21. elevi[j].medie = aux;
  22. strcpy(auxCh, elevi[i].nume);
  23. strcpy(elevi[i].nume, elevi[j].nume);
  24. strcpy(elevi[j].nume, auxCh);
  25. } else if (elevi[i].medie == elevi[j].medie) {
  26. if (strcmp(elevi[i].nume, elevi[j].nume) > 0) {
  27. aux = elevi[i].medie;
  28. elevi[i].medie = elevi[j].medie;
  29. elevi[j].medie = aux;
  30. strcpy(auxCh, elevi[i].nume);
  31. strcpy(elevi[i].nume, elevi[j].nume);
  32. strcpy(elevi[j].nume, auxCh);
  33. }
  34. }
  35. }
  36. }
  37. return;
  38. }
  39.  
  40. int main() {
  41. int n;
  42. Elev elevi[30];
  43.  
  44. cout << "Introdu numarul de elevi: ";
  45. cin >> n;
  46.  
  47. // Verificăm dacă numărul de elevi este valid
  48. if (n < 0 || n > 30) {
  49. cout << "Numar invalid de elevi. Trebuie sa fie intre 0 si 30." << endl;
  50. return 1;
  51. }
  52.  
  53. for (int i = 0; i < n; ++i) {
  54. cout << "Introdu datele pentru elevul " << i + 1 << " (medie nume): ";
  55. cin >> elevi[i].medie;
  56. cin.ignore(); // ignorăm caracterul de newline rămas de la citirea mediei
  57. cin.getline(elevi[i].nume, 21);
  58.  
  59. // Validăm media
  60. if (elevi[i].medie < 1.00 || elevi[i].medie > 10.00) {
  61. cout << "Media trebuie sa fie intre 1.00 si 10.00." << endl;
  62. return 1;
  63. }
  64. }
  65.  
  66. sortare(n, elevi);
  67.  
  68. cout << "Lista elevilor sortata:" << endl;
  69. for (int i = 0; i < n; ++i) {
  70. cout << elevi[i].medie << " " << elevi[i].nume << "\n";
  71. }
  72.  
  73. return 0;
  74. }
Success #stdin #stdout 0.01s 5280KB
stdin
3
9.345
Ion
2.234
Andrei L
2.234
Andrei C
stdout
Introdu numarul de elevi: Introdu datele pentru elevul 1 (medie nume): Introdu datele pentru elevul 2 (medie nume): Introdu datele pentru elevul 3 (medie nume): Lista elevilor sortata:
2.234 Andrei C
2 Andrei L
9 Ion