{
Universidade de Brasília
Instituto de Ciências Exatas
Departamento de Ciência da Computação
Introdução a Ciência da Computação - 2/2006

Aluno: Leonardo Marques Nunes de Mattos
Matrícula: 06/89041
Turma: D
Programa feito no Linux (Slackware 10.2 / Kernel 2.4.31)
}

program at12_prog5;

const
p1 = 2.0;
p2 = 2.5;
p3 = 3.0;
w = 100;

var
mencao, safada : string[2];
contador, contador2, l : integer;
media1 : real;
aluno : array[1..w] of string[20];
matricula : array[1..w] of string[8];
notas_trabalhos : array[1..w,1..5] of real;
notas_provas : array[1..w,1..3] of real;

label fim, np_go, nt_go;

procedure media (a, b , c, d, e, f, g, h : real);
	begin
		media1 := ((a*p1 + b*p2 + c*p3) + (d + e + f + g + h)*p2/5)/10;
		if ((media1 >= 0) and (media1 < 0.1)) then mencao := 'SR';
		if ((media1 >= 0.1) and (media1 <= 2.99999999)) then mencao := 'II';
		if ((media1 >= 3.0) and (media1 <= 4.99999999)) then mencao := 'MI';
		if ((media1 >= 5.0) and (media1 <= 6.99999999)) then mencao := 'MM';
		if ((media1 >= 7.0) and (media1 <= 8.99999999)) then mencao := 'MS';
		if ((media1 >= 9.0) and (media1 <= 10.0)) then mencao := 'SS'; 
	end;

procedure resultado (i : integer);
	begin
		contador2 := 1;
		while contador2 <= i do
		begin
			writeln(); writeln ('RESULTADOS: ');
			writeln ('Aluno: ', aluno[contador2]);
			writeln ('Matricula: ', matricula[contador2]);
			media (notas_provas[contador2,1], notas_provas[contador2,2], notas_provas[contador2,3], notas_trabalhos[contador2,1], notas_trabalhos[contador2,2], notas_trabalhos[contador2,3], notas_trabalhos[contador2,4], notas_trabalhos[contador2,5]);
			writeln ('Mencao: ', mencao);
			contador2 := contador2 + 1;
		end;			
	end;

procedure teste_nota (j : integer);
	begin
		if j = 3 then
		begin
			for l := 1 to j do
				begin
				if ((notas_provas[contador,l] < 0) or (notas_provas[contador,l] > 10)) then safada := 'si';
				end;
		end;
		if j = 5 then	
		begin
			for l := 1 to j do
                                if ((notas_trabalhos[contador,l] < 0) or (notas_trabalhos[contador,l] > 10)) then safada := 'si';	
		end; 
	end;
begin
	contador := 1; 
	while  999 <> 1000 do
	begin
		write ('Entre a matricula no formato XX/YYYY, para finalizar digite 00/00000: ');
		readln (matricula[contador]);
		if matricula[contador] = '00/00000' then goto fim;
		write ('Entre o nome do aluno: ');
                readln (aluno[contador]);
		nt_go : safada := 'no';
		write ('Entre as cinco notas do trabalhos separadas por espaço (no formato ex.: 5.56): ');
		readln (notas_trabalhos[contador,1], notas_trabalhos[contador,2], notas_trabalhos[contador,3], notas_trabalhos[contador,4], notas_trabalhos[contador,5]);
		teste_nota (5); if safada = 'si' then goto nt_go;
		np_go : safada := 'no';
		write ('Entre as três notas das provas separadas por espaço em ordem cronologica, da mais antiga pra mais recente (no formato ex.: 6.01): ');
		readln (notas_provas[contador,1], notas_provas[contador,2], notas_provas[contador,3]);
		teste_nota (3); if safada = 'si' then goto np_go;
		contador := contador + 1; 
	end;
fim : if ((contador <> 1) and (matricula[contador] <> '00/0000')) then resultado (contador-1);
end.
