Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi ajuda calculadora comando case


Posts recomendados

Gostaria da ajuda do forum para fazer funcionar corretamente uma calculadora com as 4 operações aritimeticas utilizando o comando case.Utilizo o delphi 7.No final aparece a mensagem :(54) constant expression expected.Obrigado.


program calculadora_comando_case

{$APPTYPE CONSOLE}

uses
SysUtils;

var escolha:integer;
result:real;
primeiro_numero,segundo_numero:integer;

begin
writeln('Digite 1 para soma');
readln(escolha);
writeln('Digite 2 para subtração');
readln(escolha);
writeln('Digite 3 para multiplicação');
readln(escolha);
writeln('Digite 4 para divisao');
readln(escolha);
writeln('Digite o primeiro numero');
readln(primeiro_numero);
writeln('Digite o segundo numero');
readln(segundo_numero);

case escolha of
1:
begin
result := primeiro_numero + segundo_numero;

End;

2:
begin
result := primeiro_numero - segundo_numero;

End;

3:
begin
result := primeiro_numero * segundo_numero;

End;



4:
begin
result := primeiro_numero / segundo_numero;

End;


writeln ('O resultado e:',result:2:2);
End;
readln;
end.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
program Soma;

var
  Operador: Integer;
  N1, N2, RESUL: Real;

begin
  Writeln('Escolhar um dos operadores a baixo');
  Writeln('digite 1 Somar, 2 Divição, 3 Subtração, 4 Multiplicação');
  readln(Operador);
  Writeln('Numeros');
  readln(N1);
  Writeln('Numero');
  readln(N2);
  case Operador of
    1:
    begin
      RESUL := N1 + N2;
    end;
  end;
  case Operador of
  3:
  begin
    RESUL := N1 - N2;
  end;
end;
case Operador of
2:
begin
  RESUL := N1 / N2;
end;
end;
case Operador of
4:
begin
  RESUL := N1 * N2;
end;
end;
Writeln('O RESULTADO desses numeros é ', RESUL);
readln;
end.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @JUnior Ferrarezi.

 

1) SINTAXE DO CASE

Em 11/07/2012 às 19:50, JUnior Ferrarezi disse:

     4:
     begin
     result := primeiro_numero  / segundo_numero;
     End;
     writeln ('O resultado e:',result:2:2);
     End;
     readln;

 

Esse writeln() deve ficar depois do end; que fecha o case, por isso que está dando erro:

 

Em 11/07/2012 às 19:50, JUnior Ferrarezi disse:

(54) constant expression expected

Ou seja, como está "dentro do case" ele diz que está esperando uma constante (um outro número de opção). Basta ajustar, algo assim:

     4:
     begin
     result := primeiro_numero  / segundo_numero;
     End;
     End; //fim case
   writeln ('O resultado e:',result:2:2);
   readln;

 

 

 

2) CONFIGURAÇÃO DO "MENU"

No seu código você está lendo escolha várias vezes, mas só precisa de uma. Algo como sugerido por @Est3gma

11 horas atrás, Est3gma disse:

  Writeln('Escolhar um dos operadores a baixo');
  Writeln('digite 1 Somar, 2 Divição, 3 Subtração, 4 Multiplicação');
  readln(Operador);

 

 

 

 

3) NOMENCLATURA DAS OPERAÇÕES

O correto seria: Adição, Subtração, Divisão e Subtração. "Soma" é outra coisa.

 

 

 

4) USO DO BEGIN/END

Para vínculo uma instrução, não é necessário begin/end, ex.:

program  calculadora_comando_case; //faltou ";"
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  escolha:integer;
  result:real;
  primeiro_numero,segundo_numero:integer;
begin
writeln('Digite 1 para soma');
readln(escolha);
writeln('Digite 2 para subtração');
readln(escolha);
writeln('Digite 3 para multiplicação');
readln(escolha);
writeln('Digite 4 para divisao');
readln(escolha);
writeln('Digite o primeiro numero');
readln(primeiro_numero);
writeln('Digite o segundo numero');
readln(segundo_numero);
case escolha of
  1:result:=primeiro_numero + segundo_numero;
  2:result:=primeiro_numero - segundo_numero;
  3:result:=primeiro_numero * segundo_numero;
  4:result:=primeiro_numero / segundo_numero;
  end; //fim case
writeln ('O resultado e:',result:2:2);
readln;
end.

 

 

 

5) MELHORIAS / SUGESTÕES

Alguns pontos podem ser revistos, como por exemplo:

- Deixar o operador como segunda informação, ou seja, ler um número, depois o operador e o segundo número;

- Deixar a calculadora em um laço de repetição, para possibilitar efetuar novos cálculos;

- Configurar para tratar as divisões por zero (já que será indefinida ou indeterminada)

- Etc

 

 

 

***

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!