Ir para conteúdo

POWERED BY:

Arquivado

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

Willian Antunes

[Resolvido] Erro de compilação no Pascal

Recommended Posts

Salve pessoal !

 

Olhem, eu fiz o código a baixo seguindo o exercício proposto:

(Feito no Dev-Pascal)

{Um cliente de um banco tem um saldo positivo de R$ 500,00. Fazer um algoritmo
que leia um cheque que entrou e calcule o saldo, mostrando(escrevendo) o saldo na tela.}

program saldo_banco;
uses crt;

var
	 rSaldoPositivo, rChequeEntrada, rSaldoAtual: real;
	 resposta: string[3];
begin
	 rSaldoPositivo := 500;
	 writeln('O seu saldo atual esta em: R$',rSaldoPositivo:6:2,' positivos.');
	 write('Valor de entrada do cheque: R$');
	 readln(rChequeEntrada);
	 writeln('O valor depositado foi: R$',rChequeEntrada:6:2);
	 write('O valor depositado esta correto, sim ou nao?');
			  readln(resposta);

			  if resposta := ('sim') then
						  rSaldoAtual := (rSaldoPositivo+rChequeEntrada);
						  writeln('O saldo atual da conta agora esta em: R$',rSaldoAtual:6:2)
			  else
				write('Favor, reinicia o sistema para calculo correto.');
readkey();
end.

Eu dei uma encrementada no algoritmo para ter um maior entretenimento com o usuario.

Só que está dando o seguinte erro: "Fatal: Syntax error, THEN expected but := found"

 

Traduzindo da pra entender, já tentei mudar mas não deu certo, alguem tem alguma sugestão para dar certo o algoritmo ??

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw !!!

 

O problema do then foi resolvido, agora está no else:

"Fatal: Syntax error. ; expected but ELSE found."

 

Já tirei o ";" da linha de comando acima, mas continua ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

if resposta := ('sim') then
   rSaldoAtual := (rSaldoPositivo+rChequeEntrada);
   writeln('O saldo atual da conta agora esta em: R$',rSaldoAtual:6:2)
else
	write('Favor, reinicia o sistema para calculo correto.');

 

1 - Não encha de parênteses onde não precisa.

2 - Você não acha que está faltando um ; no writeln?

 

"Fatal: Syntax error. ; expected but ELSE found."

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom .. Eu tive que alterar e jogar o cálculo da variável rSaldoAtual pra outro lugar, já que não consegui colocar 2 ações em "then", então ficou assim:

 

begin
	 rSaldoPositivo := 500;
	 writeln('O seu saldo atual esta em: R$',rSaldoPositivo:6:2,' positivos.');
	 write('Valor de entrada do cheque: R$');
	 readln(rChequeEntrada);
	 writeln('O valor depositado foi: R$',rChequeEntrada:6:2);
	 rSaldoAtual := (rSaldoPositivo+rChequeEntrada);
	 write('O valor depositado esta correto, sim ou nao?');
			  readln(resposta);

			  if resposta = 'sim' then
						  writeln('O saldo atual da conta agora esta em: R$',rSaldoAtual:6:2)
			  else
				write('Favor, reinicia o sistema para calculo correto.');
readkey();
end.

Agora gostaria de saber se tem como quando executar o comando else, ele jogar novamente para a linha onde tem as ações:

write('Valor de entrada do cheque: R$');
	 readln(rChequeEntrada);

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, ficou assim, dei uma pesquisada e vi em outro fórum que o loop seria feito usando um label como mostrado abaixo, só que eu queria que quando chegasse na função ELSE, ele executasse 2 ações, só que ele executa só a primeira "goto comeco;", e o "writeln();" que fica logo em baixo deste, só é executado quando a resposta é sim .. tem algum jeito de fazer isso ?

 

program saldo_banco;
uses crt;

var
	 rSaldo, rChequeEntrada: real;
	 resposta: string[3];
	 label comeco;
begin
	 comeco:
	 rSaldo := 500;
	 writeln('O seu saldo atual esta em: R$',rSaldo:6:2,' positivos.');
	 write('Valor de entrada do cheque: R$');
	 readln(rChequeEntrada);
	 writeln('O valor depositado foi: R$',rChequeEntrada:6:2);
	 rSaldo := (rSaldo+rChequeEntrada);
	 write('O valor depositado esta correto, sim ou nao?');
			  readln(resposta);

			  if resposta = 'sim' then
						  writeln('O saldo atual da conta agora esta em: R$',rSaldo:6:2)
			  else
				goto comeco;
				writeln();
readkey();
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Custou lembrar que Pascal é um inferno de BEGIN-END....

 

program saldo_banco;
uses crt;

var
 rSaldoPositivo, rChequeEntrada, rSaldoAtual: real;
 resposta: string[3];
begin
 rSaldoPositivo := 500;
 writeln('O seu saldo atual esta em: R$',rSaldoPositivo:6:2,' positivos.');
 write('Valor de entrada do cheque: R$');
 readln(rChequeEntrada);
 writeln('O valor depositado foi: R$',rChequeEntrada:6:2);
 write('O valor depositado esta correto, sim ou nao?');
 readln(resposta);

 if resposta = 'sim')then
 begin
	   rSaldoAtual := rSaldoPositivo+rChequeEntrada;
	   writeln('O saldo atual da conta agora esta em: R$',rSaldoAtual:6:2);
 end
 else
	   write('Favor, reinicia o sistema para calculo correto.');
 readkey();
end.

 

Era só isso que faltava no if.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz... kkk

 

 

Eu até que tentei colocar BEGIN e END.

 

Só que tinha fechado o end assim:

end;

Sempre quando eu for abrir um "Begin End" eu não coloco nenhuma finalização neles ?

Abraços e obrigado ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.