Willian Antunes 0 Denunciar post Postado Maio 17, 2009 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
Beraldo 864 Denunciar post Postado Maio 17, 2009 if resposta := ('sim') then O certo é if resposta = 'sim' then := faz atribuição. = faz comparação Compartilhar este post Link para o post Compartilhar em outros sites
Willian Antunes 0 Denunciar post Postado Maio 17, 2009 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
_Isis_ 202 Denunciar post Postado Maio 17, 2009 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
Willian Antunes 0 Denunciar post Postado Maio 17, 2009 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
Beraldo 864 Denunciar post Postado Maio 17, 2009 Use um loop Compartilhar este post Link para o post Compartilhar em outros sites
Willian Antunes 0 Denunciar post Postado Maio 18, 2009 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
Beraldo 864 Denunciar post Postado Maio 18, 2009 esqueça goto. use loop: "for", "while" ou "repeat" Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 18, 2009 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
Willian Antunes 0 Denunciar post Postado Maio 19, 2009 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
Beraldo 864 Denunciar post Postado Maio 19, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites