Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elektra

[Resolvido] Calculadora simples -

Recommended Posts

1º contato com JavaScript.

 

Se digito no prompt '2' e '5', escolho 'Somar', escreve '25'

Todas as demais operações estão funcionando, onde estou errando?

 

 

<script language="javascript" type="text/javascript">

$valor_1 = prompt('Digite um número inteiro positivo');
$valor_2 = prompt('Digite outro número inteiro positivo');

$resultado = prompt('Digite qual operação deseja efetuar:', 'Somar, Subtrair, Multiplicar , Dividir');

$somar = $valor_1 + $valor_2;
$subtrair = $valor_1 - $valor_2;
$multiplicar = $valor_1 * $valor_2;
$dividir = $valor_1 / $valor_2;

// com erro na SOMA  (concatena valores)

switch($resultado){
case 'Somar':
	document.write('O resultado da soma é: ' + $somar);
	break;
case 'Subtrair':
	document.write('O resultado da subtração é: ' + $subtrair);
	break;
case 'Multiplicar':
	document.write('O resultado da multiplicação é: ' + $multiplicar);
	break;
	case 'Dividir':
	document.write('O resultado da divisão é: ' + $dividir);
	break;
default:
	alert('Valor Inválido');
}

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acontece que o JavaScript está tratando 2 como string 2.

 

Como +, no JavaScript significa concatenar:

 

2 + 5 = 25
É o mesmo que:

 

(string 2) + (string 5) = (string 2){string 5)

Para que ele interprete como numerais, passe os argumentos por parseInt() (número inteiros) ou parseFloat() (ponto flutuante - decimais)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Imaggens, deu certo. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Vou postar apenas a soma, ficou assim:

 

 

$somar = parseInt($valor_1) + parseInt($valor_2);

switch($resultado){
case 'Somar':
	document.write('O resultado da soma é: ' + parseInt($somar));
	break;

Após imprimir o resultado de uma operação, e antes de fechar o prompt, gostaria de perguntar ao usuário de ele deseja efetuar outra operação ou sair completamente. Se a resposta é "outra operação" retornar a tela inicial para digitar os números e escolher o tipo de operação.

 

Sei que vou precisar criar um loop, mas pergunto que tipo de estrutura eu posso inserir o switch?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra isso você pode fazer por exemplo:

<script>
do {
//seu script aqui
} while(confirm("Executar de novo?"));
</script>
Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajudou muito, eibon. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Até comentei com meu instrutor sobre o uso do 'do while' não ser usual, não tinha me ocorrido para esta situação que desejo.

 

A única referência que tinha deste laço era com "trace" no AS3, onde os comandos são executados ao menos 1 vez, mesmo que a condição seja falsa, ou seja, mesmo que o usuário não pretenda efetuar nenhuma operação a sequência da prompts é exibida até o cancelamento, o que significa o fim do loop.

 

Penso que seja perfeito, ainda não testei (por motivo de cansaço), mas vou fazer isso.

 

Dou um retorno o mais breve possível.

 

Valeu mesmo. ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código, bem mais incrementado, foi criado pelo meu instrutor.

 

Talvez sirva ao estudo de outros colegas.

 

  <script language="javascript" type="text/javascript" charset="utf-8">
          $opcao = 0;
                  while(!isNaN($opcao) && $opcao != 5)
                  {
                  $opcao = parseInt(prompt('Selecione 1 - Soma;  2 - Subtracao; 3 -Multiplicacao; 4 - Divisao; 5 - Sair',''));

                  if(!isNaN($opcao) && $opcao < 5){
                  $a = parseInt(prompt('Digite o 1 valor'));
                  $b = parseInt(prompt('Digite o 2 valor'));
                  switch ($opcao)
                  { case 1:
                               alert(Soma($a,$B));
                               break;
                       case 2:
                               alert(Subtracao($a,$B));
                               break;
                       case 3:
                               alert(Multiplicacao($a,$B));
                               break;
                       case 4:
                               alert(Divisao($a,$B));
                               break;
                       default:
                               alert('Sair');
                  }
                  }
                  else
                  {alert('Opcao Invalida');}

          }
                  function Soma($a, $B)
                  {
                  return $a + $b;
                  }

                   function Subtracao($a, $B)
                  {
                  return $a - $b;
                  }

                   function Multiplicacao($a, $B)
                  {
                  return $a * $b;
                  }

                   function Divisao($a, $B)
                  {
                  return $a / $b;
                  }



        </script>

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

a identação tá um poco estranha, mas só avisa lá, que o atributo language está depreciado.

não faz sentido declarar ele mais... (não hoje em dia, com os browsers que temos por ai)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.