#include<iostream.h>
#include<iomanip.h>
#define MAX_IGNORE 10
void ler_nota(int& , int& );
void regista_info(int& , int& , int );
int valida_nota(int );
void main()
{
	int fis_notas=0,mat_notas=0,por_notas=0;
	int fis_als=0,mat_als=0,por_als=0;
	char op;
	cout<<"\nESCOLA SECUNDARIA DE FIGUEIRA DE CASTELO RODRIGO"<<endl;
	cout<<"Disciplinas: Fisica - Matematica - Portugues"<<endl;
	do{
		cout<<"\nPretende inserir nota a disciplina: Fisica ?(s/n) ";
		cin>>op;
		cin.ignore(MAX_IGNORE,'\n');
		if(op=='s' || op=='S'){
			ler_nota(fis_notas, fis_als);
		}
		cout<<"Pretende inserir nota a disciplina: Matematica ?(s/n) ";
		cin>>op;
		cin.ignore(MAX_IGNORE,'\n');
		if(op=='s' || op=='S'){
			ler_nota(mat_notas, mat_als);
		}
		cout<<"Pretende inserir nota a disciplina: Portugues ?(s/n) ";
		cin>>op;
		cin.ignore(MAX_IGNORE,'\n');
		if(op=='s' || op=='S'){
			ler_nota(por_notas, por_als);
		}
		cout<<"\n\nPretende continuar a inserir notas dos alunos?(s/n) ";
		cin>>op;
		cin.ignore(MAX_IGNORE,'\n');
	}while(op!='n' && op!='N');
	cout<<setw(20)<<setfill(' ')<<"Disciplina"<<setw(20)<<setfill(' ')<<"Media"<<setw(20)<<setfill(' ')<<"N. Alunos"<<endl;
	if(fis_als>0)
	cout<<setw(20)<<setfill(' ')<<"Fisica"<<setw(20)<<setfill(' ')<<(float)fis_notas/fis_als<<setw(20)<<setfill(' ')<<fis_als<<endl;
	else
	cout<<setw(20)<<setfill(' ')<<"Fisica"<<setw(20)<<setfill(' ')<<fis_notas<<setw(20)<<setfill(' ')<<fis_als<<endl;
	if(mat_als>0)
	cout<<setw(20)<<setfill(' ')<<"Matematica"<<setw(20)<<setfill(' ')<<(float)mat_notas/mat_als<<setw(20)<<setfill(' ')<<mat_als<<endl;
	else
	cout<<setw(20)<<setfill(' ')<<"Matematica"<<setw(20)<<setfill(' ')<<mat_notas<<setw(20)<<setfill(' ')<<mat_als<<endl;
	if(por_als>0)
	cout<<setw(20)<<setfill(' ')<<"Portugues"<<setw(20)<<setfill(' ')<<(float)por_notas/por_als<<setw(20)<<setfill(' ')<<por_als<<endl;
	else
	cout<<setw(20)<<setfill(' ')<<"Portugues"<<setw(20)<<setfill(' ')<<por_notas<<setw(20)<<setfill(' ')<<por_als<<endl;
}
//disc_notas - serve para guardar o somatorio das notas;
//disc_als - serve para guardar o o numero de alunos;
void ler_nota(int& disc_notas, int& disc_als)
{
	int nota;
	do{
		cout<<"Digite a nota da disciplina: ?[0-20] ";
		cin>>nota;
		cin.ignore(MAX_IGNORE,'\n');
	}while((valida_nota(nota))==0);
	regista_info(disc_notas, disc_als, nota);
}
//disc_notas - serve para guardar o somatorio das notas;
//disc_als - serve para guardar o o numero de alunos;
void regista_info(int& disc_notas, int& disc_als, int nota)
{
	disc_notas+=nota;
	disc_als++;
}
//nota - nota inserida
//retorna;
// 0 se nota inválida
// 1 se nota válida
int valida_nota(int nota)
{
//operador ternario
	return (nota>=0 && nota<=20) ? 1 : 0;
	/* igual ao anterior
	if(nota>=0 && nota<=20)
	return 1;
	return 0;
	*/
}