#include<iostream>
#include<fstream>
#include<math.h>
#include <stdlib.h>
using namespace std;
ifstream fin ("in.txt");
ofstream fout("out.txt");
struct materien{
char nume[25];
double media;
};
struct elev{
char nume[40];
materien mat [19];
};
int main ()
{
elev a[25];
char var[50];
int i=0, nrelevi=0, j=0,k=0, y, ct=0, nrmaterii=0;
fin>>nrelevi;
fin.get();
fin>>nrmaterii;
fin.get();
///////////////// Citire numelui elevului. "i" va reprezenta nr elevului.
for (i=0; i<nrelevi; i++)
{
fin.getline(a[i].nume, 39);
fin.get();
////////////// citirea materiei. Avem 18 materii. Asadar, j=0, j<18
for (j=0;j< nrmaterii; j++)
{
fin.getline( var, 50); /// citim toata linia si vom proceda astfel:
fin.get();
for (k=0; var[k]!=' '; k++)// aici copiem litera cu litera din "var" in a[i].nume[k], adica materia.
a[i].mat[j].nume[k]=var[k]; /// Cand am dat de spatiu, ne oprim. de ex avem Biologie 2 3 3 2. Copiem Biologie si cand am dat de spatiu ne-am oprit
ct=0;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for ( k= strlen (a[i].mat[j].nume)+1; k < strlen (var); k++)
{
if (var[k] >= '2' && var[k] <='9')
{
ct++;
y=(var[k]- '0');
a[i].mat[j].media = a[i].mat[j].media+ +y; // Notele sunt de tip char. Pentru a le transforma in tip int, scadem 47, adica caracterul '0'
}
else
if (var[k] == '1' && var[k+1]=='0')
{
ct++;
y=10;
a[i].mat[j].media = a[i].mat[j].media +y;
}
else
if (var[k]=='1' )
{
ct++;
y=(var[k]- '0');
a[i].mat[j].media = a[i].mat[j].media+ +y;
}
}
if (j<4)
a[i].mat[j].media = (((a[i].mat[j].media-y) / (ct-1) ) * 3 + y) /4;
else
a[i].mat[j].media = a[i].mat[j].media/ct;
///////////////////////////////////////////////////////////////////////////////////////////////
/* La ce foloseste y-ul.
In fisierul de intrare, dupa numele fiecarei persoane, urmatoarele 4 materii vor fi materiile cu teza.
Dupa cum ai vazut, avem (if j<4). Deci daca j e mai mic decat 4, atunci materia e cu teza. si aici intra y-ul
dupa cum ai vazut, y-ul primeste var[k] - '0'. daca de ex am avea 9, 9 e de tip char, iar ddaca scadem '0' ni-l va face de tip int.
Nota la teza va fi ultima din rand.
Iar noi adunam toate notele si inca nu le impartim. Dupa ce le-am adunat, scadem y, care este ultima nota din rand, impartim la ct-1 (fiind ca am scazut y-ul, care este teza)
dupa cee am facut impartirea, inmultim cu 3, adunam teza ( y ) si impartim la 4.
*/
}
}
return 1;
}