Jump to content

Duvida Pascal


marrokino
 Share

Recommended Posts

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;
Link to comment
Share on other 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.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other 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.
Link to comment
Share on other 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ê.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other 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 😛

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.

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.