Structura Elev
Ești rugat la sfârșitul anului 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"
Răspunsuri la întrebare
Răspuns de
0
Salut!
Ai functia in C++ mai jos
void sortare(int n, Elev elevi[30])
{
for (int i = 0; i < n - 1; ++i)
{
for (int j = i + 1; j < n; ++j)
{
if (elevi[i].medie > elevi[j].medie)
{
swap(elevi[i], elevi[j]);
}
if (elevi[i].medie == elevi[j].medie)
{
if (strcmp(elevi[i].nume, elevi[j].nume) > 0)
{
swap(elevi[i], elevi[j]);
}
}
}
}
}
Explicatie:
- Folosim algoritmul de sortare prin selectie
- Daca media unui elevi este mai mare decat a altui elevi atunci ii interschimbam intre ei
- Dar daca mediile sunt egale, atunci comparam alfabetic numele lor si in functie de rezultat le dam sau nu swap
Patrick100:
Multumesc frumos!
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Franceza,
8 ani în urmă
Franceza,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă