Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

vale

Menu em C

Mensagens Recomendadas

vale

hey there, pessoal.

sou novo por aqui e sou também um perfeito inexperiente em programacao. estou este ano a comecar o curso e nao me orientei ainda bem.

adiante, venho aqui pedir ajuda no trabalho que tenho que fazer para daqui a uma semana e pouco:

1 Companhia Aérea – “Vamos lá”

A companhia aérea “Vamos lá” tem nove voos diários na Europa a partir de Lisboa

(com e sem escala). Neste trabalho não vão interessar os voos de regresso. Os nove voos

estão mostrados na figura em baixo. Cada avião pode transportar 20 passageiros. O mês

em questão tem 30 dias e a gestão dos passageiros consiste em fazer reservas de voos,

propor datas alternativas aos clientes e mudanças de escala se forem possíveis.

O programa deve ter o seguinte menu inicial:

Companhia de Aviação “Vamos lá”

Programa de Reservas

0 – Sair do programa

1 – Ler ficheiro

2 – Listar passageiros de um voo

3 – Número de passageiros de um período de dias

4 – Escrita em ficheiro

5 – Análise económica

6 – Reserva simples de um voo

7 – Reserva de um voo (mais completa)

3 Leitura de dados e visualização de informação

O primeiro conjunto de procedimentos consiste na leitura da informação a partir de

um ficheiro, a listagem dos passageiros de um determinado voo, e o número de

passageiros de todos os voos num intervalo de dez dias. A classificação indicativa para

os alunos que tenham executado apenas esta parte com sucesso é de 10 a 13 valores.

3.1 Leitura de dados

O programa deve ler os dados a partir de um ficheiro de texto cujo nome é

perguntado ao utilizador, com o seguinte formato (nos campos de texto os caracteres

não usados são preenchidos com espaços em branco e nunca com o carácter nulo (‘\0’):

• 5 caracteres para o número do bilhete de identidade que depois formam um

inteiro;

• 1 carácter em branco para separar os dígitos anteriores do nome a seguir;

• 50 caracteres para o nome da pessoa;

• 10 caracteres para o nome da cidade de partida;

• 10 caracteres para o nome da cidade de chegada;

• 2 caracteres para o dia do mês.

Assuma que não existem erros no ficheiro (no sentido de ter outro tipo de

informação ou violações ao que foi descrito em cima.

Para simplificar, o programa pode também ser corrido com um nome do ficheiro e

nesse caso deve ler logo o ficheiro e carregar os dados. Sempre que se voltar a ler algum

ficheiro, os dados anteriores são apagados antes de ler os novos.

Esta sequência repete-se o número de vezes necessário para conter todas as reservas

do mês, não se sabendo à partida quantos existem.

Assuma, no entanto, que não existem mais do que 5000 reservas por mês.

3.2 Listagem dos passageiros de um voo

Esta opção do menu mostra todos os passageiros de um determinado voo. Por

exemplo, o voo 3 do dia 12. Deve mostrar o dia do mês, a origem do voo, o destino do

voo seguido de uma listagem dos passageiros.

3.3 Número de passageiros dos voos num período de tempo

Esta opção deve mostrar o número de passageiros de todos os voos por um período

de 10 dias (por exemplo do dia 3 ao dia 12, ou do dia 25 ao dia 4 – deveria ser do mês

seguinte mas volta ao princípio). Cada linha deve conter o número de passageiros de

todos os voos de um dia. Os voos são identificados por número.

4 Escrita de dados e Análise económica

O segundo conjunto de procedimentos consiste na escrita da informação total num

ficheiro de texto e na visualização em histograma da ocupação dos voos no mês em

causa. A classificação indicativa para os alunos que tenham executado a parte anterior e

esta parte é de 13 a 16 valores.

4

4.1 Escrita de dados

Esta opção deve escrever os dados existentes num ficheiro de texto cujo nome é

perguntado ao utilizador. Os dados devem ser escritos no formato indicado em cima

para a opção de leitura. O ficheiro deve ser fechado no final da opção.

4.2 Análise económica

Com esta opção pretende-se visualizar a ocupação dos aviões no mês. Esta

visualização, para ser eficaz, deve obedecer aos seguintes requisitos:

• Ser feita por agrupamentos de 3 passageiros – voos com 0 a 2 passageiros, 3 a 5,

…, 15 a 17, 18 a 20, e 20 outra vez para se ver o número de voos lotados.

• Conter todos os voos do mês.

• Ser mostrada horizontalmente com o auxílio do carácter ‘*’.

• O número máximo de ‘*’ deve ser de 30 e todos os outros agrupamentos devem

ficar à escala.

5 Reserva simples e Reserva mais completa

O terceiro conjunto de procedimentos consiste na execução de uma reserva simples

e de uma reserva mais completa.

5

5.1 Reserva simples de voo

A reserva simples de um voo consiste na possibilidade de se reservar um lugar num

voo, eventualmente com uma escala. O utilizador deve dizer o destino e se houver

escala é-lhe perguntado qual das escalas pretende. O utilizador deve também dizer o dia

em que pretende viajar.

O programa deve mostrar o estado dos voos (quantas vagas existem) para esse

destino com a mesma escala nos quatro dias anteriores e nos quatro dias posteriores.

O utilizador deve então indicar a reserva que pretende, e se for válida, deve

introduzir a informação necessária ficando a reserva permanente.

Para simplificar, aceita-se que os alunos executem esta reserva apenas entre os dias

5 e 26 do mês (por causa do problema da mudança do mês que no nosso caso tem de

voltar ao início, ou ao fim, do mês). No entanto, se os alunos pretenderem fazer a 4ª

parte têm de ter esta reserva para qualquer dia do mês.

Os alunos não se devem preocupar com a coerência da informação (por exemplo, se

um utilizador está a fazer uma segunda reserva para o mesmo voo, ou outras coisas

parecidas).

5.2 Reserva mais completa

Esta reserva é independente da anterior, para simplificar os procedimentos. Nesta

reserva o utilizador pretende ir para um destino com escala (SEMPRE). É-lhe

perguntado qual o destino, dia e escala. Se houver lugar é feita a reserva.

Se não for possível, o programa deve indicar alternativas para esse dia, para o dia

anterior e para o dia seguinte, deixando o utilizador escolher uma e prosseguindo a

reserva. Para não complicar demasiado o programa não testa se as alternativas são

válidas (contêm voos com lugares), deixando essa tarefa para o utilizador.

O utilizador escolhe uma das opções e o programa deve validá-la. Se for válida, faz

a reserva. Se não for válida, pede outra opção ao utilizador (pode acontecer que o

utilizador tenha de cancelar a operação).

6 Geração de dados

O quarto e último conjunto de procedimentos consiste na execução de um

programa auxiliar que gere as reservas e escreva um ficheiro de texto (tal como o

ficheiro que é facultado aos alunos no sítio da disciplina).

6.1 Geração de dados

A geração de dados deve ser feita a partir da listagem dos alunos inscritos na

disciplina de Programação de Microprocessadores. Um ficheiro com o formato .txt

encontra-se no sítio da disciplina para os alunos poderem usar.

A geração das reservas deve ser aleatória. Para tal os alunos devem estudar o modo

como gerar números aleatórios no livro da disciplina (por volta da página 219).

O programa deve gerar aleatoriamente o número de passageiros por voo e por dia, e

deve também gerar aleatoriamente quantos passageiros fazem escala em cada uma das

três cidades para ir para uma das outras três cidades. Este segundo número deve estar

dependente de números anteriores, evidentemente. Isto é, se o voo Lisboa-Milão vai

com 10 passageiros, não podem haver 15 passageiros a fazerem escala em Milão para

Berlim.

O programa deve ainda perguntar quantos voos por dia devem estar esgotados e

atribuir esses voos aleatoriamente aos voos existentes antes de calcular aleatoriamente o número de passageiros para os restantes voos.

Uma vez calculado o número de passageiros por voo e o número passageiros que

seguem viagem em escalas, o programa deve escolher aleatoriamente os passageiros a

partir do ficheiro dos alunos inscritos em Programação de Microprocessadores.

Finalmente, o programa deve escrever todos os dados num ficheiro de texto para

poder ser usado pelo programa principal.

compreendo a vossa relutância em ler isto tudo, mas nao procuro que me façam o trabalho; apenas que me expliquem em linhas gerais o necessário e/ou o que posso utilizar na construção do código.  :confused: desculpem, anyway.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.