Calculadora em pascal

Olá. Comecei há uns dias a iniciar-me em pascal e hoje decidi fazer uma calculadora de equações de 1º grau e o programador que utilizei, o freepascal continua a dar um erro de sintaxe dizendo que não pus um ponto-e-vírgula no final de um comando, mas o ponto-e-vírgula está lá. Aqui vai o código:
program Calculadoraequacoes;
Var X,A,B,C :Real;
fim :char;


Begin
Writeln('As equações estão no formato AX+B=C');
Writeln('Por favor digite o valor da A');
Readln(A);
Writeln('Por favor digite o valor de B');
Readln(B);
Writeln('Por favor digite o valor de C');
Readln(C);
X:=(C+B)/A;
Writeln('O X é igual a:', X);
Writeln('Deseja sair?');
Readln(fim);
Until fim:=('Sim')or('sim')or('Ok')or('ok')
End.

Agradeço que me deem um empurrãozinho, por favor.
Obrigado.
 
No until acho que estás a atribuir, a condição não devia ser com = e não com := para comparar?
Isso e não te falta o Repeat para iniciar o ciclo until?
já agora, recomendo que metas identação para se perceber melhor o código. E quando postas mete como código para não perder a identação.
Ah e o ; também falta depois da condição do until.

Edit:
Bem tive a sacar o IDE e completei o código:

Código:
program Calculadoraequacoes;
Var X,A,B,C :Real;
Var fim :char;


Begin
  Repeat
     Writeln('As equações estão no formato AX+B=C');
     Writeln('Por favor digite o valor da A');
     Readln(A);
     Writeln('Por favor digite o valor de B');
     Readln(B);
     Writeln('Por favor digite o valor de C');
     Readln(C);
     X:=(C+B)/A;
     Writeln('O X é igual a:', X);
     Writeln('Deseja sair?');
     Readln(fim);
   Until (fim='S')or(fim='s');
End.

Nota: os operadores de condições só trabalham com boolean (true ou false). E ao fazeres uma operação de = ou diferente é que dá o resultado, por isso tem que estar entre ().

:char => uma letra, :string => várias letras. Por isso é que mudei a condição para 's' ou 'S'
 
Última edição:
Olá. Agora tentei fazer uma calculadora que englobasse todas as operações básicas, e fiz também download de um IDE e continua a dar-me um erro aqui:
Código:
repeat;                    writeln('Deseja sair?');
                    readln(fim);
                    until (fim='S')or(fim='s');
                End;
       [B]Else (OP='B')or(OP='b'){É nesta zona que dá o erro}[/B]
       Then
                Begin
                    writeln('Que números quer subtrair?Pode subtrair até quatro se não quiser todos introduza 0 nos restantes campos');
                    writeln('Introduza A');
                    readln(A);
                    writeln('Introduza B');
                    readln(B);
Diz que na zona a negrito falta um ponto-e-vírgula, no entanto está lá um...
Obrigado
 
Olá. Obrigado pela resposta. No tutorial que vi não davam exemplos com mais do que uma condição... O meu maior problema são os erros, que não dizem o verdadeiro problema...Obrigado mais uma vez.
 
Olá. Corrigi esse erro, mas continua a dar este erro:
Calcient.pas(31,8) Fatal: Syntax error, ";" expected but "ELSE" found

Aqui está o código inteiro:
Código:
program calculadorasimples;var SS,SSU,SM,SD,A,B,C,D :real;
var fim,OP :char;


    Begin
         Repeat;
            writeln('Por favor escolha uma opção:');
            writeln('(A) Soma');
            writeln('(B)Subtração');
            writeln('(C)Multiplicação');
            writeln('(D)Divisão');
            readln(OP);
         Until (OP='A')or(OP='a')or(OP='B')or(OP='b')or(OP='C')or(OP='c')or(OP='D')or(OP='d');
      If (OP='A')or(OP='a') Then
               Begin
                    writeln('Que números quer somar?Pode somar até quatro se não quiser todos introduza 0 nos restantes campos');
                    writeln('Introduza A');
                    readln(A);
                    writeln('Introduza B');
                    readln(B);
                    writeln('Introduza C');
                    readln(C);
                    writeln('Introduza D');
                    readln(D);
                    SS:=A+B+C+D;
                    repeat;
                    writeln('Deseja sair?');
                    readln(fim);
                    until (fim='S')or(fim='s');
                End;
       Else
       If (OP='B')or(OP='b') Then
           Begin
             writeln('Que números quer subtrair?Pode subtrair até quatro se não quiser todos introduza 0 nos restantes campos');
             writeln('Introduza A');
             readln(A);
             writeln('Introduza B');
             readln(B);
             writeln('Introduza C');
             readln(C);
             writeln('Introduza D');
             readln(D);
             SSU:=A-B-C-D;
             repeat;
             writeln('Deseja sair?');
             readln(fim);
             until (fim='S')or(fim='s');
         End;
      Else
      If (OP='C')or(OP='c') Then
            Begin
                 writeln('Que números quer multiplicar ?Pode multiplicar até quatro se não quiser todos introduza 1 nos restantes campos');
                    writeln('Introduza A');
                    readln(A);
                    writeln('Introduza B');
                    readln(B);
                    writeln('Introduza C');
                    readln(C);
                    writeln('Introduza D');
                    readln(D);
                    SM:=A*B*C*D;
                    repeat;
                    writeln('Deseja sair?');
                    readln(fim);
                    until (fim='S')or(fim='s');
                End;
       Else
       If (OP='D')or(OP='d') Then
                Begin
                    writeln('Que números quer dividir?Pode dividir até quatro se não quiser todos introduza 1 nos restantes campos');
                    writeln('Introduza A');
                    readln(A);
                    writeln('Introduza B');
                    readln(B);
                    writeln('Introduza C');
                    readln(C);
                    writeln('Introduza D');
                    readln(D);
                    SD:=A/B/C/D;
                    repeat;
                    writeln('Deseja sair?');
                    readln(fim);
                    until (fim='S')or(fim='s');
                End;
       Else writeln('Opção não e válida')
End.
O meu grande problema é que o ponto-e-vírgula está lá...
Obrigado.
 
Se olhares para a sintaxe do If then else, consegues ver que o End não tem ;


PS: Para ser mais preciso o End de dentro dos IFs não tem ; quando na linha seguinte se encontra um ELSE. Ou seja, o ultimo End tem de ter ponto e virgula
 
Última edição:
Back
Topo