Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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]; 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();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!
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 ...
if resposta := ('sim') then
rSaldoAtual := (rSaldoPositivo+rChequeEntrada);
writeln('O saldo atual da conta agora esta em: R$',rSaldoAtual:6:2)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."
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();write('Valor de entrada do cheque: R$');
readln(rChequeEntrada);
Abraços!Use um loop
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; 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();esqueça goto. use loop: "for", "while" ou "repeat"
Custou lembrar que Pascal é um inferno de BEGIN-END....
program saldo_banco;
uses crt;
var
rSaldoPositivo, rChequeEntrada, rSaldoAtual: real;
resposta: string[3]; 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();Era só isso que faltava no if.
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 ..
Sempre quando eu for abrir um "Begin End" eu não coloco nenhuma finalização neles ?
Se não me falha a memória, quando em seguida vem um Else, não coloca ponto-e-vírgula.
Pascal é um saco... :P
if resposta := ('sim') then
O certo é
if resposta = 'sim' then
:= faz atribuição. = faz comparação