Ir ao conteúdo
  • Cadastre-se

MarkosM

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

1
  1. Consegui colocar os descontos e as outras modificações, agora estou em dúvida sobre como criar um arquivo .txt para armazenar as informações dos produtos e fazer o programa acessar este arquivo durante a execução. Poderia também me falar um pouco mais sobre a identação do código?Vejo que estou esbarrando nisso sempre. E desculpe a demora pra responder, estive resolvendo uns problemas pessoais aí. Aqui está o código: program caixa; uses crt; type t_produtos = record codigo: string[5]; descricao: string[10]; preco: real; end; var produto: array [1..5] of t_produtos; prodTemp: t_produtos; troco: real; pagamento: real; quantidade: integer; codigo: string; totalcompra: real; loop: integer; achou: boolean; desconto: real; begin totalcompra:= 0; produto[1].codigo := '1111'; produto[1].descricao := 'Arroz'; produto[1].preco := 5.00; produto[2].codigo := '1112'; produto[2].descricao := 'Feijao'; produto[2].preco := 2.00; produto[3].codigo := '1113'; produto[3].descricao := 'Macarrao'; produto[3].preco := 3.50; produto[4].codigo := '1114'; produto[4].descricao := 'Leite'; produto[4].preco := 1.50; produto[5].codigo := '1115'; produto[5].descricao := 'Acucar'; produto[5].preco := 4.50; repeat writeln('Insira o Codigo do Produto'); readln(codigo); if (codigo) <> 'Fechar' then begin achou := false; for loop := 1 to 5 do if (codigo = produto[loop].codigo) then begin achou := true; writeln('Insira a Quantidade'); readln (quantidade); prodTemp.preco := produto[loop].preco; prodTemp.descricao := produto[loop].descricao; totalcompra := totalcompra + quantidade*prodTemp.preco; writeln(' ', prodTemp.descricao, ' ', prodTemp.preco:6:2, ' ','QTDE',' ', quantidade, ' Subtotal', totalcompra:6:2); break; end; // FIM IF COMPARANDO CODIGO end; // FIM IF ETAPAS DA COMPRA if not achou then // não achou o código writeln('Codigo nao encontrado'); if (codigo = 'Fechar') then begin clrscr; writeln('Total da Compra: R$ ', totalcompra:6:2); writeln('Valor do Desconto'); readln(desconto); totalcompra:= totalcompra - totalcompra/100*desconto; writeln('Total da Compra: R$ ', totalcompra:6:2); // total final writeln('Pagamento'); readln(pagamento); if (pagamento) < totalcompra then writeln('Pagamento Insuficiente') else troco:= pagamento-totalcompra; writeln('troco: R$ ', troco:6:2); writeln('Pressione ENTER para finalizar o programa'); readln; end; // PAGAMENTO until (codigo = 'Fechar'); end.
  2. Consegui, encurtou muito o código e ficou bem melhor pra trabalhar. agora estou colocando um comando pra dar descontos. Queria saber se tem como colocar o programa pra escrever um doc. como se fosse uma nota fiscal, dessa forma que eu estou fazendo tem como? Segue o código de como está o programa: program caixa; uses crt; const MAX = 100; type t_produtos = record codigo: string[5]; descricao: string[10]; preco: real; end; var produto: array [1..5] of t_produtos; prodTemp: t_produtos; troco: real; pagamento: real; quantidade: integer; codigo: string; totalcompra: real; loop: integer; begin totalcompra:= 0; produto[1].codigo := '1111'; produto[1].descricao := 'Arroz'; produto[1].preco := 5.00; produto[2].codigo := '1112'; produto[2].descricao := 'Feijao'; produto[2].preco := 2.00; produto[3].codigo := '1113'; produto[3].descricao := 'Macarrao'; produto[3].preco := 3.50; produto[4].codigo := '1114'; produto[4].descricao := 'Leite'; produto[4].preco := 1.50; produto[5].codigo := '1115'; produto[5].descricao := 'Acucar'; produto[5].preco := 4.50; repeat writeln('Insira o Codigo do Produto'); readln(codigo); if (codigo) <> 'Fechar' then begin writeln('Insira a Quantidade'); readln (quantidade); for loop := 1 to MAX do if (codigo = produto[loop].codigo) then begin prodTemp.preco := produto[loop].preco; prodTemp.descricao := produto[loop].descricao; totalcompra := totalcompra + quantidade*prodTemp.preco; writeln(' ', prodTemp.descricao, ' ', prodTemp.preco:6:2, ' ','QTDE',' ', quantidade, ' Subtotal', totalcompra:6:2); end; // FIM IF COMPARANDO CODIGO end; // FIM IF ETAPAS DA COMPRA if (codigo = 'Fechar') then begin clrscr; writeln('Total da Compra: R$ ', totalcompra:6:2); writeln('Pagamento'); readln(pagamento); if (pagamento) < totalcompra then writeln('Pagamento Insuficiente') else troco:= pagamento-totalcompra; writeln('troco: R$ ', troco:6:2); writeln('Pressione ENTER para finalizar o programa'); readln; end; // PAGAMENTO until (codigo = 'Fechar'); end.
  3. Consegui colocar essas funções, a primeira usei outro case porque caiu naquele problema de não usar o vetor pra achar produto, então pra não encher o código de if, coloquei mais um case. Segue o código abaixo: program caixa; uses crt; type t_produtos = record codigo: string[5]; descricao: string[10]; preco: real; end; var produto: array [1..5] of t_produtos; prodTemp: t_produtos; troco: real; pagamento: real; quantidade: integer; codigo: string; totalcompra: real; begin totalcompra:=0; produto[1].codigo := '1111'; produto[1].descricao := 'Arroz'; produto[1].preco := 5.00; produto[2].codigo := '1112'; produto[2].descricao := 'Feijao'; produto[2].preco := 2.00; produto[3].codigo := '1113'; produto[3].descricao := 'Macarrao'; produto[3].preco := 3.50; produto[4].codigo := '1114'; produto[4].descricao := 'Leite'; produto[4].preco := 1.50; produto[5].codigo := '1115'; produto[5].descricao := 'Acucar'; produto[5].preco := 4.50; repeat writeln('Insira o Codigo do Produto'); readln(codigo); if (codigo) <> 'Fechar' then begin writeln('Insira a Quantidade'); readln (quantidade); case codigo of '1111': prodTemp.preco := produto[1].preco; '1112': prodTemp.preco := produto[2].preco; '1113': prodTemp.preco := produto[3].preco; '1114': prodTemp.preco := produto[4].preco; '1115': prodTemp.preco := produto[5].preco; end; //CASE DO PREÇO case codigo of '1111': prodTemp.descricao := produto[1].descricao; '1112': prodTemp.descricao := produto[2].descricao; '1113': prodTemp.descricao := produto[3].descricao; '1114': prodTemp.descricao := produto[4].descricao; '1115': prodTemp.descricao := produto[5].descricao; end; // CASE DO PRODUTO totalcompra := totalcompra + quantidade*prodTemp.preco; writeln(' ', prodTemp.descricao, ' ', prodTemp.preco:6:2, ' ', quantidade, ' Subtotal', totalcompra:6:2); end; //LISTA DE PRODUTOS if (codigo = 'Fechar') then begin clrscr; writeln('Total da Compra: R$ ', totalcompra:6:2); writeln('Pagamento'); readln(pagamento); if (pagamento) < totalcompra then writeln('Pagamento Insuficiente') else troco:= pagamento-totalcompra; writeln('troco: R$ ', troco:6:2); writeln('Pressione ENTER para finalizar o programa'); readln; end; // PAGAMENTO until (codigo = 'Fechar'); end.
  4. Não entendi como usar o for para percorrer o vetor, do jeito que consegui o código do produto não tem utilidade alguma. Como eu faço o programa reconhecer o produto por ele? Segue o código abaixo: program caixa; uses crt; type t_produtos = record codigo: string[5]; descricao: string[10]; preco: real; end; var produto: array [1..5] of t_produtos; preco1: real; troco: real; pagamento: real; quantidade: integer; prodescolhido: string; totalcompra: real; finalcompra: string; begin repeat produto[1].codigo := '1111'; produto[1].descricao := 'Arroz'; produto[1].preco := 5.00; produto[2].codigo := '1112'; produto[2].descricao := 'Feijao'; produto[2].preco := 2.00; produto[3].codigo := '1113'; produto[3].descricao := 'Macarrao'; produto[3].preco := 3.50; produto[4].codigo := '1114'; produto[4].descricao := 'Leite'; produto[4].preco := 1.50; produto[5].codigo := '1115'; produto[5].descricao := 'Acucar'; produto[5].preco := 4.50; writeln('Insira o Codigo do Produto'); readln(prodescolhido); writeln('Insira a Quantidade'); readln (quantidade); case prodescolhido of '1111': preco1 := produto[1].preco; '1112': preco1 := produto[2].preco; '1113': preco1 := produto[3].preco; '1114': preco1 := produto[4].preco; '1115': preco1 := produto[5].preco; end; totalcompra := totalcompra + quantidade*preco1; writeln ('Finalizar Compra?'); readln(finalcompra); until (finalcompra = 'Sim'); if (finalcompra = 'Sim') then begin clrscr; writeln('Total da Compra: R$ ', totalcompra:6:2); writeln('Pagamento'); readln(pagamento); troco:= pagamento-totalcompra; writeln('troco: R$ ', troco:6:2); writeln('Pressione ENTER para finalizar o programa'); readln; end; end.
  5. Segui suas dicas e realmente código ficou bem mais simples de ler e funciona do mesmo jeito, existe algum jeito de usar um array para criar uma tabela de produtos e preços? Ao invés de ficar substituindo numa mesma variável o tempo todo os produtos ficariam cadastrados no sistema como num caixa de verdade, assim eu poderia criar tipo um estoque de mercadorias. Aqui está o código de agora: program caixa; uses crt, math; var produto: string; preco1: real; troco: real; pagamento: real; quantidade: integer; prodescolhido: string; totalcompra: real; finalcompra: string; begin repeat writeln('Produto Escolhido e Quantidade'); readln(prodescolhido); readln (quantidade); case prodescolhido of 'Arroz': preco1 := 5; 'Feijao': preco1 := 2; 'Macarrao': preco1 := 3.5; 'Leite': preco1 :=1.5; 'Açucar': preco1 := 4; end; totalcompra := totalcompra + quantidade*preco1; writeln ('Finalizar Compra?'); readln(finalcompra); until (finalcompra = 'Sim'); if (finalcompra = 'Sim') then begin clrscr; writeln('Total da Compra: R$ ', totalcompra:6:2); writeln('Pagamento'); readln(pagamento); troco:= pagamento-totalcompra; writeln('troco: R$ ', troco:6:2); writeln('Pressione ENTER para finalizar o programa'); readln; end; end.
  6. Muito obrigado Simon, isso resolveu o problema de voltar no item, só não consegui retirar os vetores ainda pois não achei outro jeito de ir gravando os subtotais por produto, agora vou trabalhar também reduzindo os if.
  7. Boa Tarde pessoal! , estou tentando fazer um sistema tipo um caixa de supermercado, aonde o programa lê os produtos e depois dá um preço final, o problema é que se eu colocar um mesmo produto duas vezes ele não junta o total das duas execuções, ex: Arroz* 2 unidades = 10 reais, se voltar nessa conta ele não coloca os 20 reais. Gostaria de saber como acumular os valores em uma mesma variável a cada execução do programa. Se alguém puder me ajudar com qualquer dica, agradeço desde já. Olhei várias apostilas e sites mas só consegui fazer desse jeito. program caixa; uses crt, math; var produto: array [1..5] of string; preco1: real; subtotal: array[1..5] of real; troco: real; pagamento: real; quantidade: integer; prodescolhido: string; precototal: real; totalcompra: real; finalcompra: string; begin produto[1] := 'Arroz'; produto[2] := 'Feijao'; produto[3] := 'Macarrao'; produto[4] := 'Leite'; produto[5] := 'Acucar'; repeat writeln('Produto Escolhido e Quantidade'); readln(prodescolhido); readln (quantidade); if (prodescolhido = produto[1]) then begin preco1 := 5; subtotal[1] := quantidade*preco1; end; if (prodescolhido = produto[2]) then begin preco1 := 2; subtotal[2] := quantidade*preco1; end; if (prodescolhido = produto[3]) then begin preco1 := 3.5; subtotal[3] := quantidade*preco1; end; if (prodescolhido = produto[4]) then begin preco1 :=1.5; subtotal[4] := quantidade*preco1; end; if (prodescolhido = produto[5]) then begin preco1 := 4; subtotal[5] := quantidade*preco1; end; precototal := subtotal[1] + subtotal[2] + subtotal [3] + subtotal[4] + subtotal[5]; totalcompra:= precototal; writeln ('Finalizar Compra?'); readln(finalcompra); until (finalcompra = 'Sim'); if (finalcompra = 'Sim') then begin clrscr; writeln('Total da Compra: ', totalcompra:6:2); writeln('Pagamento'); readln(pagamento); troco:= pagamento-precototal; writeln('troco: ', troco:6:2); writeln('Pressione ENTER para finalizar o programa'); readln; end; end.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!