
% Resolucao
clc;

NP      = 0.0;
QIE     = 0;
F       = 0;
GAM     = 0;
NF      = 0.0;
NGAM    = 0.0;

Cont    = 0;

SomaNG  = 0.0;
MediaNG = 0.0;

SomaQIE  = 0.0;
MediaQIE = 0.0;

SomaGAM = 0.0;

Maior   = 0.0;
Menor   = 0.0;

while ( NP >= 0 )

  % validar 
  
  NP = input('Nota prova (entre 0 e 10 - negativo para sair): ');
  while (NP > 10)
      NP = input('Nota inválida - deve ser menor ou igual a 10 - redigitar: ');
  end
  
  if ( NP >= 7.0 )
  
      % validar 
      
      QIE = input('Quantidade idiomas estrangeiros (QIE) - não negativo: ');
      while (QIE < 0)
          QIE  = input('QIE inválida - deve ser positivo - redigitar: ');
      end    
  
      if ( ( QIE >=  2.0 ) || ( NP >= 9.0 ) )
     
         if (QIE > 10)
             QIE = 10;
         end 
     
         % validar 
         F = input ('Formação em Grau (F), de 1 a 5: ');
         F = fix (F); % grau incompletos nivelam pelo anterior - interpretacao do enunciado.  
         while ( ( F < 1 ) || ( F > 5 ) ) 
            F  = input('F inválida - deve ser de 1 a 5 inclusive - redigitar: ');
         end
         
         if ( ( F >= 3.0 ) || ( NP >= 9.0 ) )
         
            % validação 
            GAM = input ('Faixa preta? 1 para Sim e 0 para Não: ');
            while ( ( GAM != 1 ) && ( GAM != 0 ) ) 
                GAM  = input('Faixa inválida - deve ser de 1 ou 0 - redigitar: ');
            end
        
            if ( GAM == 1 )
                SomaGAM = SomaGAM + GAM;
            end        
            
            if ( F == 4 )
                NF = 0.5;
            else
               if ( F == 5 )
                  NF = 2.0;
               else
                  NF = 0;
               end 
            end
            
            if ( GAM == 1 )
                NGAM = 1.0;
            else
                NGAM = 0.0;
            end
            
            NG = ( NP / 2.0 ) + ( QIE / 5.0 ) + NF + NGAM; 
            
            SomaNG  = SomaNG  + NG;   
            SomaQIE = SomaQIE + QIE;
            
            if ( 0 == Cont  )  % caso particular.
                Maior = NG;
                Menor = NG; 
            else            
                if ( NG > Maior )
                    Maior = NG;
                    % printf ('Maior. \n');
                else
                    if ( NG < Menor )
                        Menor = NG; 
                        % printf ('Menor. \n');
                    end 
                end 
            end 
            
            Cont = Cont + 1; 
         end
         
      end 
  end
  printf('\n');
end

if ( Cont > 0 )

  MediaNG   = SomaNG  / Cont;
  MediaQIE  = SomaQIE / Cont;

  printf ( ' A média de NG (de candidatos válidos): %f. \n', MediaNG  );
  printf ( ' A média de QIE de candidatos válidos: %f \n  ', MediaQIE );
  printf ( ' A maior NG de candidatos válidos é %f. \n    ', Maior );
  printf ( ' A menor NG de candidatos válidos é %f. \n    ', Menor );
  printf ( ' A quantidade de candidatos válidos com GAM faixa preta é:  %f. \n', SomaGAM );

else
  
  printf ( ' Não houve candidatos válidos. \n ');
  
end   
