#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
#include "Studente.h"
#include "Persona.h"


Studente::Studente(string n, string c, string mat, int gg, int mm, int aa): Persona(n,c,gg,mm,aa)
{
   if (checkMatricola(mat))
   {
      matricola=mat;
      numEsami=0;
   }
   else
   {
      cout << "ERRORE: MATRICOLA NON VALIDA" << endl;
      matricola="0000000";  
   }

   
}

Studente::~Studente()
{}


bool Studente::checkMatricola(string mat2check)  
{
     int lungh=mat2check.size();
     char init = mat2check.at(0);
     bool ok = (lungh==MAX_MAT && (init =='A' || init =='B'));
     int i=1;
     while (ok && i<lungh)
     {
         ok=('0'<=mat2check[i] && mat2check[i]<='9');
         i++;
     }
     return ok;
}

bool Studente::trasferito()  
{
   return (matricola[0] == 'B');
}

void Studente::aggiungiEsame(Esame nuovo)
{
     listaEsami[numEsami]=nuovo;
     numEsami++;
}

double Studente::media()
{
    double media=0;
    for (int i=0; i< numEsami; i++)
    {
        media+=listaEsami[i].getVoto();
    }
    media=media/numEsami;
	return (media);
}

int Studente::esamiSostenuti()
{
   return (numEsami);
}

int Studente::quanteLodi()
{
       int quante=0;
       for (int i=0; i< numEsami; i++)
       {
          if (listaEsami[i].presaLode())
          quante++;
       }
       return (quante);
}


void Studente::stampa()
{
     cout << "*** STAMPA ANAGRAFICA STUDENTE***" << '\n' << endl;
     Persona::stampa();
     cout << "Matricola: " << matricola << endl;
     if (trasferito())
    		 cout << "Studente trasferito!"  << endl;
}
void Studente::stampaCV()
{
     stampa();
     for (int i=0; i< numEsami; i++)
     {
        listaEsami[i].printFormatoElenco();
     }
}
