• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

marrokino

Duvida Pascal

11 mensagens neste tópico

Hello!

Queria que me ajudassem neste programa, na zona de calcular os custos totais (procedure_contas) e se possivel ver o que há de errado no programa.

Obrigado

program Loja;

uses
  SysUtils;


type
TBikes = Record
nome:string[30];
custo:integer;
end;


type
TProdutos = Record
nome:string[30];
custo:integer;
end;

var
fit, sunday, verde, subrosa, : TBikes; 
fork, pneus, guiador, banco, cranks: TProdutos;   
bike: integer;
produto: integer;
total: integer;


// Fit
begin
with fit do
begin
nome:= 'Fit Trail 2010 ';
custo:= 640 ;
end;

// sunday
with Sunday do
begin
nome:= 'Sunday Funday';
custo:= 845;
end;

// verde
with verde do
begin
nome:= 'Verde Luxe 2010';
custo:= 649;
end;

// Subrosa
with Subrosa do
begin
nome:= 'Subrosa Novus 2010';
custo:= 759;
end; 

//////////////////

// Fork
with fork do
begin
nome:= 'Fork Odyssey Dirt 10mm';
custo:= 95;
end;

//Pneus
with pneus do
begin
nome:= '2 x Odyssey Path';
custo:= 45;

// Guiador
with guiador do
begin
nome:= 'FitBike Sky High';
custo:= 70;
end;


// Banco
with banco do
begin
nome:= 'TwentyBikeco. Pivotal Kit';
custo:= 60;
end;

// Cranks
with cranks do
begin
nome:= 'Primo Powerbite';
custo:= 110;
end;

///////// 

procedure menu;
Writeln('Bem Vindo);
Writeln('');
Writeln('Temos varias BMX e peças ao seu dispor..');

Procedure escolhas;
Writeln('Opcao 1');
Writeln('Nome: ',fit.nome);
Writeln('Custo: ',fit.custo);
Writeln('');
Writeln('');
Writeln('Opcao 2');
Writeln('Nome: ',sunday.nome);
Writeln('Custo: ',sunday.custo);
Writeln('');
Writeln('');
Writeln('Opcao 3');
Writeln('Nome: ',verde.nome);
Writeln('Custo: ',verde.custo);
Writeln('Opcao 4');
Writeln('Nome: ',subrosa.nome);
Writeln('Custo: ',subrosa.custo);
Writeln('Indique a BMX que mais lhe agrada, 1,2, 3 ou 4:');
Readln(bike);
Writeln('');

procedure escolha_bmx;
if (bike = 1) then
begin
Writeln('Escolheu a opcao , que equivale ao ',fit.nome, ' com o custo de ',fit.custo,' Euros');
Writeln('');
Writeln('O ',fit.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
End
Else
if (bike = 2) then
begin
Writeln('Escolheu a opcao , que equivale ao ',sunday.nome, ' com o custo de ',sunday.custo,' Euros');
Writeln('');
Writeln('O ',sunday.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end
else
if (bike = 3) then
begin
Writeln('Escolheu a opcao , que equivale ao ',verde.nome, ' com o custo de ',verde.custo,' Euros');
Writeln('');
Writeln('O ',verde.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end
else
if (bike = 4) then
begin
Writeln('Escolheu a opcao , que equivale ao ',subrosa.nome, ' com o custo de ',subrosa.custo,' Euros');
Writeln('');
Writeln('O ',subrosa.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end
else
writeln(‘opcao invalida’);


Procedure produtos;
WHILE (opcao = 6 ) DO
Writeln('Os produtos são ');
writeln('');
writeln('Opcao 1');
writeln('Produto: ',fork.nome);
writeln('Custo: ',fork.custo);
writeln('');
writeln('Opcao 2');
writeln('Produto: ',pneus.nome);
writeln('Custo: ',pneus.custo);
writeln('');
writeln('Opcao 3');
writeln('Produto: ',guiador.nome);
writeln('Custo: ',guiador.custo);
writeln('Opcao 4');
writeln('Produto: ',banco.nome);
writeln('Custo: ',banco.custo);
writeln('Opcao 5');
writeln('Produto: ',cranks.nome);
writeln('Custo: ',cranks.custo);
writeln('Opcao 6');
writeln('Terminar compras');
Writeln('Escolha as opcoes que deseja');
Readln(produto);
end;

procedure contas;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

marrokino, tens de ser especifico nas tuas dúvidas.

Qual é a dúvida que tens no procedimento de cálculo os custos totais?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha duvida é que não estou a ver como fazer com que o programa vá adicionando os valores dos produtos extra ao valor do item escolhido inicialmente.

Alguém que me dê umas luzes!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não encontro no código o procedimento que referes.

Mas podes fazer isso de várias formas, talvez a mais simples seja guardar isso num vector, conforme vão sendo adicionados os itens guardá-los num vector e depois é só percorrer e somar o seu valor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem não ter dito mais nada entretanto, não tive oportunidade passar por aqui.

Mas entretanto fui fazendo mais qualquer coisa mas o programa continua me a dar um erro, coisa que não consigo resolver.

Se alguém conseguir agradeço, a minha intenção é por o programa  funcionar, depois outros erros eu faço por resolver.

Muito obrigado desde já!

 program Loja;

uses crt;


type
TBikes = Record
nome:string[30];
custo:integer;
end;


type
TProdutos = Record
nome:string[30];
custo:integer;
end;

var
fit, sunday, verde, subrosa : TBikes;
fork, pneus, guiador, banco, cranks: TProdutos;
bike: integer;
produto: integer;
total: integer;
opcao: integer;

procedure menu;
Begin
clrscr;
Textcolor (yellow);
WRITELN;
Writeln ('============================================================================');
Writeln ('= M E N U =');
Writeln ('= =');
Writeln ('= 1 - Adquirir Bicicleta =');
Writeln ('= 2 - Adquirir peças =');
Writeln ('= 33 - Sair do Programa =');
Writeln ('= =');
Writeln ('============================================================================');
Writeln;
Write;
Writeln ('Selecione uma opcao:');
Readln (opcao);
End;


Procedure escolhas;
begin
Writeln('Opcao 1');
Writeln('Nome: ',fit.nome);
Writeln('Custo: ',fit.custo);
Writeln('');
Writeln('');
Writeln('Opcao 2');
Writeln('Nome: ',sunday.nome);
Writeln('Custo: ',sunday.custo);
Writeln('');
Writeln('');
Writeln('Opcao 3');
Writeln('Nome: ',verde.nome);
Writeln('Custo: ',verde.custo);
Writeln('Opcao 4');
Writeln('Nome: ',subrosa.nome);
Writeln('Custo: ',subrosa.custo);
Writeln('Indique a BMX que mais lhe agrada, 1,2, 3 ou 4:');
Readln(bike);
Writeln('');

begin
with fit do
begin
nome:= 'Fit Trail 2010 ';
custo:= 640 ;
end;
end;


with Sunday do
begin
nome:= 'Sunday Funday';
custo:= 845;
end;


with verde do
begin
nome:= 'Verde Luxe 2010';
custo:= 649;
end;


with Subrosa do
begin
nome:= 'Subrosa Novus 2010';
custo:= 759;
end;
end;
procedure escolhabmx;
begin
if (bike = 1) then
begin
Writeln('Escolheu a opcao , que equivale ao ',fit.nome, ' com o custo de ',fit.custo,' Euros');
Writeln('');
Writeln('A ',fit.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
End
Else
if (bike = 2) then
begin
Writeln('Escolheu a opcao , que equivale ao ',sunday.nome, ' com o custo de ',sunday.custo,' Euros');
Writeln('');
Writeln('A ',sunday.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end
else
if (bike = 3) then
begin
Writeln('Escolheu a opcao , que equivale ao ',verde.nome, ' com o custo de ',verde.custo,' Euros');
Writeln('');
Writeln('A ',verde.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end
else
if (bike = 4) then
begin
Writeln('Escolheu a opcao , que equivale ao ',subrosa.nome, ' com o custo de ',subrosa.custo,' Euros');
Writeln('');
Writeln('A ',subrosa.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end
else
writeln('opcao invalida');
end;


Procedure produtos;
          begin
               WHILE (opcao = 6) do
                  begin
                     Writeln('Os produtos são ');
                     writeln('');
                     writeln('Opcao 1');
                     writeln('Produto: ',fork.nome);
                     writeln('Custo: ',fork.custo);
                     writeln('');
                     writeln('Opcao 2');
                     writeln('Produto: ',pneus.nome);
                     writeln('Custo: ',pneus.custo);
                     writeln('');
                     writeln('Opcao 3');
                     writeln('Produto: ',guiador.nome);
                     writeln('Custo: ',guiador.custo);
                     writeln('Opcao 4');
                     writeln('Produto: ',banco.nome);
                     writeln('Custo: ',banco.custo);
                     writeln('Opcao 5');
                     writeln('Produto: ',cranks.nome);
                     writeln('Custo: ',cranks.custo);
                     writeln('Opcao 6');
                     writeln('Terminar compras');
                     Writeln('Escolha as opcoes que deseja');
                     Readln(produto);
                  end;


                  with fork do
                       begin
                            nome:= 'Fork Odyssey Dirt 10mm';
                            custo:= 95;
                       end;


                  with pneus do
                       begin
                            nome:= '2 x Odyssey Path';
                            custo:= 45;
                       end;


                  with guiador do
                       begin
                            nome:= 'FitBike Sky High';
                            custo:= 70;
                       end;



                  with banco do
                       begin
                            nome:= 'TwentyBikeco. Pivotal Kit';
                            custo:= 60;
                       end;

                  with cranks do
                       begin
                            nome:= 'Primo Powerbite';
                            custo:= 110;
                       end;
             end;

procedure contas;
begin
WHILE opcao = 3 DO
     BEGIN
          WRITE('Deseja sair ');
          READLN(opcao);
     END;



Begin
     repeat
     Menu;
     readln(opcao);
                   Case opcao of
                   1: escolhas;
                   2: produtos;
                   3: contas;
                   4: Writeln ('Programa Finalizado! ');
                   Else
                   Writeln ('Opcao Invalida!');
                   end;
                   until opcao=4;




end;
end.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não vejo onde ele faça os calculos no procedure contas.

Qual o erro, e que compilador de pascal estás a usar?

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá-me um erro de sintaxe no final do programa.

Sim, a zona das contas também estou com problemas para a pôr a funcionar, por favor ajudem-me!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

marrokino, se não deres informações precisas não te podemos ajudar!

Onde precisamente é que dá erro e que erro é esse? O compilador diz-te o tipo de erro e a linha onde está o erro.

Quanto à zona das contas, o apocsantos está a perguntar onde está ela no código dado que não a vê.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A zona das contas "está" dentro do procedure_contas, ainda não consegui fazer.

O erro de sintaxe é nas ultimas linhas, mas agora diz que falta um begin no ultimo end.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

2 Problemas.

1º O programa parece que inicialmente foi feito por uma pessoa mas tem um procedimento mais "arranjadinho" dá ideia que teve "mãozinha" a ajudar B) adiante.

2º Em pascal nunca te explicaram que todos os programas têem de ter um begin e um end. ?? E que é dentro desse bloco que chamas as procedures? o que tens quase parece uma Unit, e não um programa.

Aqui tens o codigo comentado e corrigido, agora não te esqueças de chamar as procedures no sitio certo :P

program Loja;

uses crt;


type
TBikes = Record
nome:string[30];
custo:integer;
end;


type
TProdutos = Record
nome:string[30];
custo:integer;
end;

var
fit, sunday, verde, subrosa : TBikes;
fork, pneus, guiador, banco, cranks: TProdutos;
bike: integer;
produto: integer;
total: integer;
opcao: integer;

procedure menu;

{Begin do procedure menu}
Begin

clrscr;
Textcolor (yellow);
WRITELN;
Writeln ('============================================================================');
Writeln ('= M E N U =');
Writeln ('= =');
Writeln ('= 1 - Adquirir Bicicleta =');
Writeln ('= 2 - Adquirir peças =');
Writeln ('= 33 - Sair do Programa =');
Writeln ('= =');
Writeln ('============================================================================');
Writeln;
Write;
Writeln ('Selecione uma opcao:');
Readln (opcao);
{end do procedure menu}
End;


Procedure escolhas;
{begin do procedure escolhas}
Begin

Writeln('Opcao 1');
Writeln('Nome: ',fit.nome);
Writeln('Custo: ',fit.custo);
Writeln('');
Writeln('');
Writeln('Opcao 2');
Writeln('Nome: ',sunday.nome);
Writeln('Custo: ',sunday.custo);
Writeln('');
Writeln('');
Writeln('Opcao 3');
Writeln('Nome: ',verde.nome);
Writeln('Custo: ',verde.custo);
Writeln('Opcao 4');
Writeln('Nome: ',subrosa.nome);
Writeln('Custo: ',subrosa.custo);
Writeln('Indique a BMX que mais lhe agrada, 1,2, 3 ou 4:');
Readln(bike);
Writeln('');

begin
with fit do
begin
nome:= 'Fit Trail 2010 ';
custo:= 640 ;
end;
{end do procedure escolhas}
end;


with Sunday do
begin
nome:= 'Sunday Funday';
custo:= 845;
end;


with verde do
begin
nome:= 'Verde Luxe 2010';
custo:= 649;
end;


with Subrosa do
begin
nome:= 'Subrosa Novus 2010';
custo:= 759;
end;
end;

procedure escolhabmx;
{begin do procedure escolhabmx}

begin

if (bike = 1) then

begin
Writeln('Escolheu a opcao , que equivale ao ',fit.nome, ' com o custo de ',fit.custo,' Euros');
Writeln('');
Writeln('A ',fit.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
End

Else

if (bike = 2) then

begin
Writeln('Escolheu a opcao , que equivale ao ',sunday.nome, ' com o custo de ',sunday.custo,' Euros');
Writeln('');
Writeln('A ',sunday.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end

else

if (bike = 3) then

begin
Writeln('Escolheu a opcao , que equivale ao ',verde.nome, ' com o custo de ',verde.custo,' Euros');
Writeln('');
Writeln('A ',verde.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end

else

if (bike = 4) then

begin
Writeln('Escolheu a opcao , que equivale ao ',subrosa.nome, ' com o custo de ',subrosa.custo,' Euros');
Writeln('');
Writeln('A ',subrosa.nome, 'é bastante boa, mas mesmo assim temos alguns produtos para ficar ainda melhor');
end

else

writeln('opcao invalida');

end;


Procedure produtos;
          {begin do procedure produtos}
          begin

            WHILE (opcao = 6) do
                  begin
                     Writeln('Os produtos são ');
                     writeln('');
                     writeln('Opcao 1');
                     writeln('Produto: ',fork.nome);
                     writeln('Custo: ',fork.custo);
                     writeln('');
                     writeln('Opcao 2');
                     writeln('Produto: ',pneus.nome);
                     writeln('Custo: ',pneus.custo);
                     writeln('');
                     writeln('Opcao 3');
                     writeln('Produto: ',guiador.nome);
                     writeln('Custo: ',guiador.custo);
                     writeln('Opcao 4');
                     writeln('Produto: ',banco.nome);
                     writeln('Custo: ',banco.custo);
                     writeln('Opcao 5');
                     writeln('Produto: ',cranks.nome);
                     writeln('Custo: ',cranks.custo);
                     writeln('Opcao 6');
                     writeln('Terminar compras');
                     Writeln('Escolha as opcoes que deseja');
                     Readln(produto);
                  end;


                  with fork do
                       begin
                            nome:= 'Fork Odyssey Dirt 10mm';
                            custo:= 95;
                       end;


                  with pneus do
                       begin
                            nome:= '2 x Odyssey Path';
                            custo:= 45;
                       end;


                  with guiador do
                       begin
                            nome:= 'FitBike Sky High';
                            custo:= 70;
                       end;



                  with banco do
                       begin
                            nome:= 'TwentyBikeco. Pivotal Kit';
                            custo:= 60;
                       end;

                  with cranks do
                       begin
                            nome:= 'Primo Powerbite';
                            custo:= 110;
                       end;
             end;

procedure contas;
{begin do procedure contas}
begin

WHILE opcao = 3 DO
     BEGIN
          WRITE('Deseja sair ');
          READLN(opcao);
     END;



Begin
     repeat
     Menu;
     readln(opcao);
                   Case opcao of
                   1: escolhas;
                   2: produtos;
                   3: contas;
                   4: Writeln ('Programa Finalizado! ');
                   Else
                   Writeln ('Opcao Invalida!');
                   end;
                   until opcao=4;




end;

{end do procedure contas}
end;
{begin do programa (parte a ser executada e onde chamas as procedures)}
Begin

{end do programa}
end.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora