Ir ao conteúdo
  • Cadastre-se

Matriz - Preencher dados e ler dentro de um while


Posts recomendados

Fala galera, estou aprendendo matriz e estou com um problema em 2 coisas. A primeira seria preencher a matriz com um caractere específico e o segundo seria fazer com que dentro de uma estrutura de repetição os dados que eu quero sejam lidos dentro da matriz. Alguém pode me dar uma luz?

 

Segue o enunciado: 
Um aviao possue 6 fileira de poltronas, sendo que em cada fileira tem
  8 poltronas.
  As fileiras sao numeradas de 1 a 6 e as poltronas de 1 a 8.
  Elabore um algoritmo para efetuar reservas de assento nesse aviao.
  Dados de Entrada: Numero do Passageiro; Num. da Fileira; Num. da Poltrona.
  Valide o Numero da Fileira e da Poltrona.
- Numero da Fileira deve estar entre 1 e 6 (inclusive), caso contrario
          envie mensagem: "Fileira Inexistente".
- Numero da Poltrona deve estar entre 1 e 8 (inclusive), caso contrario
          envie mensagem: "Poltrona Inexistente".
  Ao reservar o assento, se o mesmo estiver ocupado envie mensagem "Poltrona
  Ocupada - Reserva nao efetuada", senao efetue a reserva e envia mensagem:
  "Poltrona Livre - Reserva Efetuada".
  Sugestao: Iniciar o programa preenchendo a matriz de assentos com o
            caractere 'L' (livre). 
  Para reservar use o criterio:
Posicao de assentos com L esta livre, pode ser reservado. 
        Para reservar assento trocar o 'L' pelo caractere 'O' (ocupado).
  O programa deve encerrar quando Num. do Passageiro for igual a 0.
No encerramento do programa mostre a situacao dos assentos do voo.
  (mostrar o conteudo da Matriz)

 
Até agora o que eu fiz foi isso, mas aí meu cérebro bugou na parte de colocar o que quero dentro da matriz, alguém poderia me dar uma luz?
Program Aviao;
uses CRT;
var
  mat_poltrona   :array [1..6,1..8] of String;
  IndF, IndP     :byte;
  num_passageiro,
  num_fileira,
  num_polt       :word;

begin
ClrScr;
writeln(mat_poltrona[IndF,IndP], 'L');
GotoXY(05,05);
writeln('Digite o n£mero do passageiro:');
GotoXY(05,06); Writeln ('Digite o n£mero da Fileira:');
GotoXY(05,07); Writeln ('Digite o n£mero da Poltrona:');
while (num_passageiro <> 0) do 
  begin
  GotoXY(30,05);
  Readln(num_passageiro)
  GotoXY(30,06); readln(mat_poltrona[IndP
  end.

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Membro VIP

Olá.

Como é sabido, o Fórum passou por manutenção... mas espero que ainda dê tempo. Mesmo que já tenha feito, qualquer coisa podemos revisar o que você já fez...

Abaixo vou me basear com o código da postagem, vamos lá...
 

 

Em 04/12/2015 at 22:43, André Sousa disse:

A primeira seria preencher a matriz com um caractere específico[...]

Para preencher, você precisa percorrer posição por posição... a maneiras mais simples é usando um laço de repetição dentro do outro... E para "armazenar" um valor na posição, é como uma variável comum, mas como é um array precisa passar a(s) coordenada(s) que deseja armazenar. No código abaixo já demonstro o "laço de repetição" e a "atribuição".

 

 

Em 04/12/2015 at 22:43, André Sousa disse:

[...]segundo seria fazer com que dentro de uma estrutura de repetição os dados que eu quero sejam lidos dentro da matriz.

Mesma coisa, basta saber a posição, que no caso é a "fileira" e "poltrona" respectivamente e saber o que vai ser escrito, no caso um "O".

 

***

Alguns pontos iniciais:

1) Por enquanto não mexa com GotoXY();, esse recurso de embelezamento/funcionalidade pode ser aplicado depois!!! O que importa no momento é a estrutura interna, não a interação com o usuário.
2) Como é uma estrutura "padrão", já criei o laço dentro do laço (os for) para demonstrar. Obs.: Não precisa dos begin/end pois só temos "um comendo", mas pode deixar assim... na "revisão", se ainda não precisar, remove.

3) Falta ver qual a utilidade do "número do passageiro", eu particularmente não entendi para que está servindo...

4) Daí aos poucos vá ajustando as "regras" e "mensagens" que o enunciado exige...

 

Abaixo um código para servir de base.

Program Aviao;
uses CRT;
var
  mat_poltrona   :array [1..6,1..8] of char;
  IndF, IndP     :byte;
  num_passageiro,
  num_fileira,
  {num_polt       :word;} //tem algum motivo especial para ser word? [Simon.Viegas]
  num_polt       :byte;
 
begin
ClrScr;

{writeln(mat_poltrona[IndF,IndP], 'L');} //Para "escrever" numa mastriz, o processo é análogo de uma variável comum, o que diferencia é que precisa passar as coordenadas. Vide abaixo: [Simon.Viegas]

//MARCA TODAS AS POLTRONAS COMO LIVRES [Simon.Viegas]
for IndF:=1 to 6 do //para todas as fileiras [Simon.Viegas]
  begin
    for IndP:=1 to 8 do //para todas as poltronas (no caso, de cada fileira)  [Simon.Viegas]
      begin
        mat_poltrona[IndF,IndP]:='L'; //marca como "Livre" [Simon.Viegas]
      end;
  end;

//CADASTRO DE PASSAGEIROS
num_passageiro:=-1; //valor qualquer diferente de 0 apenas para entrar no while [Simon.Viegas]
while (num_passageiro <> 0) do 
  begin
  write  ('Digite o numero do Passageiro:'); readln(num_passageiro);
  write  ('Digite o numero da Fileira   :'); readln(IndF);
  write  ('Digite o numero da Poltrona  :'); readln(IndP);
  mat_poltrona[IndF,IndP]:='0'; //marca a poltrona como "Ocupada". [Simon.Viegas]
  end;









writeln;
writeln;
writeln('FIM DO PROGRAMA');
writeln('Pressione qualquer tecla para continuar');
ReadKey;
end.

 

 

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!