Skip to content

Instantly share code, notes, and snippets.

@felladrin
Created October 11, 2010 19:39
Show Gist options
  • Save felladrin/621089 to your computer and use it in GitHub Desktop.
Save felladrin/621089 to your computer and use it in GitHub Desktop.
Primeira versão da Calculadora de Notas
<script>
/*--------------------------------------------------------------------------+
Calculadora de Notas para estudantes da UFRN
Copyright (C) 2010 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/>.
+--------------------------------------------------------------------------*/
function calcula(form)
{
primeira = form.primeira;
segunda = form.segunda;
terceira = form.terceira;
recuperacao = form.recuperacao;
media = form.media;
resultado = form.resultado;
primeira.value = (primeira.value).replace(/,/gi, '.');
segunda.value = (segunda.value).replace(/,/gi, '.');
terceira.value = (terceira.value).replace(/,/gi, '.');
recuperacao.value = (recuperacao.value).replace(/,/gi, '.');
p = parseFloat(primeira.value);
s = parseFloat(segunda.value);
t = parseFloat(terceira.value);
r = parseFloat(recuperacao.value);
if ((primeira.value != "" && isNaN(p)) || (segunda.value != "" && isNaN(s)) || (terceira.value != "" && isNaN(t)) || (recuperacao.value != "" && isNaN(r)))
{
alert("Um dos campos foi preenchido com um valor que não representa um número\nou nenhum dos campos foi preenchido. Tente novamente.");
return false;
}
if (primeira.value != "")
{
if (segunda.value != "" && terceira.value == "")
{
semrecuperacao = ((p * 5.0) + (s * 6.0)) / 11.0;
comrecuperacao = (semrecuperacao + (r * 1.0)) / 2.0;
if (recuperacao.value == "")
{
media.value = semrecuperacao.toFixed(1);
if (media.value < 3)
resultado.value = ("REPROVADO");
else if (media.value < 7)
resultado.value = ("RECUPERAÇÃO");
else
resultado.value = ("APROVADO");
}
else
{
media.value = comrecuperacao.toFixed(1);
resultado.value = media.value < 5 ? "REPROVADO" : "APROVADO";
}
}
else if (segunda.value != "" && terceira.value != "")
{
semrecuperacao = ((p * 4.0) + (s * 5.0) + (t * 6.0)) / 15.0;
comrecuperacao = (semrecuperacao + (r * 1.0)) / 2.0;
if (recuperacao.value == "")
{
media.value = semrecuperacao.toFixed(1);
if (media.value < 3)
resultado.value = ("REPROVADO");
else if (media.value < 7)
resultado.value = ("RECUPERAÇÃO");
else
resultado.value = ("APROVADO");
}
else
{
media.value = comrecuperacao.toFixed(1);
resultado.value = media.value < 5 ? "REPROVADO" : "APROVADO";
}
}
}
else
{
alert("Você deve informar a nota da primeira unidade!");
return false;
}
casoA = (((7 * 11.0) - (p * 5.0)) / 6.0);
casoB = (((7 * 15.0) - (p * 4.0)) / 11.0);
casoC = (((7 * 15.0) - (p * 4.0) - (s * 5.0)) / 6.0);
casoAmin = (((3 * 11.0) - (p * 5.0)) / 6.0);
casoBmin = (((3 * 15.0) - (p * 4.0)) / 11.0);
casoCmin = (((3 * 15.0) - (p * 4.0) - (s * 5.0)) / 6.0);
if (casoAmin < 0) casoAmin = 0;
if (casoBmin < 0) casoBmin = 0;
if (casoCmin < 0) casoCmin = 0;
if (primeira.value != "" && segunda.value == "" && document.getElementById("quantidade").value == "duas")
{
if (casoA <= 10)
alert("Para passar direto, na segunda unidade você deve tirar uma nota superior a " + casoA.toFixed(2)
+ "\nNota mínima necessária para fazer a prova final: " + casoAmin.toFixed(2));
else
{
document.getElementById("revelar").style.display = 'none';
alert("Mesmo tirando 10 na segunda unidade, você ainda ficará de recuperação, infelizmente."
+ "\nTirando qualquer nota acima de " + casoAmin.toFixed(2) + " permitirá que você faça a recuperação.");
segunda.value = "10";
return calcula(form);
}
}
else if (primeira.value != "" && segunda.value == "" && terceira.value == "" && document.getElementById("quantidade").value == "tres" && (casoB <= 10))
alert("Tirando " + casoB.toFixed(2) + " nas próximas duas unidades você consegue passar direto."
+ "\nTirando " + casoBmin.toFixed(2) + " nas próximas duas unidades você consegue ir para a recuperação.");
else if (primeira.value != "" && segunda.value != "" && terceira.value == "" && document.getElementById("quantidade").value == "tres")
{
if (casoC <= 10)
alert("Agora você precisa tirar uma nota superior a " + casoC.toFixed(2) + " para passar direto."
+ "\nNota mínima necessária para fazer a prova final: " + casoCmin.toFixed(2));
else
{
document.getElementById("revelar").style.display = 'none';
alert("Mesmo tirando 10 na terceira unidade, você ainda ficará de recuperação, infelizmente."
+ "\nTirando qualquer nota acima de " + casoCmin.toFixed(2) + " permitirá que você faça a recuperação.");
terceira.value = "10";
return calcula(form);
}
}
else
document.getElementById("revelar").style.display = 'block';
if (resultado.value == "APROVADO")
resultado.style.color = 'green';
else if (resultado.value == "REPROVADO")
resultado.style.color = 'red';
else if (resultado.value == "RECUPERAÇÃO")
{
resultado.style.color = 'brown';
alert("Tirando " + (10.0 - media.value).toFixed(2) + " na recuperação você estará aprovado!");
}
}
</script>
<form name="form">
<fieldset style="width:230px; margin-left: auto; margin-right: auto;">
<legend>Notas da Disciplina</legend>
<select id="quantidade" onchange="document.getElementById('revelar').style.display = 'none';" style="width:100%">
<option value="tres" onclick="document.getElementById('unidades').style.display = 'block';form.media.value = '';form.resultado.value = '';" selected>Disciplina de 3 unidades</option>
<option value="duas" onclick="document.getElementById('unidades').style.display = 'none';form.media.value = '';form.resultado.value = '';form.terceira.value = '';">Disciplina de 2 unidades</option>
</select><br>
<input name="primeira" size="1" type="text"> Primeira Unidade<br>
<input name="segunda" size="1" type="text"> Segunda Unidade<br>
<div id="unidades">
<input name="terceira" size="1" type="text"> Terceira Unidade<br>
</div>
<input name="recuperacao" size="1" type="text"> Recuperação<br>
<input type="button" onclick="calcula(form)" value="Calcular"> <input type="reset" value="Recomeçar" onclick="document.getElementById('revelar').style.display = 'none';document.getElementById('unidades').style.display = 'block';">
</fieldset>
<div id="revelar" style="display:none">
<fieldset style="width:230px; margin-left: auto; margin-right: auto;">
<legend>Média Final e Resultado</legend>
<input name="media" size="1" type="text" disabled><input name="resultado" size="14" type="text" disabled>
</fieldset>
</div>
</form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment