Într-o clasă sunt maxim 30 de elevi, fiecare elev fiind identificat prin nume şi prenume.
Elevul poate primi maxim 5 note la o disciplină, pe semestru, şi o notă la teză. Se citesc
de la tastatură: numărul de elevi din clasă şi, pentru fiecare elev, numele, prenumele şi
notele. Dacă are mai puțin de 5 note, notelor lipsă li se va atribui valoarea 0. Să se
calculeze şi să se afişeze mediile elevilor din clasă la acea disiplină, în ordinea:
a) descrescătoare a mediilor;
b) alfabetică a numelui şi prenumelui.
Am nevoie de ajutor, vă rog...
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
struct elevi{
char nume[20], prenume [20];
float note[5], teza, mediaNote, mediaTotala;
}e[30], aux[30];
int n, i, j, x, nrNote, inv; char invChar[20];
cin >> n;
for(i = 1; i <= n; i++){
cin >> e[i].nume;
cin >> e[i].prenume;
cin >> nrNote;
for(j = 1; j <= nrNote; j++)
cin >> e[i].note[j];
for(j = nrNote + 1; j <= 5; j++)
e[i].note[j] = 0;
cin >> e[i].teza;
}
for(i = 1; i <= n; i++){
e[i].mediaNote = x = 0;
for(j = 1; j <= 5; j++)
if(e[i].note[j] != 0){
e[i].mediaNote = e[i].mediaNote + e[i].note[j];
x++;
}
e[i].mediaNote = e[i].mediaNote / x;
e[i].mediaTotala = (3 * e[i].mediaNote + e[i].teza) / 4;
}
for(i = 1; i <= n; i++)
aux[i].mediaTotala = e[i].mediaTotala;
for(i = 1; i < n; i++)
for(j = i + 1; j <= n; j++)
if(aux[i].mediaTotala < aux[j].mediaTotala){
inv = aux[i].mediaTotala;
aux[i].mediaTotala = aux[j].mediaTotala;
aux[j].mediaTotala = inv;
}
for(i = 1; i <= n; i++)
cout << aux[i].mediaTotala << " ";
cout << endl;
for(i = 1; i < n; i++)
for(j = i + 1; j <= n; j++){
if(strcmp(e[i].nume, e[j].nume) < 0){
strcpy(invChar, e[i].nume);
strcpy(e[i].nume, e[j].nume);
strcpy(e[j].nume, invChar);
}
else if (strcmp(e[i].nume, e[j].nume) == 0)
if (strcmp(e[i].prenume, e[j].prenume) < 0){
strcpy(invChar, e[i].prenume);
strcpy(e[i].prenume, e[j].prenume);
strcpy(e[j].prenume, invChar);
}
}
for(i = 1; i <= n; i++)
cout << e[i].mediaTotala << " ";
return 0;
}
Problema e foarte lunga, stiu...
A fost verificata in C++.