• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rkixa

[Ajuda] Calculadora Pascal com Case

9 mensagens neste tópico

Boas,

Venho pedir ajuda aqui aos gurus da programação para que me deêm um toque do que o que tenho mal aqui neste programa.

program calculadora;

uses crt;

var n1, n2, conta: integer;

operacao: char;

begin
    clrscr;
    writeln ('Inserir 1º valor: ');
    readln (n1);

    writeln('Escolha a operacao [+, -, *, /]: ');
    readln(operacao);

    writeln ('Inserir 2º valor: ');
    readln (n2);

        case operacao of
        '+': conta:= n1+n2;
        '-': conta:= n1-n2;
        '*': conta:= n1*n2;
        '/': conta:= n1/n2;
        else
        writeln('Invalido');

    writeln('O valor da operacao ‚: ',conta);
   
    readkey;
end.

Tenho quase a certeza que o erro principal está no Case mas não estou a ver onde.

Agradecia uma ajudinha.

cumps,

rkixa

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual o erro que aparece?

Penso que um dos problemas é quando divides, pois o resultado pode ser decimal, e tu declaraste-o como inteiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de declarar conta como real.

Tens de ter um end; no fim do teu case

Não faço ideia o que está ai a fazer um else nem o readkey;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito Obrigado já está a funcionar.

Aqui estão as alterações:

program calculadora;

uses crt;

var n1, n2: integer;

conta: real;

operacao: char;

begin

    clrscr;
    writeln ('Inserir 1º valor: ');
    readln (n1);

    writeln('Escolha a operacao [+, -, *, /]: ');
    readln(operacao);

    writeln ('Inserir 2º valor: ');
    readln (n2);

        case operacao of
        '+': conta:= n1+n2;
        '-': conta:= n1-n2;
        '*': conta:= n1*n2;
        '/': conta:= n1/n2;
        end;

    writeln('O valor da operacao ‚: ',conta);

    readkey;
end.

Tem que ter o readkey; ao fim caso contrário não consigo ver o resultado.

1

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto porque estás a correr o projecto a partir do clique no executavel. Eu costumo abrir a consola e correr lá, logo vejo o output ;).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto porque estás a correr o projecto a partir do clique no executavel. Eu costumo abrir a consola e correr lá, logo vejo o output :).

podes tambem usar o readln;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Devias fazer tratamento de excepções, por exemplo se o segundo operador for zero no caso da divisão.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não uso readkey. Uso o readln.

Tem diferença?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não uso readkey. Uso o readln.

Tem diferença?

O ReadKey obtém qualquer que seja a tecla premida, o ReadLn lê o input do teclado após premido o Enter e só o Enter.

A diferença neste caso prático de pausa do programa: ReadKey avança com qualquer tecla, RaedLn só avança com Enter.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora