function voto_html

% DATA ESAME.
data_esame_string=' 4 febbraio 2015';

% STRINGA VISIONE COMPITO.
data_visione_string=' Martedi'' 10 febbraio';
ora_string=', ore 9, aula 2 AB 45,';
luogo_string='secondo piano del Dipartimento di Matematica, via Trieste 63, accanto a Economia, di fronte alla passerella sul Piovego.';

% MATRICOLA CORSO.
matricola_corso_string='Dispari.';

% ORDINE ALFABETICO. 0: NO SORT. 1: SORT.
do_sort=1;

% PRIMA DELL'ORALE: 0: NON ESEGUITO ORALE. 1: ESEGUITO ORALE.
orale_eseguito=1;

% LISTA TOTALE: TEMA A, TEMA B, VOTO FINALE, VOTO DOPO ORALE.
% 0: LISTA BREVE. 1: LISTA COMPLETA.
lista_totale=0;





























%--------------------------------------------------------------------------
% NON TOCCARE SOTTO.
%--------------------------------------------------------------------------

% NOME FILE
ss=clock;
date_string=datestr(ss,30);
nomefile=strcat('risultati_',date_string,'.html');
diary (nomefile); diary on;

visione_string=strcat(data_visione_string,ora_string,luogo_string);

% PREAMBOLO.
preambolo_html(data_esame_string,matricola_corso_string,orale_eseguito,lista_totale);

% CALCOLA PARTECIPANTI.
partecipanti=calcola_partecipanti;

% SORT PARTECIPANTI.
if do_sort == 1
    persona_sort=ordina(partecipanti);
else
    persona_sort=(1:partecipanti)';
end


% TABELLA.
for persona_index=1:partecipanti
    
    persona=persona_sort(persona_index);
    
    [nome,cognome,matricola,tema_num,prevoto,votoA_num,votoB_num,...
        voto_dopo_orale,ritirato]=...
        lista_esami(persona);
    voto_finale_num=assembla_voto_finale(prevoto,votoA_num,votoB_num);
    it_is_strange=odd_check(prevoto,votoA_num,votoB_num);
    if ritirato == 1
        voto_finale_str='Ritirato';
    else
        if voto_finale_num > 33
            voto_finale_str='30 e lode';
            voto_dopo_orale_num=voto_finale_num;
            voto_dopo_orale_str=num2str(voto_dopo_orale_num);
        else
            if voto_finale_num > 30
                voto_finale_str='30';
                voto_dopo_orale_num=voto_finale_num;
                voto_dopo_orale_str=num2str(voto_dopo_orale_num);
            else
                if voto_finale_num < 16
                    voto_finale_str='Insuff.';
                    voto_dopo_orale_num=voto_finale_num;
                    voto_dopo_orale_str='Insuff.';
                else
                    if voto_finale_num < 18
                        voto_finale_str=num2str(voto_finale_num);
                        voto_finale_str=strcat(voto_finale_str,' (orale)');
                        if voto_dopo_orale == 1
                            voto_dopo_orale_num=voto_finale_num;
                            voto_dopo_orale_str=num2str(voto_dopo_orale_num);
                        else
                            voto_dopo_orale_num=16;
                            voto_dopo_orale_str=num2str(voto_dopo_orale_num);
                            voto_dopo_orale_str=strcat('<font color="red">',voto_dopo_orale_str,'</font>');
                            
                        end
                    else
                        if it_is_strange == 1
                            voto_finale_str=num2str(voto_finale_num);
                            voto_finale_str=strcat(voto_finale_str,' (orale, AB)');
                            if voto_dopo_orale == 1
                                voto_dopo_orale_num=voto_finale_num;
                                voto_dopo_orale_str=num2str(voto_dopo_orale_num);
                            else
                                voto_dopo_orale_num=16;
                                voto_dopo_orale_str=num2str(voto_dopo_orale_num);
                                voto_dopo_orale_str=strcat('<font color="red">',voto_dopo_orale_str,'</font>');
                            end
                        else
                            voto_finale_str=num2str(voto_finale_num);
                            voto_dopo_orale_num=voto_finale_num;
                            voto_dopo_orale_str=num2str(voto_dopo_orale_num);
                        end
                        
                    end
                end
            end
        end
    end
    
    if votoA_num >= 18
        if votoA_num < 10
            votoA_str=num2str(votoA_num,2);
        else
            votoA_str=num2str(votoA_num,3);
        end
    else
        votoA_str=num2str(votoA_num,3);
        votoA_str=strcat('<font color="red">',votoA_str,'</font>');
    end
    if votoB_num >= 18
        votoB_str=num2str(votoB_num,3);
    else
        votoB_str=num2str(votoB_num,3);
        votoB_str=strcat('<font color="red">',votoB_str,'</font>');
    end
    
    if ritirato == 1
        votoA_str='-';
        votoB_str='-';
    end
    
    tema_str=num2str(tema_num);
    
    
    
    switch prevoto
        case eps
            prevoto_str='0';
        case 1
            prevoto_str='1';
        case 2
            prevoto_str='2';
        otherwise
            prevoto_str='NP';
    end
    
    
    
    
    stampa_voto_html(nome,cognome,matricola,tema_str,prevoto_str,votoA_str,votoB_str,...
        voto_finale_str,voto_dopo_orale_str,orale_eseguito,lista_totale);
end


% NOTA
nota_html(visione_string,data_visione_string)

% CHIUSURA.
chiusura_html

diary off;











%----------------------------------
% preambolo_html
%----------------------------------


function preambolo_html(data_esame_string,matricola_corso_string,orale_eseguito,lista_totale)
fprintf('\n \n \n');
disp('<html>')
fprintf('\n');
disp('<body>')
disp('<BR><BR>')

% TITOLO.
disp('<DIV align="center">');
disp('<B>ISTITUZIONI DI ANALISI MATEMATICA</B> <BR>');
fprintf('\n');
disp('<B>Commissione P. Mannucci, A. Sommariva, a.a. 2014-2015</B><BR>');
fprintf('\n');
disp('<I>Corsi di Laurea in Scienze Statistiche</I><BR>');
disp('Matricola:  ');
disp(matricola_corso_string)
disp('</DIV>')
fprintf('\n');


% DATA.
disp('<DIV align="center">');
disp('Appello del');
disp(data_esame_string)
disp('</DIV>')


% TABELLA.
disp('<BR><br>')
disp('<DIV align="center">')
disp('<table border="1" bgcolor="#E8E8E8" cellpadding="10" cellspacing="0">');

if lista_totale == 0
    if orale_eseguito == 1
        disp('<tr> <td><B>Cognome</B></td> <td><B>Nome</B></td> <td><B>Matricola</B></td> <td><B>Voto</B></td> <td><B>Voto Conclusivo</B></td> </tr>');
        disp(' ');
    else
        disp('<tr> <td><B>Cognome</B></td> <td><B>Nome</B></td> <td><B>Matricola</B></td> <td><B>Voto</B></td> </tr>');
        disp(' ');
    end
else
    if orale_eseguito == 1
        disp('<tr> <td><B>Cognome</B></td> <td><B>Nome</B></td> <td><B>Matricola</B></td> <td><B>Tema</B></td> <td><B>Prevoto</B></td> <td><B>Voto A</B></td> <td><B>Voto B</B></td> <td><B>Voto</B></td> <td><B>Voto Conclusivo</B></td> </tr>');
        disp(' ');
    else
        disp('<tr> <td><B>Cognome</B></td> <td><B>Nome</B></td> <td><B>Matricola</B></td> <td><B>Tema</B></td> <td><B>Prevoto</B></td> <td><B>Voto A</B></td> <td><B>Voto B</B></td> <td><B>Voto</B></td> </tr>');
        disp(' ');
    end
end







%----------------------------------
% calcola_partecipanti
%----------------------------------

% VOTI.
function partecipanti=calcola_partecipanti

for persona=1:10000
    [nome,cognome,matricola,tema_num,prevoto,votoA_num,votoB_num,voto_dopo_orale,ritirato]=...
        lista_esami(persona);
    if strcmp(nome,'') & strcmp(cognome,'') & matricola == 0
        partecipanti=persona-1;
        return
    end
end







%----------------------------------
% sort
%----------------------------------

function I=ordina(partecipanti)

for persona=1:partecipanti
    [nome,cognome,matricola,tema_num,prevoto,votoA_num,votoB_num,voto_dopo_orale,ritirato]=...
        lista_esami(persona);
    
    matricola_string=num2str(matricola);
    
    partecipante_string=strcat(cognome,'_',nome,'_',matricola_string);
    
    strArray(persona) = java.lang.String(partecipante_string);
end

[B,I] = sort(cell(strArray));



%----------------------------------
% stampa_voto_html
%----------------------------------

% VOTI.
function stampa_voto_html(nome,cognome,matricola,tema_str,prevoto_str,voto_A,voto_B,voto_finale,voto_dopo_orale,orale_eseguito,lista_totale)

matricola_string=num2str(matricola);

if voto_dopo_orale == -1
    voto_conclusivo=voto_finale;
else
    voto_conclusivo=num2str(voto_dopo_orale);
end



switch lista_totale
    case 0
        if orale_eseguito == 1
            output_string=strcat('<tr> <td>',cognome,'</td> <td>',nome,...
                '</td> <td>',matricola_string,'</td> <td>',voto_finale,'</td> <td>',voto_conclusivo,'</td></tr>');
            disp(output_string);
            fprintf('\n')
        else
            output_string=strcat('<tr> <td>',cognome,'</td> <td>',nome,...
                '</td> <td>',matricola_string,'</td> <td>',voto_finale,'</td> </tr>');
            disp(output_string);
            fprintf('\n')
        end
    case 1
        if orale_eseguito == 1
            output_string=strcat('<tr> <td>',cognome,'</td> <td>',nome,...
                '</td> <td>',matricola_string,'</td> <td>',tema_str,'</td> <td>', prevoto_str,'</td> <td>',voto_A,'</td> <td>',voto_B,'</td> <td>',voto_finale,'</td> <td>',voto_conclusivo,'</td></tr>');
            disp(output_string);
            fprintf('\n')
        else
            output_string=strcat('<tr> <td>',cognome,'</td> <td>',nome,...
                '</td> <td>',matricola_string,'</td> <td>',tema_str,'</td> <td>',prevoto_str,'</td> <td>',voto_A,'</td> <td>',voto_B,'</td> <td>',voto_finale,'</td> </tr>');
            disp(output_string);
            fprintf('\n')
        end
end










%----------------------------------
% nota_html
%----------------------------------

function nota_html(visione_string,data_visione_string)

fprintf('\n');
disp(' ')
disp('</table>');
disp('</DIV>')


disp('<DIV align="center">')
disp('<table width="75%" >')
disp('<tr><td>')

fprintf('\n \n')
disp('<BR><BR><BR>')
disp('<DIV align="center">')
disp('<B>Alcune note</B>')
disp('</DIV>')

disp('<UL>')
visione_string_fin=strcat('<LI> Visione del compito: ',visione_string,'</LI>');
disp(visione_string_fin);
disp('<LI> Alcuni esami orali si svolgeranno perche''')
disp('<UL>')
disp('<LI> il voto finale e'' inferiore a 18 e si usa la sigla <I>(orale)</I></LI>');
disp('<LI> per insufficienza di uno dei due temi e si usa la sigla <I>(orale, AB)</I></LI>')
disp('</UL></LI>')
disp('<LI> Con la sigla Insuff. si intendono voti da 0 a 16 escluso.</LI>')
next_string=strcat('<LI> Gli studenti convocati per l''esame orale dovranno sostenere il giorno della suddetta visione dei compiti,',...
    data_visione_string,', una o due domande di teoria e un commento sul compito.</LI>');
disp(next_string);
next_string=strcat('<LI> Chi deve sostenere l''orale ma non si presenta allo stesso il giorno della suddetta visione del compito,',...
    data_visione_string,', avra'' quale valutazione finale 16/30.</LI>');
disp(next_string);
disp('<LI> I voti comprendono il bonus dovuto alla valutazione dei precorsi.</LI>');
disp('<LI> Gli studenti che hanno un voto maggiore o uguale a 18 e non devono fare l''orale, possono non venire in aula il giorno della visione dei compiti.</LI>');
disp('</UL>')
disp('<BR><BR><BR>')

disp('</tr></td>')
disp('</table>')
disp('</DIV>')



%----------------------------------
% chiusura_html
%----------------------------------

function chiusura_html
disp('</body>');
disp('</html>');





