ricop522

[PASCAL] Calculadora

Sep 24th, 2011
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.24 KB | None | 0 0
  1. program calcular;
  2.  
  3. uses
  4.     crt;
  5. var
  6.     resultado,n:real;
  7.     operacao:char;
  8.     contUtil:char;
  9.     retomResult:char;
  10. begin
  11.     clrscr;
  12.     writeln('Digite o primeiro número que deseja operar');
  13.     readln(resultado);
  14.     contUtil:='s';
  15.  
  16.     while contUtil='s' do
  17.         begin
  18.         repeat
  19.             writeln('Digite a operação que deseja realizar');
  20.             writeln('+ (adição)       - (subtração)');
  21.             writeln('* (multiplicação)    / (divisão)');
  22.             writeln('i (inversão)      p (potenciação)');
  23.             writeln('r (raiz quadrada)');
  24.             readln(operacao);
  25.             if (operacao='i') then
  26.                 begin
  27.                 repeat
  28.                     if resultado=0 then
  29.                             begin
  30.                         writeln('Entre com um número diferente de 0:');
  31.                         readln(resultado);
  32.                         resultado:=(1/resultado);
  33.                         end
  34.                         else
  35.                         begin
  36.                         resultado:=(1/resultado);
  37.                         end;
  38.                 until resultado<>0;
  39.                 end
  40.             else if (operacao='r') then
  41.                 begin
  42.                 repeat
  43.                     if resultado<0 then
  44.                         begin
  45.                         writeln('Entre com um número maior ou igual a zero:');
  46.                         readln(resultado);
  47.                         resultado:=sqrt(resultado);
  48.                         end//procedimento de raiz quadrada com valor inaceitavel
  49.                     else
  50.                         begin
  51.                         resultado:=sqrt(resultado);
  52.                         end;
  53.                 until resultado>=0;
  54.                 end
  55.             else if ((operacao='+') or (operacao='-') or (operacao='*') or (operacao='/') or (operacao='p')) then
  56.                 begin
  57.                 writeln('Digite o próximo número que deseja operar');
  58.                 readln(n);
  59.                 case operacao of
  60.                 '+': begin
  61.                              resultado:=(resultado+n);
  62.                              end;//adição
  63.                 '-': begin
  64.                          resultado:=(resultado-n);
  65.                              end;//subtração
  66.                 '*': begin
  67.                          resultado:=(resultado*n);
  68.                              end;
  69.                 '/': begin
  70.                         repeat
  71.                     if (n=0) then
  72.                         begin
  73.                             writeln('Quociente invalido, entre com outro número:');//garante que nao haverá divisão por 0
  74.                         readln(n);
  75.                         resultado:=(resultado/n);
  76.                         end
  77.                     else
  78.                         begin
  79.                         resultado:=(resultado/n);
  80.                         end;
  81.                         until n<>0;
  82.                      end;
  83.                 'p': begin
  84.                     if (resultado<0) then
  85.                         begin
  86.                         resultado:=((-1)*(resultado));
  87.                         resultado:=(exp(n*ln(resultado)));
  88.                         n:=(trunc(n) mod 2);
  89.                         if n<>0 then
  90.                             begin
  91.                             resultado:=((-1)*(resultado));
  92.                             end;
  93.                         end
  94.                     else
  95.                         begin
  96.                         resultado:=(exp(n*ln(resultado)));
  97.                         end;
  98.                     end;
  99.                      end;
  100.                 end
  101.             else
  102.                 begin
  103.                 writeln('Operação inválida entre com uma nova operação:');
  104.                 end;
  105.         until (operacao='+') or (operacao='-') or (operacao='*') or (operacao='/') or (operacao='i') or (operacao='p') or (operacao='r');
  106. (*fim do cálculo dos resultados que dependem de duas variáveis*)
  107.         writeln('O resultado da operação é ', resultado:0:2);
  108. (*mostra o resultado e pergunta ao usuário se ele deseja continuar utilizando o programa*)
  109.         writeln('Deseja continuar utilizando a calculadora(s/n)?');
  110.         readln(contUtil);
  111.         if contUtil='s' then
  112.             begin
  113.             writeln('Deseja retormar o ultimo resultado ', resultado:0:2, ' para a proxima operação(s/n)?');
  114.             readln(retomResult);
  115.                 if retomResult='n' then
  116.                     begin
  117.                     writeln ('Entre com o novo número que deseja operar:');
  118.                     readln (resultado);
  119.                     end;
  120.             end;
  121.         end;
  122. end.
Advertisement
Add Comment
Please, Sign In to add comment