Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Solução código - Frações

Ola galera,

Mais uma fez trago aqui um outro código bem diferente para o exercício proposto.

A ideia é que através destas brincadeiras erros apareçam e a dor de cabeça com eles tbm, o que na realidade aconteceu.

Espero que gostem e ajude.

<meta charset="UTF-8">

<h1>..:: Fração ::..</h1>
<h2>O que é uma fração?</h2>
<p>Fração é um número que representa uma ou mais partes iguais em que um inteiro foi dividido. </p>
<p>Assim, se tivermos um chocolate inteiro e o dividirmos em quatro partes iguais, <b>cada parte</b> representará uma fração do chocolate.</p>
<h3>Exemplo: <i>(complete)</i></h3>
<p>O <font color="red"><b><u>professor</u></b></font> dividiu uma banana em <input id="denominador" size="1" value=4> (<font color="red"><i><b>max 24</b></i></font>) pedaço(s).
<br>Ele se distraiu e a sua <font color="red"><b><u>calopsita</u></b></font> comeu <input id="numerador" size="1" value=1> pedaço(s).
</p>A representação gráfica é mostrada no botão abaixo.</p>
<p>Resultado: <button id="mostrar">Mostrar</button></p>

<canvas id="tela" width="600" height="70"></canvas>

<script>

    var numerador = document.querySelector('#numerador');
    var denominador = document.querySelector('#denominador');

    var tela = document.querySelector('#tela');
    var lapis = tela.getContext('2d');

    function desenhaQuadrado (x, tamanho, cor){
        lapis.fillStyle = cor;
        lapis.fillRect(x, 20, tamanho, tamanho);
        lapis.fillStrock = 'black';
        lapis.strokeRect(x, 20, tamanho, tamanho);
    }

    function desenhaBanana(numerador, denominador) {
        //Desenha objeto inteiro dividido
        if (denominador <= 24) {
            var x = 0;
            for (var cont = 1 ; cont <= denominador ; cont++) {
                desenhaQuadrado(x, 25, 'white');
                x = x + 25;
            }
            x = 0;
            //Desenha objeto comido pintado
            for (var cont = 1 ; cont <= numerador ; cont++) {
                desenhaQuadrado(x, 25, 'red');
                x = x + 25;
            }
        } else {
            alert('Atenção!\nNúmero de divisões superior a máxima (24) permitida');
        }
    }

    function limpaTela() {
        lapis.fillStyle = 'white';
        lapis.fillRect(0, 0, 600, 50);
    }

    function desenhaTexto(texto, x , y) {
        var tela = document.querySelector('#tela');
        var lapis = tela.getContext('2d');

        lapis.font='15px Georgia'; // Tamanho e estilo da fonte
        lapis.fillStyle='blue'; // cor da font
        lapis.fillText(texto, x, y); // texto(texto escrito) | x(coord X) | y(coord Y)
    }

    function fracao() {
        limpaTela();
        var x = parseInt(numerador.value);
        var y = parseInt(denominador.value);
        if (x > y) {
            alert('Impossivel divisão!\nFavor verificar os valores informados.');
        } else {
            // desenhaTexto ('texto escrito, coord X, coord Y)
            desenhaTexto ('Qual é a fração? (' + x + '/' + y + ')', 0, 15);
            desenhaBanana(x, y);
        }
        denominador.focus();  
    }

    var mostrar = document.querySelector('#mostrar');
    mostrar.onclick = fracao;

</script>
3 respostas

Parabéns Fábio. Ficou muito legal :D

Você ainda poderia fazer outro botão pra limpar o gráfico . Ficaria legal também.

solução

Ola Vânia,

Toda a vez que ele mostra o resultado ele limpa o gráfico anterior para mostrar o novo.

Existe esta função, caso algum usuário queira contribuir e acrescentar este recurso que a Vânia mencionou seria bem legal.

Fica ai o desafio para melhora do código.