16
respostas

ESTRUTURA DE DADOS EM C - CONSTRUIR UM AEROPORTO, QUEM PODE ME AJUDAR?

Preciso elaborar esse trabalho, alguém que tem conhecimento em Estrutura de dados pode me auxiliar?

  1. O objetivo do trabalho prático é simular padrões de decolagem e aterrissagem em um aeroporto. Suponha que o aeroporto possui três pistas numeradas como 1, 2 e 3. Existem quatro filas de espera para aterrissagem, duas para cada uma das pistas 1 e
  2. Aeronaves que se aproximam do aeroporto devem integrar-se a uma das filas de espera, sendo que essas filas devem procurar manter o mesmo tamanho. Assim que um avião entra em uma fila de aterrissagem, ele recebe um número de identificação ID e outro número inteiro que indica a quantidade de unidade de tempo que o avião pode permanecer na fila antes que ele tenha que descer (do contrário, seu combustível termina e ele cai). Existem também filas para decolagem, uma para cada pista. Os aviões que chegam nessas filas também recebem uma identificação ID. Essas filas devem procurar manter o mesmo tamanho. A cada unidade de tempo, de zero a três aeronaves podem chegar nas filas de decolagem, e de zero a três aeronaves podem chegar nas filas de aterrissagem. A cada unidade de tempo, cada pista pode ser usada para um pouso ou uma decolagem. A pista 3 em geral só é usada para decolagens, a não ser que um dos aviões nas prateleiras fique sem combustível, quando então ela deve ser imediatamente usada para pouso. Se apenas uma aeronave está com falta de combustível, ela pousará na pista 3; se mais de um avião estiver nessa situação, as outras pistas poderão ser utilizadas (a cada unidade de tempo no máximo três aviões poderão estar nessa desagradável situação). Utilize inteiros pares sucessivos para a ID dos aviões chegando nas filas de decolagem e inteiros ímpares sucessivos para a ID dos aviões chegando nas filas de aterrissagem. A cada unidade de tempo, assuma que os aviões entram nas filas antes que aterrissagem ou decolagem ocorram. Tente projetar um algoritmo que não permita o crescimento excessivo das filas de aterrissagem ou decolagem. Coloque os aviões sempre no final das filas, que não devem ser reordenadas. A saída do programa deverá indicar o que ocorre a cada unidade de tempo. Periodicamente imprima: (a) o conteúdo de cada fila. (b) o tempo médio de espera para decolagem. (c) o tempo médio de espera para terrissagem. (d) o número de aterrissagem sem reserva de combustível Os itens b e c devem ser calculados para os aviões que já decolaram ou pousaram, respectivamente. A saída do programa deve ser autoexplicativa e fácil de entender. A entrada poderia ser criada manualmente, mas melhor é utilizar um gerador de números aleatórios. Para cada unidade de tempo, a entrada deve ter as seguintes informações:

(a) número de aviões (zero a três) chegando nas filas de aterrissagem com respectivas reservas de combustível (de 1 a 20 em unidades de tempo). (b) número de aviões (zero a três) chegando nas filas de decolagem. Page

16 respostas

Posta aí o restante do PDF pra a galera dá uma olhada.

olá André, postei i restante! Obrigado. Estou com muitas dificuldades em ED.

Díficil hein cara. Quem te passou esse projeto? É para fazer com paradigma procedural, funcional ou orientado a objetos? Tem que usar banco de dados ou guardar toda a informação em vetor?

Eu curso Sistemas de Informação. Esse projeto foi passado pelo professor da disciplina, tenho até o final do mês para entregar-lo, mas está muito complicado, não domino essa parte de ED. Não é necessário salvar em BD. Tem que ser com alocações dinâmicas usando filas.

Pode fazer em paradigma procedural?

Não entendi bem essa parte "Suponha que o aeroporto possui três pistas numeradas como 1, 2 e 3. Existem quatro filas de espera para aterrissagem, duas para cada uma das pistas 1 e"

São 3 pistas, mas se são duas para cada uma das pistas então não deveria ter 6 filas?

Vamos dividir o projeto em várias partes. Primeira parte -> infraestrutura: criar um código onde contenha os aviões, pistas e filas. E eles não se mexam, só estejam lá.

Segunda parte -> movimento: criar um código onde os aviões podem se mexer nas pistas e filas.

Terceira parte -> regras do negócio: criar um código para o comportamento esperado do aeroporto.

André não entendi muito a parte do procedural, mas o jeito de se fazer seria com um código semelhantes a este:

typedef struct TipoItem{
    int Chave;
    /* outros componentes */
} TipoItem;

typedef struct celula{
    TipoItem item;
    struct celula* prox;
} TipoCelula;

typedef struct TipoFila{
    TipoCelula* frente;
    TipoCelula* tras;
} TipoFila;

void FFVazia(TipoFila *Fila){
    Fila->frente = (TipoCelula*) malloc(sizeof(TipoCelula));
    Fila->tras = Fila->frente;
    Fila->frente->prox = NULL;
}

int Vazia(TipoFila Fila){
    return (Fila.frente == Fila.tras);
}

void Enfileirar(TipoItem x, TipoFila *Fila){
    Fila->tras->prox = (TipoCelula*) malloc(sizeof(TipoCelula));
    Fila->tras = Fila->tras->prox;
    Fila->tras->item = x;
    Fila->tras->prox = NULL;
}

void Desenfileirar(TipoFila *Fila, TipoItem *Item){
    TipoCelula* q;
    if (Vazia(*Fila)){
        printf(">>>>> Erro: Fila esta vazia! <<<<<\n");
        return;
    }
    q = Fila->frente;
    Fila->frente = Fila->frente->prox;
    *Item = Fila->frente->item;
    free(q);

Sim, Serão 6 FilasF1 E F2 ATERRISSAGEM - PISTA1 F3 E F4 ATERRISSAGEM - PISTA1 F5 DECOLAGEM - PISTA1 F6 DECOLAGEM - PISTA2

CERTO, VAMOS DIVIDIR! você que eu envie o arquivo no email?

vamos usar aqui mesmo. porque eu ganho xp ao usar o fórum. mas saiba que esse fórum é visualizado pelo google. e professores espertos costumam pesquisar o código pelo google para ver se não houve cópia.

Tava pensando em começar com algo do tipo:


#include <stdio.h>

int main()
{
   int pista1 [8][2];
int pista2 [8][2];
int pista3 [8][2];

int fila1 [8][2];
int fila2 [8][2];
int fila3 [8][2];
int fila4 [8][2];

int aviao0aterrisando[2];
int aviao1aterrisando[2];
int aviao2aterrisando[2];
int aviao3aterrisando[2];

int aviao0decolando[2];
int aviao1decolando[2];
int aviao2decolando[2];
int aviao3decolando[2];

int id;
int tempo;

id=2;
tempo=100;

aviao0aterrisando[0]=id;
aviao0aterrisando[1]=tempo;

printf ("aviao0aterrisando id = %d\n",aviao0aterrisando[0]);
printf ("aviao0aterrisando tempo = %d\n",aviao0aterrisando[1]);



    return 0;
}

Esse paradigma que seu professor usa é funcional.

A parte 1 do projeto é quase isso, talvez precisamos fazer uns ajustes nela.

Para a parte 2 começa fazendo uma função para avião entrar na fila: ela recebe um avião como parametro, e uma fila como parametro e adciona na fila esse avião.

Faz essa função.

OK, André Obrigado! vou dar uma olhada aqui. Quanto ao professor ver o código aqui não tem problema! Vou tentar implementar a função

André, mas onde estra a alocação dinâmica?

Deixa isso pro final. Depois a gente sai limpando tudo.