Jump to content
Sign in to follow this  
cleitonpp

Problema com uso de Fila

Recommended Posts

cleitonpp

Bom, eu tava com problema para compilar o programa. Só que refiz todo o código, eis aqui o código.

Ele simula uma fila de impressão usando fila circular, falta implementar uma coisa ou outra. Mas está funcionando  :)

program zzz;
uses crt;
const Max= 20;
type
  TipoItem  = string[30];
  TipoFila  = record
                Item   : array [1..Max] of TipoItem;
                Frente : integer;
                Tras   : integer;
                Tamanho: integer;
              end;

procedure FFVazia(var Fila : TipoFila);
begin
  Fila.Frente := 1;
  Fila.Tras := 0;
  Fila.Tamanho := 0;
end;

function Vazia(Fila : TipoFila) : boolean;
begin
  Vazia := Fila.Frente = Fila.Tras;
end;

procedure Insere(var Fila : TipoFila; x:tipoitem);
begin
  if (fila.tamanho = Max)
  then writeln('FILA CHEIA')
  else begin
         fila.tamanho := fila.tamanho + 1;

         if fila.tras = Max
         then fila.tras := 1
         else fila.tras := fila.tras + 1;

         Fila.Item[Fila.Tras] := x;
       end;
       end;

procedure Retira(var Fila : TipoFila; var x: tipoitem);
begin
  if fila.tamanho = 0
  then writeln('FILA VAZIA')
  else begin
         fila.tamanho := fila.tamanho - 1;
         if fila.frente = Max
         then fila.frente := 1
         else fila.frente := fila.frente + 1;

         if fila.frente = 1
      then Fila.Item[Max]:= ' '
      else fila.item[fila.frente - 1]:= ' ';

      end;
end;

procedure menu;
Begin
clrscr;
writeln('>> FILA DE IMPRESSAO <<');
writeln;
writeln('1 - Insere arquivo na lista de impressao');
writeln;
writeln('2 - Executa impressao');
writeln;
writeln('3 - Exibe o estado da fila de impressao');
writeln;
writeln('4 - Fim');
writeln;
end;

procedure exibe_fila(fila: tipofila);
var
  i:integer;
begin
  for i:= 1 to max do
    write(fila.item[i],'  ');
  writeln;
end;


procedure exibe_primeiro(fila: tipofila);
var
  i:integer;
begin
  i:= 1;
  write('1 - ', fila.item[i]);
  writeln;
end;

var
   fila: TipoFila;
   x,y,item: TipoItem;
   op: integer;


begin
     clrscr;
     FFVazia(fila);
     menu;
     repeat
     writeln;
     writeln('Qual sua opcao: ');
     readln(op);
	case op of
		1:	begin
                      writeln('Nome do arquivo: ');
		          readln(x);
                      Insere(fila, x);
                      readkey;
                end;

            2:  begin
                      writeln('Arquivo sendo impresso: ');
                      exibe_primeiro(fila);
                      Retira(fila, x);
                      readkey;
                end;

            3:  begin
                      writeln('Fila de impressao: ');
                      exibe_fila(fila);
                      readkey;
                end;

            4:  begin
                     writeln;
		         writeln('>> FIM <<');
		         readkey;
                    end;

            else
                writeln('Opcao invalida');
                readkey;
                end;
               until op=4;

end.

Share this post


Link to post
Share on other sites
thoga31

Resolvido

Mas evitavas ter apagado o tópico, não? 👎

E, já agora, além da dúvida, terias postado a solução para o teu problema para futuro esclarecimento de outras dúvidas relacionadas. Até tinhas um bom código com variáveis dinâmicas.


Knowledge is free!

Share this post


Link to post
Share on other sites
cleitonpp

Mas evitavas ter apagado o tópico, não? 👎

E, já agora, além da dúvida, terias postado a solução para o teu problema para futuro esclarecimento de outras dúvidas relacionadas. Até tinhas um bom código com variáveis dinâmicas.

Certamente eu não precisava ter apagado o código, mas como refiz ele, postei o correto.

Valeu  :P

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.