Skip to content

Instantly share code, notes, and snippets.

@felladrin
Created July 10, 2011 18:29
Show Gist options
  • Save felladrin/1074807 to your computer and use it in GitHub Desktop.
Save felladrin/1074807 to your computer and use it in GitHub Desktop.
Segunda versão da Calculadora de Notas
// Calculadora de Notas - Versão 2.1.2 (27 de julho de 2011)
// Copyright (C) 2011 Victor Nogueira
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
var primeira = document.getElementById("primeira");
var segunda = document.getElementById("segunda");
var terceira = document.getElementById("terceira");
var recuperacao = document.getElementById("recuperacao");
var media = document.getElementById("media");
var estado = document.getElementById("estado");
var estimativa = document.getElementById("estimativa");
var unidades = document.getElementById("unidades");
var p, s, t, r, m, e, c;
function formatarDecimais()
{
primeira.value = (primeira.value).replace(/,/gi, '.');
segunda.value = (segunda.value).replace(/,/gi, '.');
terceira.value = (terceira.value).replace(/,/gi, '.');
recuperacao.value = (recuperacao.value).replace(/,/gi, '.');
}
function coletarNotas()
{
p = parseFloat(primeira.value);
s = parseFloat(segunda.value);
t = parseFloat(terceira.value);
r = parseFloat(recuperacao.value);
}
function validarCampos()
{
formatarDecimais();
coletarNotas();
if (primeira.value === "")
{
c = "Você pode começar informando a nota da primeira unidade.";
return false;
}
if ((primeira.value !== "" && isNaN(p)) || (segunda.value !== "" && isNaN(s)) || (terceira.value !== "" && isNaN(t)) || (recuperacao.value !== "" && isNaN(r)))
{
c = "Um dos campos foi preenchido com um valor que não representa um número ou nenhum dos campos foi preenchido. Tente novamente.";
return false;
}
if (p > 10)
{
primeira.value = (p / 10).toFixed(1);
return validarCampos();
}
if (s > 10)
{
segunda.value = (s / 10).toFixed(1);
return validarCampos();
}
if (t > 10)
{
terceira.value = (t / 10).toFixed(1);
return validarCampos();
}
if (r > 10)
{
recuperacao.value = (r / 10).toFixed(1);
return validarCampos();
}
return true;
}
function mostrar(id)
{
document.getElementById(id).style.display = 'block';
}
function ocultar(id)
{
document.getElementById(id).style.display = 'none';
}
function alternar(id)
{
if (document.getElementById(id).style.display == 'block')
{
document.getElementById(id).style.display = 'none';
}
else
{
document.getElementById(id).style.display = 'block';
}
}
function alternarTerceira()
{
if (unidades.value == "2")
{
ocultar("blocoTerceira");
terceira.value = "";
}
else
{
mostrar("blocoTerceira");
}
}
function limparResultados()
{
media.innerHTML = "";
estado.innerHTML = "";
estimativa.innerHTML = "";
p = s = t = r = m = e = c = "";
ocultar("blocoResultado");
ocultar("blocoEstimativa");
}
function calcular()
{
limparResultados();
if (!validarCampos())
{
if (c)
{
mostrar("blocoEstimativa");
estimativa.innerHTML = c;
}
return false;
}
switch(unidades.value)
{
case "2":
var semRecuperacao = ((p * 5.0) + (s * 6.0)) / 11.0;
var comRecuperacao = (semRecuperacao + (r * 1.0)) / 2.0;
var casoA = (((7 * 11.0) - (p * 5.0)) / 6.0);
var casoAmin = (((3 * 11.0) - (p * 5.0)) / 6.0);
if (segunda.value === "")
{
if (casoA <= 10)
{
if (casoAmin.toFixed(2) < 0)
{
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidade</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=2>Segunda</td><td>N <b>&ge;</b> " + casoA.toFixed(2) + "</td><td>Aprovação</td></tr><tr><td>N <b>&lt;</b> " + casoA.toFixed(2) + "</td><td>Recuperação</td></tr></table>";
}
else
{
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidade</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=3>Segunda</td><td>N <b>&ge;</b> " + casoA.toFixed(2) + "</td><td>Aprovação</td></tr><tr><td>" + casoAmin.toFixed(2) + " <b>&lt;</b> N <b>&lt;</b> " + casoA.toFixed(2) + "</td><td>Recuperação</td></tr><tr><td>N <b>&lt;</b> " + casoAmin.toFixed(2) + "</td><td>Reprovação</td></tr></table>";
}
}
else
{
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidade</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=2>Segunda</td><td>N <b>&ge;</b> " + casoAmin.toFixed(2) + "</td><td>Recuperação</td></tr><tr><td>N <b>&lt;</b> " + casoAmin.toFixed(2) + "</td><td>Reprovação</td></tr></table>";
}
}
else
{
if (recuperacao.value === "")
{
m = semRecuperacao.toFixed(1);
if (m < 3)
{
e = "<span style='color:red'>REPROVADO</span>";
}
else if (m < 7)
{
e = "<span style='color:brown'>RECUPERAÇÃO</span>";
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidade</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=2>Recuperação</td><td>N <b>&ge;</b> " + (10.0 - m).toFixed(1) + "</td><td>Aprovação</td></tr><tr><td>N <b>&lt;</b> " + (10.0 - m).toFixed(1) + "</td><td>Reprovação</td></tr></table>";
}
else
{
e = "<span style='color:green'>APROVADO</span>";
}
}
else
{
m = comRecuperacao.toFixed(1);
e = m < 5 ? "<span style='color:red'>REPROVADO</span>" : "<span style='color:green'>APROVADO</span>";
}
}
break;
case "3":
semRecuperacao = ((p * 4.0) + (s * 5.0) + (t * 6.0)) / 15.0;
comRecuperacao = (semRecuperacao + (r * 1.0)) / 2.0;
var casoB = (((7 * 15.0) - (p * 4.0)) / 11.0);
var casoBmin = (((3 * 15.0) - (p * 4.0)) / 11.0);
var casoC = (((7 * 15.0) - (p * 4.0) - (s * 5.0)) / 6.0);
var casoCmin = (((3 * 15.0) - (p * 4.0) - (s * 5.0)) / 6.0);
if (primeira.value !== "" && segunda.value === "" && terceira.value === "" && (casoB <= 10))
{
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidades</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=3>Próximas<br />Duas</td><td>N <b>&ge;</b> " + casoB.toFixed(2) + "</td><td>Aprovação</td></tr><tr><td>" + casoBmin.toFixed(2) + " <b>&lt;</b> N <b>&lt;</b> " + casoB.toFixed(2) + "</td><td>Recuperação</td></tr><tr><td>N <b>&lt;</b> " + casoBmin.toFixed(2) + "</td><td>Reprovação</td></tr></table>";
}
else if (primeira.value !== "" && segunda.value !== "" && terceira.value === "")
{
if (casoC <= 10)
{
if (casoCmin.toFixed(2) < 0)
{
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidade</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=2>Tereira</td><td>N <b>&ge;</b> " + casoC.toFixed(2) + "</td><td>Aprovação</td></tr><tr><td>N <b>&lt;</b> " + casoC.toFixed(2) + "</td><td>Recuperação</td></tr></table>";
}
else
{
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidade</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=3>Terceira</td><td>N <b>&ge;</b> " + casoC.toFixed(2) + "</td><td>Aprovação</td></tr><tr><td>" + casoCmin.toFixed(2) + " <b>&lt;</b> N <b>&lt;</b> " + casoC.toFixed(2) + "</td><td>Recuperação</td></tr><tr><td>N <b>&lt;</b> " + casoCmin.toFixed(2) + "</td><td>Reprovação</td></tr></table>";
}
}
else
{
c = "<table border='1' class='tabelaestimativa'><tr><th>Unidade</th><th>Nota</th><th>Resultado</th></tr><tr><td rowspan=2>Terceira</td><td>N <b>&ge;</b> " + casoCmin.toFixed(2) + "</td><td>Recuperação</td></tr><tr><td>N <b>&lt;</b> " + casoCmin.toFixed(2) + "</td><td>Reprovação</td></tr></table>";
}
}
else
{
if (recuperacao.value === "")
{
m = semRecuperacao.toFixed(1);
if (m < 3)
{
e = "<span style='color:red'>REPROVADO</span>";
}
else if (m < 7)
{
e = "<span style='color:brown'>RECUPERAÇÃO</span>";
c = "<table border='1' class='tabelaestimativa'> <tr> <th>Unidade</th> <th>Nota</th> <th>Resultado</th> </tr> <tr> <td rowspan=2>Recuperação</td> <td>N <b>&ge;</b> " + (10.0 - m).toFixed(1) + "</td> <td>Aprovação</td> </tr> <tr> <td>N <b>&lt;</b> " + (10.0 - m).toFixed(1) + "</td> <td>Reprovação</td> </tr> </table>";
}
else
{
e = "<span style='color:green'>APROVADO</span>";
}
}
else
{
m = comRecuperacao.toFixed(1);
e = m < 5 ? "<span style='color:red'>REPROVADO</span>" : "<span style='color:green'>APROVADO</span>";
}
}
break;
}
if (c)
{
mostrar("blocoEstimativa");
estimativa.innerHTML = c;
}
if (m && !isNaN(m))
{
mostrar("blocoResultado");
media.innerHTML = "<b>" + m + "</b> &raquo; ";
estado.innerHTML = e;
}
}
calcular();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment