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

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

Posts recomendados

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;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Este tópico está parado há muito tempo. Certifique-se que a sua mensagem tem a ver com o tema sendo discutido. Obrigado.

Junte-se à conversa

Você pode postar agora e cadastrar-se depois. Se você tem uma conta, faça o login para postar.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restore formatting

  Só é possível ter até 75 emoticons.

×   O link foi automaticamente convertido para mostrar o conteúdo.   Clique aqui para mostrá-lo como link comum

×   Seu texto anterior foi restaurado.   Limpar o editor

×   You cannot paste images directly. Upload or insert images from URL.






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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!