Ir ao conteúdo
  • Cadastre-se
Philipe de Souza

Estrutura de dados - fila (inclusão de elemento)

Recommended Posts

Pessoal, boa noite a todos.

 

Estou precisando fazer um sistema de controle de tráfego aéreo, não vou entrar muito em detalhes sobre o programa pois a especificação é muito extensa.

 

Toda vez que o programa é executado um número x (aleatório) de aeronaves de aproximam da pista para aterrissar e tentar entrar em um finger vago (vaga de aterrissagem), preciso que para cada aeronave que se preparar para aterrissar seja gerado um código aleatório com o padrão LL2222 (dois caracteres e quatro números inteiros) e elas irão entrar em uma das filas de um vetor de filas chamado "pista" (onde 0 ≤ P ≤ 5) e a aeronave deve SEMPRE entrar na fila mais vazia do vetor. Estou com dificuldades para incluir o código aleatório gerado a uma variável e então, direciona-lo para a fila que estiver mais vazia. Por favor preciso de  dicas ou até mesmo orientações básicas são bem vindas, estou com muita dificuldade em inserir componentes em um vetor de filas. Espero ter sido o claro possível e agradeço desde já. =)

 

Segue abaixo o código:

Código para criar o vetor de filas

void vetorFilas(Fila *filas[], int tam)
{
    int i;
    for(i = 0 ; i < tam ; i++)
    {
        filas[i] = novaFila();
        filas[i] = push(filas[i], i);
    }
}

 

Código para gerar o número aleatório seguindo o padrão LL2222

void geraNumero(int i)
{
    int n;
    switch(i)
    {
    case 0:
        n = rand()%26+97;
        printf("%c", n);
        break;
    case 1:
        n = rand()%26+97;
        printf("%c", n);
        break;
    default:
        n = rand()%10;
        printf("%d", n);
        break;
    }

 }

 

Main do programa que eu fiz até o momento


int main()
{
    int p,f,n,mD,MD,N,mA,MA,i;


    printf("CONFIGURACOES DO SISTEMA\n");

    printf("Informe o numero de pistas: ");
    scanf("%d", &p);

//Número de pistas de aterrisagens/decolagens (P), onde P é um número inteiro e 0 ≤ P ≤ 5. As pistas são numeradas de 0 a P-1;
    while(p<=0||p>5){
        printf(("ERRO: Insira um valor entre 0 e 5: "));
        scanf("%d", &p);
    }

    printf("Informe o numero de fingers: ");
    scanf("%d", &f);
//Número de fingers (F), onde F é um número inteiro e 0 ≤ F ≤ 10. Os fingers são numerados. de 0 a F-1;
    while(f<=0||f>10){
        printf("ERRO: Insira um valor entre 0 e 10: ");
        scanf("%d", &f);
    }

    printf("Informe a quantidade de aeronaves estacionadas: ");
    scanf("%d", &n);

    while(n<0||n>f){
        printf("ERRO: Insira um valor entre 0 e %d: ",f);
        scanf("%d", &n);
    }

    printf("Informe a quantidade minima de aeronaves que decolam: ");
    scanf("%d", &mD);

    while(mD<0||mD>f){
        printf("ERRO: Insira um valor entre 0 e %d: ",f);
        scanf("%d", &mD);
    }

    printf("Informe a quantidade maxima de aeronaves que decolam: ");
    scanf("%d", &MD);

    while(MD<mD||MD>f){
        printf(("ERRO: Insira um valor entre %d e %d",mD,f));
        scanf("%d", &MD);
    }

    printf("Informe a quantidade minima de aeronaves que aterrissam: ");
    scanf("%d", &mA);

    while(mA<0){
        printf("ERRO: Insira um valor entre %d e ∞", mA);
        scanf("%d", &mA);
    }

    printf("Informe a quantidade maxima de aeronaves que aterrissam: ");
    scanf("%d", &MA);

    while(MA<mA){
        printf("ERRO: Insira um valor entre %d e ∞", mA);
        scanf("%d", &MA);
    }

    printf("\n\n");
    printf("APROXIMACAO DE AERONAVES\n");

    //GERA DOIS NUMEROS ALEATORIOS
    srand((unsigned)time(NULL));

        for(;;){
        N = rand()%MA;

        //MOSTRAR OS DOIS NUMEROS ALEATORIOS DAS AERONAVES SE APROXIMANDO
        if(N<MA && N>=mA)
        {
            printf("Aproximaram %d novas aeronaves\n",N);
            break;
        }
        }

    Fila *filas[N];

    //chama as filas e definem o tamanho do vetor proporcional a quantidade de pistas

    vetorFilas(filas, N);

    int qtde=6;
    printf("\n");
    printf("INSERCAO DAS AERONAVES NAS FILAS DE ATERRISSAGEM\n");


    printf("Numero gerado: ");
    srand( (unsigned)time(NULL) );

    for(i=0; i<qtde; i++)
    {
        geraNumero(i);
    }

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

 

Editado por Philipe de Souza

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×