Ir ao conteúdo
  • Cadastre-se

O algoritmo não finaliza


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Olá a todos, tudo beleza? Poderiam me ajudar?

Meu código tem a finalidade de reservar poltronas de um cinema, mostrar ao usuário as poltronas ocupadas caso ele digite uma já reservada e por fim mostrar uma lista do que já foi reservado.

O problema é que ao digitar o "indicador que finaliza" o algoritmo, ele só mostra a lista de reservados mas pede novamente o nome do usuário.

Como fazer para, ao digitar o "zero" ele mostrar a lista do que já foi reservado e aguardar apenas uma tecla pra finalizar? 

Se puderem me dizer o que fiz de errado e uma breve explicação, ficaria grato.

Abraços.

 

post-715806-0-66548100-1399544584_thumb.

 

Program Polt ;var cliente:array [1..50] of string;i:integer;Begin  writeln('Reserva de poltronas numeradas');  writeln(' * Digite o numero da poltrona [1 a 50]');  writeln(' * Digite 0 para finalizar as entradas');  writeln;  for i:=1 to 50 do    // permite uma entrada de ate 50 dados  cliente[i]:='';    // aspas simples indicando campo vazio  while (i<>0) do    begin    writeln;    write('Poltrona: ' );    readln(i);  while ((i<0) or (i>50)) do    begin    writeln('Poltrona deve ser de 1 a 50');    writeln;    write('Poltrona: ' );    readln(i);    end;  if (i=0) then     // bloco que mostra ao usuario o que foi reservado ja pelo sistema    begin    writeln('POLTRONA   NOME');      for i:=1 to 50 do      if (cliente[i]<>'') then      writeln('       ',i,'    ',cliente[i]);      writeln;  end;  if (cliente[i]='') then   // se poltrona estiver vazia, confirma mostrando o cliente e a confirmacao de reserva     begin       write('Nome: ');       readln(cliente[i]);       writeln('Confirmado');       writeln;       end     else begin       writeln('Poltrona não disponivel');   // se poltrona estiver reservada, alerta tal       write('Poltrona<s> não disponiveis ');  for i:= 1 to 50 do     if (cliente[i]<>'') then     write(i,' ');     writeln;     end;  end;End.

post-715806-0-66548100-1399544584_thumb.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

Vou tentar resumir minhas sugestões:
 
1) IMPORTÂNCIA DE UMA BOA INDENTAÇÃO
Antes de qualquer coisa, você precisar manter o seu código sempre bem indentado.... apesar de aparentar está organizado, creio que não está seguindo corretamente um critério de indentação. Sugiro que corrija e atente-se a isso... é de suma importância;

 

#

 

2) ORGANIZAÇÃO DAS VARIÁVEIS
* 2.1) Discriminação de variáveis
Como uma boa prática, você não deve usar uma mesma variável para duas (ou mais) funções, ou seja, se é "i" está sendo (foi) usado como "parte da estrutura de for", você não deve usar ela para outra coisa... no máximo poderia usar em outro for.. ou estrutura semelhante...
O que está em jogo aqui são dois principais detalhes:: a) organização do programa, proporcionando uma melhor clareza. E B) o uso indevido de variáveis, o que pode proporcionar perdas de dados armazenados e inconsistências. Como é fácil perceber, uma coisa de certo modo leva a outra.
Sempre tente usar nomes de variáveis sugestivas... como por exemplo para ler as poltronas usar poltronas. O "i" também, como já comentei, já sugere que é um "contador" ou "controlador".
 
* 2.2) Armazenamento de dados
 Em relação ao que disse o "Math.PI", creio que você não precisa de um array, pois, como o código sugere, a própria posição do cliente sugere/determina qual é a respectiva poltrona dele.
 

#

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie um array para armazenar as poltronas, igual você fez com os clientes.

 

Use a variável i somente para controle/contar.

 

 

Vou tentar resumir minhas sugestões:

 

1) IMPORTÂNCIA DE UMA BOA INDENTAÇÃO

Antes de qualquer coisa, você precisar manter o seu código sempre bem indentado.... apesar de aparentar está organizado, creio que não está seguindo corretamente um critério de indentação. Sugiro que corrija e atente-se a isso... é de suma importância;

 

#

 

2) ORGANIZAÇÃO DAS VARIÁVEIS

* 2.1) Discriminação de variáveis

Como uma boa prática, você não deve usar uma mesma variável para duas (ou mais) funções, ou seja, se é "i" está sendo (foi) usado como "parte da estrutura de for", você não deve usar ela para outra coisa... no máximo poderia usar em outro for.. ou estrutura semelhante...

O que está em jogo aqui são dois principais detalhes:: a) organização do programa, proporcionando uma melhor clareza. E B) o uso indevido de variáveis, o que pode proporcionar perdas de dados armazenados e inconsistências. Como é fácil perceber, uma coisa de certo modo leva a outra.

Sempre tente usar nomes de variáveis sugestivas... como por exemplo para ler as poltronas usar poltronas. O "i" também, como já comentei, já sugere que é um "contador" ou "controlador".

 

* 2.2) Armazenamento de dados

 Em relação ao que disse o "Math.PI", creio que você não precisa de um array, pois, como o código sugere, a própria posição do cliente sugere/determina qual é a respectiva poltrona dele.

 

#

 

No aguardo.

 

Amigos, consegui resolver o problema.

A respeito de indentação, eu sempre me passo e acabo me perdendo no código pela falta dela.

Mas o problema eu consegui resolver, coloquei um "break" dentro da estrutura condicional IF e antes de terminar esse mesmo bloco e pronto.

Obrigado pela ajuda galera.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!