Informatică, întrebare adresată de claudianastasiu, 8 ani în urmă

Ești rugat la sfârșitul anului de către diriginta clasei să introduci în baza de date a școlii clasamentul clasei tale, în ordine crescătoare în funcție de mediile pe care le-au avut colegii tăi la sfârșitul anului.

Pentru a face acest lucru te vei folosi de o structură de felul următor:

struct Elev {
double medie;
char nume[21];
};
Cerință
Definește o funcție sortare care primește ca parametru un numar natural n și un șir de n elevi. Funcția va sorta elevii crescător în funcție de medie, iar în caz de egalitate în funcție de nume.

Semnătură funcție
void sortare(int n, Elev elevi[30]);
Restricții și precizări
1.00 ≤ media fiecărui elev ≤ 10.00
mediile elevilor sunt numere raționale cu 2 zecimale
numele unui elev nu va depăși 20 de caractere
0 ≤ n ≤ 30
elementele șirului elevi vor fi indexate începând cu poziția 0
Exemplu
Pentru n = 4 și elevii:

medie = 5.00; nume[] = "Popescu Ioana"
medie = 5.00; nume[] = "Popescu Dani"
medie = 8.79; nume[] = "Cristescu Aurel"
medie = 6.98; nume[] = "Cristescu Ioan"
la finalul apelului funcției sortare, șirul va conține, în această ordine, elevii:

medie = 5.00; nume[] = "Popescu Dani"
medie = 5.00; nume[] = "Popescu Ioana"
medie = 6.98; nume[] = "Cristescu Ioan"
medie = 8.79; nume[] = "Cristescu Aurel"
Atenție!
Codul tău va conține doar definiția funcției cerute.

Răspunsuri la întrebare

Răspuns de Apollyon
0

Răspuns:

#include <iostream>

struct Elev

{

 double medie;

 char nume[21];

};

void sortare(int n, Elev elevi[30]);

void afisareVector(int n, Elev elevi[30]);

int main()

{

 /* am creat 4 elevi cu datele din problemă */

 Elev elevul1{ 5.00, "Popescu Ioana" };

 Elev elevul2{ 5.00, "Popescu Dani" };

 Elev elevul3{ 8.79, "Cristescu Aurel" };

 Elev elevul4{ 6.98, "Cristescu Ioan" };

 /* pe care mai apoi i-am adăugat într-un array */

 Elev vectorElevi[]{ elevul1, elevul2, elevul3, elevul4 };

/* am sortat vectorul */

 sortare(4, vectorElevi);

 /* și o funcție ca să-ți afișeze vectorul de elevi sortat */

 afisareVector(4, vectorElevi);

 return 0;

}

void sortare(int n, Elev elevi[30])

{

/* am folosit bubble sort pentru sortare */

 for (int i{}; i < n - 1; i++) {

   for (int j{}; j < n - i - 1; j++) {

     if (elevi[j].medie > elevi[j + 1].medie) {

       /* std::swap schimba valorile între ele */

       std::swap(elevi[j], elevi[j + 1]);

     }

   }

 }

}

void afisareVector(int n, Elev elevi[30])

{

 for (int i{}; i < n; i++) {

   std::cout << elevi[i].nume << " are media " << elevi[i].medie << "!\n";

 }

}


claudianastasiu: Janes hai pe disc
Alte întrebări interesante