alex.ryan Postado Maio 13, 2009 Denunciar Share Postado Maio 13, 2009 PROGRAM TESTE;USES CRT;TYPE TP_PRODUT = RECORD NOME : STRING; QTD : INTEGER; você,VV : REAL; END;TYPE TP_JOGADOR = RECORD NOME : STRING; SALDO : REAL; PRODUTO : ARRAY[1..3,1..3] OF STRING; ESTOQUE : ARRAY[1..3,1..3] OF INTEGER; END;TYPE TP_CIDADE = RECORD NOME : STRING; PROD : ARRAY [1..3] OF STRING; PRECOCOMPRA : ARRAY [1..3] OF REAL; PRECOVENDA : ARRAY [1..3] OF REAL; ESTOQUE : ARRAY [1..3] OF INTEGER; END;VAR ADMINISTRADOR : STRING; CIDADE : ARRAY [1..3] OF TP_CIDADE; ICIDADE : INTEGER; DESLOC : ARRAY [1..3,1..3] OF REAL; CONF : CHAR; JOGADOR : TP_JOGADOR; SAIR,JOGAR : STRING; OPCAOMENU : CHAR; CIDADEATUAL : INTEGER; CIDADEDESTINO : INTEGER; I,I2,I3 : INTEGER; OP,OP2 : INTEGER ; CMOSTRARINSTRUCOES : CHAR; ICODPRODUTO, IQUANTCOMPRA, IQUANTVENDA :INTEGER; RVALORCOMPRA,RVALORVENDA : REAL; SCONFIRMA : STRING; BEXISTEPRODUTO : BOOLEAN; CLRSCR WRITELN('1- Efetuar deslocamento entre cidades'); WRITE('2- Consultar mercadorias dispon¡veis para'); WRITELN(' compra na cidade e seus respectivos pre‡os'); WRITELN('3- Consultar pre‡os de venda de todas as mercadorias'); WRITELN('4- Consultar mercadorias que est levando'); WRITELN('5- Consultar saldo financeiro'); WRITELN('6- Consultar estoque'); WRITELN('7- Comprar produtos'); WRITELN('8- Vender produtos'); WRITELN('0- Finalizar o jogo'); READLN(OPC3); CASE OPC3 OF 1: BEGIN WRITELN; WRITELN('Efetuar deslocamento'); WRITELN('Vocˆ est na cidade ',JOGADOR.CID,'.'); FOR j:=1 to 4 do if(JOGADOR.CID <> VETCIDADE[j]) THEN writeln(' Se quer ir para a cidade ',VETCIDADE[j],' ,digite ',j); READLN(DESLOC); JOGADOR.SALDO:= JOGADOR.SALDO - matcustod[jogador.ncid,desloc]; JOGADOR.CID:= VETCIDADE[DESLOC]; JOGADOR.NCID:= DESLOC; READKEY(); END; 2: BEGIN Writeln('------------------------------------------------------------------'); Writeln(' Mercadorias dispon¡veis para compra e pre‡os'); Writeln('------------------------------------------------------------------'); Writeln; For j:= 1 to 4 do BEGIN Writeln('Cidade: ',Vetcidade[j]); Writeln; For i:= 1 to 4 do BEGIN Writeln('Produto: ', Vetproduto[j].Nome); Writeln('Pre‡o de compra: ', Vetproduto[j].PC:7:2); END; WRITELN; END; Readkey(); Writeln; WHILE CP <> 0 DO BEGIN CASE CP OF 1..9: BEGIN clrscr; textcolor(lightgreen); writeln('CAIXEIRO VIAJANTE'); writeln('CONSULTAR ESTOQUE DO JOGADOR E VENDER PRODUTOS'); writeln('Jogador: ', Jogador.PersonagemNome); writeln('Cidade atual: ', Cadastro[Jogador.PersonagemCidadeAtual].CidadeNome); writeln('Saldo atual: R$', Jogador.PersonagemSaldoAtual:1:2); writeln('CONSULTAR ESTOQUE DO JOGADOR'); FOR NC:= 1 TO 3 DO FOR NP:= 1 TO 3 DO writeln('Produto: ', Jogador.PersonagemProdutoNome[NC,NP], ' | Qnt: ', Jogador.PersonagemProdutoQnt[NC,NP], ' | Pre‡o de Venda: R$', Jogador.PersonagemProdutoValorVenda[NC,NP]:1:2); END; END; // Menu comprar produtos textcolor(lightblue); writeln('VENDER PRODUTOS'); writeln('[1] ', Jogador.PersonagemProdutoNome[1,1]); writeln('[2] ', Jogador.PersonagemProdutoNome[1,2]); writeln('[3] ', Jogador.PersonagemProdutoNome[1,3]); writeln('[4] ', Jogador.PersonagemProdutoNome[2,1]); writeln('[5] ', Jogador.PersonagemProdutoNome[2,2]); writeln('[6] ', Jogador.PersonagemProdutoNome[2,3]); writeln('[7] ', Jogador.PersonagemProdutoNome[3,1]); writeln('[8] ', Jogador.PersonagemProdutoNome[3,2]); writeln('[9] ', Jogador.PersonagemProdutoNome[3,3]); writeln('[0] Menu principal'); write('Entre com o n£mero do produto que deseja vender: '); readln(CP); // PROCESSAMENTO DA VENDA CASE CP OF 1..9: BEGIN // Atribuir valores a vari veis de controle TempQnt := 0; TempTotal := 0.00; CASE CP OF 1..3: NC := 1; 4..6: NC := 2; 7..9: NC := 3; END; CASE CP OF 1,4,7: NP := 1; 2,5,8: NP := 2; 3,6,9: NP := 3; END; clrscr; textcolor(lightgreen); writeln('CAIXEIRO VIAJANTE'); writeln('CONSULTAR ESTOQUE DO JOGADOR E VENDER PRODUTOS'); writeln('Jogador: ', Jogador.PersonagemNome); writeln('Saldo atual: R$', Jogador.PersonagemSaldoAtual:1:2); writeln('Produto selecionado: ', Jogador.PersonagemProdutoNome[NC,NP]); writeln('Qnt em estoque: ', Jogador.PersonagemProdutoQnt[NC,NP], ' | Pre‡o de Venda: R$', Jogador.PersonagemProdutoValorVenda[NC,NP]:1:2); textcolor(lightblue); write('Entre com a quantidade a ser vendida: '); readln(TempQnt); IF (TempQnt <= Jogador.PersonagemProdutoQnt[NC,NP]) THEN // Validar quantidade de produtos BEGIN TempTotal := TempQnt * Jogador.PersonagemProdutoValorVenda[NC,NP]; // Calcular valor total da venda textcolor(lightgreen); writeln('O valor total da venda ‚: R$', TempTotal:1:2); // Exibe valor total da venda Jogador.PersonagemSaldoAtual:= Jogador.PersonagemSaldoAtual + TempTotal; // Adiciona ao saldo do jogador o valor total da venda Jogador.PersonagemProdutoQnt[NC,NP] := Jogador.PersonagemProdutoQnt[NC,NP] - TempQnt; // Diminui do estoque do jogador o n£mero de produtos vendidos IF (Jogador.PersonagemProdutoQnt[NC,NP] = 0) THEN // Se igual a 0, eliminar o produto do estoque BEGIN Jogador.PersonagemProdutoNome[NC,NP] := ''; Jogador.PersonagemProdutoQnt[NC,NP] := 0; Jogador.PersonagemProdutoValorVenda[NC,NP] := 0.00; END; writeln('A venda do produto ', Jogador.PersonagemProdutoNome[NC,NP], ' foi realizada com sucesso'); writeln('Pressione qualquer tecla para continuar'); readkey; END ELSE BEGIN textcolor(lightred); writeln('Estoque insuficiente, venda nÆo realizada'); writeln('Pressione qualquer tecla para continuar'); readkey; END; END; END; 2: begin 2: begin writeln('Indique o nome e a quantidade do produto que deseja vender.'); write('Produto: '); readln(Produto); // verifica a existencia do produto na sacola z:= 0; FOR x:= 1 TO 9 DO IF Produto = sacola.ProdutoJog[x] THEN z:= x;; IF z = 0 THEN writeln('Vocˆ nÆo possui o produto.') ELSE begin // solicita a quantidade que se deseja vender write('Quantidade: '); readln(QtdProduto); // verifica a quantidade dispon¡vel do produto IF QtdProduto > sacola.QtdProdutoJog[z] THEN writeln('A quantidade na sacola deste produto ‚ ', sacola.QtdProdutoJog[z],'.') ELSE // verifica se ‚ poss¡vel vender o produto na cidade begin y:= 0; FOR x:= 1 TO 3 DO IF Produto = Cidade.NomeProduto[x] THEN y:= x; IF y = 0 THEN writeln('NÆo ‚ poss¡vel vender este produto nesta cidade.') ELSE begin // efetua a venda (* adiciona: saldo, qtd produtos na cidade *) saldo:= saldo + Cidade.ValorVenda[y] * QtdProduto; Cidade.QtdProduto[y]:= Cidade.QtdProduto[y] + QtdProduto; (* retira produto na sacola *) sacola.QtdProdutoJog[z]:= sacola.QtdProdutoJog[z] - QtdProduto; writeln(); writeln('Vocˆ vendeu ', QtdProduto, ' und do produto ', Produto,'.'); writeln('Seu saldo ser atualizado para R$ ', saldo:1:2); end; end; end; end; // ir para outra cidade 3: begin writeln('Escolha a cidade para qual deseja se deslocar.'); write('- Cidade destino: '); readln(Destino); writeln(); z:= 0; FOR x:= 1 TO 3 DO IF (Destino = Cidade[x].Nome) THEN z:= x; IF z = 0 THEN writeln('Sinto muito, mas a cidade ', Destino, ' nÆo est na rela‡Æo.') ELSE If z = i Then writeln('Vocˆ j se encontra na cidade ', Destino, '.') Else begin writeln('Vocˆ se deslocar para cidade ', Destino,'.'); Saldo:= Saldo - Deslocamento[i,z]; writeln('Ser cobrada a taxa de deslocamento no valor de R$ ', Deslocamento[i,z]:1:2); writeln('Seu saldo ser atualizado para R$ ', saldo:1:2); i:= z; end; end; // finalizar o jogo 4: writeln('finalizar'); // nenhuma das op‡äes dispon¡veis ELSE writeln('Op‡Æo inv lida.'); END; readkey(); clrscr(); UNTIL opcao = 4; readkey(); End. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 raphael_suporte Postado Maio 13, 2009 Denunciar Share Postado Maio 13, 2009 Qual erro está ocorrendo?? o compilador não indicou nenhuma linha??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
alex.ryan
PROGRAM TESTE;
USES CRT;
TYPE TP_PRODUT = RECORD
NOME : STRING;
QTD : INTEGER;
você,VV : REAL;
END;
TYPE TP_JOGADOR = RECORD
NOME : STRING;
SALDO : REAL;
PRODUTO : ARRAY[1..3,1..3] OF STRING;
ESTOQUE : ARRAY[1..3,1..3] OF INTEGER;
END;
TYPE TP_CIDADE = RECORD
NOME : STRING;
PROD : ARRAY [1..3] OF STRING;
PRECOCOMPRA : ARRAY [1..3] OF REAL;
PRECOVENDA : ARRAY [1..3] OF REAL;
ESTOQUE : ARRAY [1..3] OF INTEGER;
END;
VAR
ADMINISTRADOR : STRING;
CIDADE : ARRAY [1..3] OF TP_CIDADE;
ICIDADE : INTEGER;
DESLOC : ARRAY [1..3,1..3] OF REAL;
CONF : CHAR;
JOGADOR : TP_JOGADOR;
SAIR,JOGAR : STRING;
OPCAOMENU : CHAR;
CIDADEATUAL : INTEGER;
CIDADEDESTINO : INTEGER;
I,I2,I3 : INTEGER;
OP,OP2 : INTEGER ;
CMOSTRARINSTRUCOES : CHAR;
ICODPRODUTO, IQUANTCOMPRA, IQUANTVENDA :INTEGER;
RVALORCOMPRA,RVALORVENDA : REAL;
SCONFIRMA : STRING;
BEXISTEPRODUTO : BOOLEAN;
CLRSCR
WRITELN('1- Efetuar deslocamento entre cidades');
WRITE('2- Consultar mercadorias dispon¡veis para');
WRITELN(' compra na cidade e seus respectivos pre‡os');
WRITELN('3- Consultar pre‡os de venda de todas as mercadorias');
WRITELN('4- Consultar mercadorias que est levando');
WRITELN('5- Consultar saldo financeiro');
WRITELN('6- Consultar estoque');
WRITELN('7- Comprar produtos');
WRITELN('8- Vender produtos');
WRITELN('0- Finalizar o jogo');
READLN(OPC3);
CASE OPC3 OF
1: BEGIN
WRITELN;
WRITELN('Efetuar deslocamento');
WRITELN('Vocˆ est na cidade ',JOGADOR.CID,'.');
FOR j:=1 to 4 do
if(JOGADOR.CID <> VETCIDADE[j]) THEN
writeln(' Se quer ir para a cidade ',VETCIDADE[j],' ,digite ',j);
READLN(DESLOC);
JOGADOR.SALDO:= JOGADOR.SALDO - matcustod[jogador.ncid,desloc];
JOGADOR.CID:= VETCIDADE[DESLOC];
JOGADOR.NCID:= DESLOC;
READKEY();
END;
2: BEGIN
Writeln('------------------------------------------------------------------');
Writeln(' Mercadorias dispon¡veis para compra e pre‡os');
Writeln('------------------------------------------------------------------');
Writeln;
For j:= 1 to 4 do
BEGIN
Writeln('Cidade: ',Vetcidade[j]);
Writeln;
For i:= 1 to 4 do
BEGIN
Writeln('Produto: ', Vetproduto[j].Nome);
Writeln('Pre‡o de compra: ', Vetproduto[j].PC:7:2);
END;
WRITELN;
END;
Readkey();
Writeln;
WHILE CP <> 0 DO
BEGIN
CASE CP OF
1..9:
BEGIN
clrscr;
textcolor(lightgreen);
writeln('CAIXEIRO VIAJANTE');
writeln('CONSULTAR ESTOQUE DO JOGADOR E VENDER PRODUTOS');
writeln('Jogador: ', Jogador.PersonagemNome);
writeln('Cidade atual: ', Cadastro[Jogador.PersonagemCidadeAtual].CidadeNome);
writeln('Saldo atual: R$', Jogador.PersonagemSaldoAtual:1:2);
writeln('CONSULTAR ESTOQUE DO JOGADOR');
FOR NC:= 1 TO 3 DO
FOR NP:= 1 TO 3 DO
writeln('Produto: ', Jogador.PersonagemProdutoNome[NC,NP], ' | Qnt: ', Jogador.PersonagemProdutoQnt[NC,NP], ' | Pre‡o de Venda: R$', Jogador.PersonagemProdutoValorVenda[NC,NP]:1:2);
END;
END;
// Menu comprar produtos
textcolor(lightblue);
writeln('VENDER PRODUTOS');
writeln('[1] ', Jogador.PersonagemProdutoNome[1,1]);
writeln('[2] ', Jogador.PersonagemProdutoNome[1,2]);
writeln('[3] ', Jogador.PersonagemProdutoNome[1,3]);
writeln('[4] ', Jogador.PersonagemProdutoNome[2,1]);
writeln('[5] ', Jogador.PersonagemProdutoNome[2,2]);
writeln('[6] ', Jogador.PersonagemProdutoNome[2,3]);
writeln('[7] ', Jogador.PersonagemProdutoNome[3,1]);
writeln('[8] ', Jogador.PersonagemProdutoNome[3,2]);
writeln('[9] ', Jogador.PersonagemProdutoNome[3,3]);
writeln('[0] Menu principal');
write('Entre com o n£mero do produto que deseja vender: ');
readln(CP);
// PROCESSAMENTO DA VENDA
CASE CP OF
1..9:
BEGIN
// Atribuir valores a vari veis de controle
TempQnt := 0;
TempTotal := 0.00;
CASE CP OF
1..3: NC := 1;
4..6: NC := 2;
7..9: NC := 3;
END;
CASE CP OF
1,4,7: NP := 1;
2,5,8: NP := 2;
3,6,9: NP := 3;
END;
clrscr;
textcolor(lightgreen);
writeln('CAIXEIRO VIAJANTE');
writeln('CONSULTAR ESTOQUE DO JOGADOR E VENDER PRODUTOS');
writeln('Jogador: ', Jogador.PersonagemNome);
writeln('Saldo atual: R$', Jogador.PersonagemSaldoAtual:1:2);
writeln('Produto selecionado: ', Jogador.PersonagemProdutoNome[NC,NP]);
writeln('Qnt em estoque: ', Jogador.PersonagemProdutoQnt[NC,NP], ' | Pre‡o de Venda: R$', Jogador.PersonagemProdutoValorVenda[NC,NP]:1:2);
textcolor(lightblue);
write('Entre com a quantidade a ser vendida: ');
readln(TempQnt);
IF (TempQnt <= Jogador.PersonagemProdutoQnt[NC,NP]) THEN // Validar quantidade de produtos
BEGIN
TempTotal := TempQnt * Jogador.PersonagemProdutoValorVenda[NC,NP]; // Calcular valor total da venda
textcolor(lightgreen);
writeln('O valor total da venda ‚: R$', TempTotal:1:2); // Exibe valor total da venda
Jogador.PersonagemSaldoAtual:= Jogador.PersonagemSaldoAtual + TempTotal; // Adiciona ao saldo do jogador o valor total da venda
Jogador.PersonagemProdutoQnt[NC,NP] := Jogador.PersonagemProdutoQnt[NC,NP] - TempQnt; // Diminui do estoque do jogador o n£mero de produtos vendidos
IF (Jogador.PersonagemProdutoQnt[NC,NP] = 0) THEN // Se igual a 0, eliminar o produto do estoque
BEGIN
Jogador.PersonagemProdutoNome[NC,NP] := '';
Jogador.PersonagemProdutoQnt[NC,NP] := 0;
Jogador.PersonagemProdutoValorVenda[NC,NP] := 0.00;
END;
writeln('A venda do produto ', Jogador.PersonagemProdutoNome[NC,NP], ' foi realizada com sucesso');
writeln('Pressione qualquer tecla para continuar');
readkey;
END
ELSE
BEGIN
textcolor(lightred);
writeln('Estoque insuficiente, venda nÆo realizada');
writeln('Pressione qualquer tecla para continuar');
readkey;
END;
END;
END;
2: begin
2: begin
writeln('Indique o nome e a quantidade do produto que deseja vender.');
write('Produto: '); readln(Produto);
// verifica a existencia do produto na sacola
z:= 0;
FOR x:= 1 TO 9 DO
IF Produto = sacola.ProdutoJog[x] THEN z:= x;;
IF z = 0 THEN
writeln('Vocˆ nÆo possui o produto.')
ELSE
begin
// solicita a quantidade que se deseja vender
write('Quantidade: '); readln(QtdProduto);
// verifica a quantidade dispon¡vel do produto
IF QtdProduto > sacola.QtdProdutoJog[z] THEN
writeln('A quantidade na sacola deste produto ‚ ', sacola.QtdProdutoJog[z],'.')
ELSE
// verifica se ‚ poss¡vel vender o produto na cidade
begin
y:= 0;
FOR x:= 1 TO 3 DO
IF Produto = Cidade.NomeProduto[x] THEN y:= x;
IF y = 0 THEN
writeln('NÆo ‚ poss¡vel vender este produto nesta cidade.')
ELSE
begin
// efetua a venda
(* adiciona: saldo, qtd produtos na cidade *)
saldo:= saldo + Cidade.ValorVenda[y] * QtdProduto;
Cidade.QtdProduto[y]:= Cidade.QtdProduto[y] + QtdProduto;
(* retira produto na sacola *)
sacola.QtdProdutoJog[z]:= sacola.QtdProdutoJog[z] - QtdProduto;
writeln();
writeln('Vocˆ vendeu ', QtdProduto, ' und do produto ', Produto,'.');
writeln('Seu saldo ser atualizado para R$ ', saldo:1:2);
end;
end;
end;
end;
// ir para outra cidade
3: begin
writeln('Escolha a cidade para qual deseja se deslocar.');
write('- Cidade destino: '); readln(Destino);
writeln();
z:= 0;
FOR x:= 1 TO 3 DO
IF (Destino = Cidade[x].Nome) THEN z:= x;
IF z = 0 THEN writeln('Sinto muito, mas a cidade ', Destino, ' nÆo est na rela‡Æo.')
ELSE
If z = i Then writeln('Vocˆ j se encontra na cidade ', Destino, '.')
Else
begin
writeln('Vocˆ se deslocar para cidade ', Destino,'.');
Saldo:= Saldo - Deslocamento[i,z];
writeln('Ser cobrada a taxa de deslocamento no valor de R$ ', Deslocamento[i,z]:1:2);
writeln('Seu saldo ser atualizado para R$ ', saldo:1:2);
i:= z;
end;
end;
// finalizar o jogo
4: writeln('finalizar');
// nenhuma das op‡äes dispon¡veis
ELSE
writeln('Op‡Æo inv lida.');
END;
readkey(); clrscr();
UNTIL opcao = 4;
readkey();
End.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.