Ir ao conteúdo
  • Cadastre-se

C Alguém consegue me ajudar com esse Programa ?


fernandoRomes

Posts recomendados

Eu precisava fazer o seguinte programa, porém estou com muita dificuldade de atender a todos os requisitos necessários, segue a questão:

 

Construa um programa que simule o gerenciamento da fila de aviões que aguardam para decolar em um aeroporto.

Devem ser implementadas as seguintes funções:

int InserirAviaoFila(char *voo);

int MostrarFila();

int AutorizarDecolagem();

O voo é uma string, como por exemplo "TP6689".

A função MostrarFila() deve verificar se há algum avião na fila.  Se sim, deve mostrar o conteúdo da fila e retornar zero para o main, se não, deve informar que a fila está vazia e retornar -1.

A função AutorizarDecolagem() deve verificar se há algum avião na fila. Se sim, deve informar (mostrar na tela) qual voo está autorizado a decolar e deve imprimir essa informação em um arquivo de texto, juntamente com a data e hora do sistema. Nesse momento o avião sai da fila. O arquivo deve ser aberto no modo anexar, ou seja, informações previamente existentes devem ser preservadas. Nesse caso é retornado zero para o main. Se a fila estiver vazia, a função deve mostrar isso na tela e retornar -1 para o main.

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

<<

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10


int fila[MAX];
int inicio = 0;
int fim = 0;

int inseriraviaofila (char* voo)
{

    if (fim == MAX)
    {
        printf("armazenar: Fila cheia\n");
        return -1;
    }
    fila[fim] = voo;
    fim++;
    return 0;
}

int autorizardecolagem (int *re)
{
    if (inicio == fim)
    {
        printf("remover: Fila vazia.\n");
        return -1;
    }

    *re = fila[inicio];
    inicio++;
    return 0;
}

int mostrarfila()
{
   int i;
   if(inicio == fim)
   {
       printf("imprimir: Fila vazia\n");
       return -1;
   }
   else
    {
        printf("\nimprimir: Fila:\n\n");
        for(i=inicio; i<fim; i++)
            printf("%s ", fila[i]);

        printf("\n");
    }
    return 0;
}

int main() {
   char dado[10], rem=0, ret=0;
   int opcao;

    printf("Selecione uma opcao:\nAdicionar aviao a fila - 1\nAutorizar decolagem - 2\nLista de avioes - 3\n ");
    scanf("%d",opcao);
    if(opcao==1){
        printf("Qual e a indicação do voo?\n");
        scanf("%s",dado);
        inseriraviaofila(dado);
    }

    else if(opcao==2){
        ret = autorizardecolagem(&rem);


        time_t rawtime;

        time (&rawtime);


        if(ret == 0){
        printf("\nO aviao %s decolou as %s\n", rem, ctime (&rawtime));

    }}

    else if(opcao==3){
        mostrarfila();
    }

}

>>

 

Segue o programa que desenvolvi até o momento, porém não estou conseguindo fazer funcionar as opções do "menu"

 

Link para o comentário
Compartilhar em outros sites

@fernandoRomes Você está fazendo a fila de voos errada, você teria que pegar os nomes dos voos como char e não int.

55 minutos atrás, fernandoRomes disse:

int fila[MAX];

Fora que você deveria fazer uma matriz de char dessa forma

char fila[MAX][TAMANHO_DO_NOME_DO_VOO];

 

Exemplo de como deveria ser inserido o voo.

Spoiler

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Constantes */
#define Q_VOOS_MAX 10
#define T_NOME_VOOS 30


/* Variaveis */
char fila_voos[Q_VOOS_MAX][T_NOME_VOOS];
int quantidade_voos = 0;


/* Funções */
int
insereAviaoFila(char *voo);

int
mostraFila(void);

int main(void)
{
    /* Mostra fila vazia */
    mostraFila();
    printf("\nPressione enter para continuar.\n");
    getchar();

    /* Coloca os aviões na fila */
    insereAviaoFila("TP5743");
    insereAviaoFila("SF7443");
    insereAviaoFila("DYR5483");
    mostraFila();       /* Mostra a fila */

    printf("\nPressione enter para continuar.\n");
    getchar();      /* Pausa o programa */
    return(0);
}

int
insereAviaoFila(char *voo)
{
    if (quantidade_voos < Q_VOOS_MAX) {
        /* Copia o nome do avião */
        strcpy(fila_voos[quantidade_voos], voo);
        quantidade_voos++;      /* Incrementa a quantidade de voos agendados */
        return(0);
    }
    return(-1);
}

int
mostraFila(void)
{
    /* Mostra os voos agendados */
    if (quantidade_voos > 0) {
        int cont;
        printf("\nLista de voos\n");
        for (cont = 0; cont < quantidade_voos; cont++) {
            printf("\n%i:%s", cont+1, fila_voos[cont]);
        }
        return(0);
    }
    printf("\nNao ha voos agendados!\n");
    return(-1);
}

 

 

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

38 minutos atrás, fernandoRomes disse:

Segue o programa que desenvolvi até o momento, porém não estou conseguindo fazer funcionar as opções do "menu"

 

As opções são exatamente o objetivo do programa. O enunciado é bem liberal. Qual a vantagem de colocar um menu no programa? De nada serve. Só vai dar um trabalho enorme para testar, a toa.

 

Eis a realidade: 

  • entra na fila
  • sai da fila
  • mostra fila

entrar na fila é claro algo como está escrito lá: 

 

Em 20/11/2020 às 15:41, fernandoRomes disse:

O voo é uma string, como por exemplo "TP6689".

 

Sair da fila não tem parâmetro: apenas sai o cara que está na frente, se tiver algum

 

mostrar a fila dispensa comentários: mostra a fila do primeiro ao último. Se houver algum.

 

Você é dono do resto.O enunciado nada pede. Então use o próprio IDE ou o bloco de notas e resolva:

 

 

Saida

 

Só precisa de um arquivo.  a cada autorização de saída grava uma única linha. Como pode ser?

 

Exemplo trivial, saida.txt:
 

Fila com 08 aeronaves:

#    Entrada      Voo

01  31/12/202    TP6689
02  31/12/202    TP6689
03  31/12/202    TP6689
04  31/12/202    TP6689
05  31/12/202    TP6689
06  31/12/202    TP6689
07  31/12/202    TP6689
08  31/12/202    TP6689

 

A cada saída grava uma única linha.

 

E a entrada? 

 

esqueça o menu. Nada acrescenta.

 

use um arquivo. Mais expressivo e muito mais fácil de testar

 

Exemplo de estrutura: 

 

Um comando por linha. Uma coisa  já está bem óbvia: coisas como  TP3456 indicam um voo. O resto pode ser qualquer coisa, o programa é seu e o enunciado nada diz:

 

O trivial então:

  • I para inserir
  • M para mostrar a fila
  • A para autorizar uma decolagem
  • ignore qualquer linha que não comece por essas letras

Um arquivo de teste:
 

Teste.txt
M
I TP6698
I AB4545
I XX3333
M
A
A
A
M

 

No inicio abra o arquivo e mostre tudo na tela. Assim já vai ter onde conferir o resultado. Feche o arquivo, abra de novo, processe linha a linha e é só isso

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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