Ir ao conteúdo

Calculadora pascal


Rafinha Avenged

Posts recomendados

Postado

Olá, bom dia.

Fiz essa calculadora em pascal, mas o professor pediu DOIS itens que eu nao to conseguindo imaginar como colocar:

ITEM 1 - faça a calculadora funcionar quantas vezes o usuário quiser (realizar n operações).

ITEM 2 - um "if" caso o usuario digite os dois numeros "0"

Ficou assim sem a estrutura de repetição e sem o lance do "0":

program calculo;
uses crt;

var
n1,n2,resultado:real;
operador:char;

begin
writeln('Digite o primeiro número:');
readln(n1);
writeln('Digite o segundo número:');
readln(n2);
writeln('Digite o operador:');
readln(operador);

if operador='+' then
resultado:=(n1+n2)
else
if operador='-' then
resultado:=(n1-n2)
else
if operador='/' then
resultado:=(n1/n2)
else
if operador='*' then
resultado:=(n1*n2);
writeln('O resultado é:',resultado:0:0);

readkey;
end.

  • Membro VIP
Postado

Olá Rafinha Avenged,

ITEM 1 - faça a calculadora funcionar quantas vezes o usuário quiser (realizar n operações).

Use iterações. As três principais do Pascal são:

  • Repeat
  • While
  • For

ITEM 2 - um "if" caso o usuario digite os dois numeros "0"

Certo, mas fazer o quê com esse "if"?

Fiz essa calculadora em pascal...

:unsure:

No aguardo

Postado
Olá Rafinha Avenged,

Use iterações. As três principais do Pascal são:

  • Repeat
  • While
  • For

Certo, mas fazer o quê com esse "if"?

:unsure:

No aguardo

Esse if, é pra impedir ele de digitar dois zeros. Para ser mais preciso, o programa tem que apenas impedir o usuario de DIVIDIR 0 por 0. Ou seja: quando ele colocar 0 / 0 , o programa dê a mensagem de que nao pode, e peça 2 numeros de novo

Eu tentei fazer, mas como estou no trabalho, ainda nao tive tempo de testar no PASCAL ZIM. mas, ficou assim e eu nao sei se está certo:


program calculadora;
uses crt;

var
valor1,valor2,resultado:real;
sinal:char;

while a/b<>0 do

begin
repeat

writeln('DIGITE “S” PARA SAIR\n\n');
writeln('Digite o primeiro valor:');
readln(valor1);
writeln('Digite o segundo valor:');
readln(valor2);
writeln('Digite o Operador:');
readln(sinal);

while valor1+valor2<>0 do

if sinal='+' then
resultado:=(valor1+valor2)
else
if sinal='-' then
resultado:=(valor1-valor2)
else
if sinal='/' then
resultado:=(valor1/valor2)
else
if sinal='*' then
resultado:=(valor1*valor2);
writeln('O resultado é:',resultado:0:0);

readkey;

Until resp = 'S';

end.

  • Membro VIP
Postado

Olá Rafinha Avenged,

1) Impedir que digite "0" nos dois valores

Esse if, é pra impedir ele de digitar dois zeros. Para ser mais preciso, o programa tem que apenas impedir o usuario de DIVIDIR 0 por 0. Ou seja: quando ele colocar 0 / 0 , o programa dê a mensagem de que nao pode, e peça 2 numeros de novo

Como já sugerido, você vai precisar usar um if mesmo.

Mas veja que são dois detalhes separados:

- Exibir a mensagem de erro caso informa dois valores "0";

- Solicitar que redigite os números.

Para o primeiro, use um if que vai basicamente servi para detectar o "problema" e exibir a mensagem, ou seja, <se valor1 igual a "0" e valor2 igual a "0" então> exiba mensagem de erro.

Para o segundo, use um laço de repetição na parte que "caso dê erro, releia os valores".

Abaixo um modelo:

BEGIN //begin principal
repeat //iteração do programa principal
repeat //iteração para leitura dos valores
writeln('DIGITE “S” PARA SAIR\n\n');
writeln('Digite o primeiro valor:');
readln(valor1);
writeln('Digite o segundo valor:');
readln(valor2);
writeln('Digite o Operador:');
readln(sinal);
if XXXXXXXXX then //condição de erro
writeln('XXXXXXX'); //mensagem de erro
until XXXXXXXX; //condição válida (diferente de erro)
.
.

A base é mais ou menos essa.

2) Condição para repetir todo o programa

Until resposta= 'S';

Você está utilizando a variável resposta, mas de onde ela estará recebendo o valor? (no caso o 'S')

***

Um comentário extra...

while valor1+valor2<>0 do

Veja que esse código:

valor1+valor2<>0

não serve para "verificar" que:

valor1=0 e valor2=0

Pois, nem sempre que a soma de valor1 com valor2 der "0", que dizer que ambos são "0". Ex.: E se valor1 for igual a "6" e valor2 igual a "-6"?

De qualquer forma, essa iteração não deve iniciar ai. (use o repeat como demonstrado no tópico 1)

**

Qualquer coisa é só postar.

Abraços

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!