Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Popão

Cadastro de Produtos - Pascal

Recommended Posts

Olá bom dia,

obrigado pela ajuda no outro tópico mais refiz todo o programa por causa de uns cmd requeridos pelo professor, na verdade fica até mais fácil de fazer o programa modularizando-o. mas o diabinho não quer funcionar na linha 100: pos =: pos + 1; não entendo porque erro aparece aqui!

 

 

program trabalho;
uses CRT;

{ Declara o tipo do registro }
type 
  TReg = record
	cod: integer; 		{ Código do produto (campo chave) }
	desc: String[20];	{ Descrição do produto }
	preco: real;		{ Preço do produto }
	qtd: integer;		{ Quantidade do produto }	  {x}
	fab: string[20];	 { Fabricante do produto } 
	entra: integer;	  { Data de inclusão do produto }   
  end;

var
  reg: TReg; { Declara uma variavel composta do tipo do registro }
  vet: array[1..100] of TReg; { Declara um vetor do tipo do registro }
  opcao: integer; { Opção selecionada }

  { Procedimento para exibir o menu }
  procedure Menu;
  begin
	clrscr;
	writeln('Digite sua opcao:');
	writeln('1 => Incluir novo produto');
	writeln('2 => Editar produto');							  {x}
	writeln('3 => Excluir produto');							 {x}
	writeln('4 => Consultar por data (informe as datas) ');	  {x}
	writeln('5 => Conslutar por nome (inf. letra inicial)');	  {x}
	writeln('6 => Consultar por descrição comum (inf. palavra)'); {x}
	writeln('7 => Listar todos produtos ordenados por código');   {x}
	writeln('8 => Listar todos produtos em ordem alfabética');	{x}
	writeln('9 => Sair');	   
  end;

  { Função que busca a posição do campo chave (código) no vetor de registro.
	O resultado da busca será a posição (índice) para o registro encontrado.
	Se a chave não existir o resultado será 0 (zero) }
  function Buscar(cod: integer): integer;
  var 
	pos: integer; { Posição ou índice do vetor }
  begin
	for pos := 1 to 100 do
	begin
	  if vet[pos].cod = cod then
	  begin
		// O campo chave (Código) foi encontrado
		Buscar := pos; { Atribui a Posição onde encontrou o código }
		break; { Usado para forçar a saída de uma estrutura de repetição (while, for, repeat). }
	  end;
	end;
	if pos > 100 then
	begin
	  // O campo chave (Código) não foi encontrado
	  Buscar := 0; { Inicializa Buscar com zero }
	end;
  end;

  { Procedimento para Incluir um registro no vetor }
  Procedure Incluir;
  var 
	pos: integer; 	{ Posição ou índice do vetor }
	resp: char;	{ Resposta }
  begin
  pos := 1;
	repeat 
	  clrscr;
	  repeat
		write('Digite o codigo do produto: ');
		readln(reg.cod);
		if reg.cod <= 0 then
		begin
		  writeln('Codigo invalido! Digite um numero positivo.');
		end;
	  until reg.cod > 0;

	  pos := Buscar(reg.cod); { Buscar no vetor um registro com o campo chave (código) digitado }
	  if pos > 0 then
	  begin // O produto já existe. Mostra uma mensagem
		writeln('Inclusao invalida! Codigo já cadastrado.');
	  end else
	  begin
		pos := Buscar(0); { Buscar no vetor um registro vazio (considera vazio quando o campo chave for igual a 0) }
		if pos = 0 then
		begin // O vetor está cheio. Mostra uma mensagem
		  writeln('Inclusao nao permitida! Vetor lotado.');
		end else
		begin // 
		  write('Digite a descricao do produto: ');
		  readln(reg.desc);
		  write('Digite o preco do produto: ');
		  readln(reg.preco);
		  write('Digite a data (aaaammdd) de entrada do produto: ');
		  readln(reg.entra);
		  write('Digite a quantidade de produtos incluidos: ');
		  readln(reg.qtd);
		  write('Digite o fabricante do produto: ');
		  readln(reg.fab);
		  vet[pos] := reg; { Preenche o item do vetor com o conteúdo do registro lido }
		  pos =: pos + 1;
		writeln('Registro incluido!');
		end;
	  end;
	  
	  write('Outro produto (S/N)? ');
	  readln(resp);
	until UpCase(resp) = 'N';
  end;
  
  { Procedimento para editar um registro do vetor }
  Procedure Editar;
  var 
	cog,pos: integer; 	{ Posição ou índice do vetor }
	resp: char;	{ Resposta }
  begin
   repeat
	clrscr;
	repeat
	 write('Digite o codigo do produto para editar: ');
	 read(cog); 
	 if cog <= 0 then
	 begin
	  writeln('Codigo invalido! Digite um numero positivo.');
	 end;
	until cog > 0;
	if cog = reg.cod then
	begin
	 write('Cod:',reg.cod, '. Qual o novo codigo do produto: ');
	 read(reg.cod);
	 write(reg.desc, '. Qual a nova descricao: ');
	 readln(reg.desc);
	 write(reg.preco, '. Qual o novo preco: ');
	 readln(reg.preco);
	 write(reg.entra, '. Qual a nova data (aaaammdd) de entrada: ');
	 readln(reg.entra);
	 write(reg.qtd, '. Qual a nova quantidade: ');
	 readln(reg.qtd);
	 write(reg.fab, '. Qual o novo fabricante: ');
	 readln(reg.fab);
	end else
	begin
	writeln('Codigo em branco');
	end;	
	
		  
	
   
   write('Editar outro produto (S/N)? ');
   readln(resp);
   until UpCase(resp) = 'N';
  end;   
		  
 

{ Corpo do programa principal }
Begin
  repeat
	Menu; { Chamada do procedimento Menu }
	read(opcao);
	clrscr;
	case opcao of
	  1: Incluir; { Chamada do procedimento Incluir }
	  2: Editar;   { Chamada do procedimento Editar }
	 //inclui aqui demais opções
	end;
  until opcao = 9;
End.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º Não crie tópicos idênticos em outras áreas, eu removi oq você colocou em Lógica de Programação, e vo manter esse.

2º Cuidado com seus titulos, fique atento as regras do fórum para naum ser punido.

 

Bom n entendo de pascal =//

tem como fazer fazer o pos incremento q nem em C, tipo assim:

vet[pos++] := reg;

---

Título Editado:

 

Dúvida Pascal http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Cadastro de Produtos - Pascal

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae cara eu sei que esse topico eh velho PRA CARACA mas eu nao resisti eu sou iniciante em pascal e sei pouca coisa

 

mas depois de ver esse codigo, eu nao entendi quase nada pq eu repito sou iniciante sei pouca coisa de pascal

 

 

depois de olhar esse codigo e ver na linha que voce falou que esta dando o erro eu vi ke era um erro MUITO bobo e facilimo era simplesmete o

 

pos =: pos + 1;

 

o correto eh

 

pos := pos + 1;

 

ou seja voce estava colocando o : depois do igual sendo que o : fica depois do igual

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.