Ir ao conteúdo
  • Cadastre-se

C Função para calcular probalidade


batgirl123

Posts recomendados

Faça programa para mostrar 1) o número de aviões que irá decolar de um determinado portão de embarque por dia e 2) a probabilidade de atraso de voos naquele dia. O número de aviões que irá decolar no dia é de conhecimento do usuário. As regras do aeroporto são as seguintes:

O aeroporto possui três portões de embarque (A, B e C);

Se o avião precisar de combustível ou manutenção ele deve decolar do portão A (use o valor 1 se precisar e 0 caso não precisar). Caso contrário, se o número de passageiros for maior do que 100 ele deve decolar do portão B senão ele irá decolar do portão C;

A probabilidade de atraso de voos pode ser calculada de acordo com a razão entre o número de aviões que irá decolar do portão A e o dobro do número de aviões que irá decolar no dia. Contudo, caso a quantidade de aviões que irá decolar do portão A for maior do que a soma dos aviões que irão decolar dos portões B e C, a probabilidade de atraso de voos naquele dia irá aumentar em 20%.

IMPORTANTE 1: a verificação do portão de embarque (A, B e C) deve ser feita para cada avião que irá decolar. Ou seja, uma estrutura de repetição deve ser criada para verificar cada um dos aviões que irá decolar. IMPORTANTE 2: a entrada inicial do programa deve ser a quantidade de aviões, dentro do laço organize as próximas entradas na seguinte ordem: número de passageiros, combustível e manutenção. IMPORTANTE 3: tente usar o maior número possível de funções para a criação do programa.

 

Segue o código abaixo, nao estou conseguindo desenvolver o programa, talvez seja a interpretação e também não consigo criar uma função para calcular a probabilidade

 

#include <stdio.h>

#include <stdlib.h>

#include <math.h>



float calculaProbabilidade(int numAvioes){

return numAvioes/numAvioes * 2;

}



int main() {

int portaoA, portaoB, portaoC, i, numAvioes;

int combustivel, manutencao, numPassageiros;

int contA=0, contB=0,contC=0;



//printf("Informe o numero de avioes para embarque \n");

scanf("%d", &numAvioes);



for(i=1; i<=numAvioes; i++){

//printf("Informe o numero de avioes por dia \n");

scanf("%d", &numAvioes);



if(combustivel == 1 || manutencao == 1){

contA = contA + 1;

}

else{

if(numPassageiros>100)

contB = contB + 1;

}

else{

contC= contC + 1;

}

}



return 0;

}

 

@devaiir1010 ou outro alguém poderia me ajudar neste?

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

Vou tentar de explicar uma maneira trivial de resolver...

  • Para cada avião você precisa informar se precisa de combustível (1 se precisa) e o total de passageiros, que pode ou não ser maior que 100. Então não precisa na verdade saber quantos aviões são
  • a probabilidade de atraso está bem descrita aqui:
     
    3 horas atrás, batgirl123 disse:

    a razão entre o número de aviões que irá decolar do portão A e o dobro do número de aviões que irá decolar no dia

    • Não é nada real, não é um modelo, nada. Só uma razão. No popular uma simples divisão: X/Y. Você sabe quantos aviões são, é o primeiro dado que RECEBE no programa: T aviões, digamos. Esse é a metade do denominador Y.
    • as regras vão dizer quantos dos aviões vão decolar de cada portão. Então é só somar... B vão usar o portão B e C vão usar o portão C, T aviões no total então não vejo problema em calcular a probabilidade: (Y - B - C)/2*T como está escrito lá.
    • tem uma ressalva:
       
      3 horas atrás, batgirl123 disse:

      caso a quantidade de aviões que irá decolar do portão A for maior do que a soma dos aviões que irão decolar dos portões B e C, a probabilidade de atraso de voos naquele dia irá aumentar em 20%

      Se por exemplo todos os aviões forem usar o portão A então a conta vai dar T/2T * 1.2 ou seja 0,6, por exemplo. Basta que todos os aviões precisem de combustível... 

De volta ao programa

 

Seu programa parece muito complicado sem razão.

 

Escreva em torno dos dados. Sempre

 

Exemplo:

 

É muito mais fácil ler de um arquivo. Não perca seu tempo com isso de mensagens e leitura do teclado. Só vai perder tempo.

O enunciado nada diz sobre isso e nenhuma pessoa séria iria ler dezenas de valores do teclado de bobeira.

 

Veja esse arquivo:
 

12
1 100 portao A: vai abastecer
0 50  portao C: nao vai abastecer, menos de 100 passageiros
0 150  portao B: nao vai abastecer, mais de 100 passageiros
1 100 portao A: vai abastecer
0 50  portao C: nao vai abastecer, menos de 100 passageiros
0 150  portao B: nao vai abastecer, mais de 100 passageiros
1 100 portao A: vai abastecer
0 50  portao C: nao vai abastecer, menos de 100 passageiros
0 150  portao B: nao vai abastecer, mais de 100 passageiros
1 100 portao A: vai abastecer
0 50  portao C: nao vai abastecer, menos de 100 passageiros
0 150  portao B: nao vai abastecer, mais de 100 passageiros
fim

 

Pode usar para testar: 12 aviões, 4 em cada pista eu acho. Não calculei mas é trivial porque copiei e colei até dar 12. É só um loop. Bem simples: le o total de aviões depois lê uma linha para cada avião. Em cada linha lê DOIS números. Não parece difícil. Os números vão determinar a pista. E você soma em um contador para cada pista. Ao final dos 12

  • você mostra quantos caras usaram cada pista
  • faz a conta X/Y para a probabilidade de atraso
  • verifica se vai ter o aumento de 20%, no popular multiplicar por 1,2.

É só isso.
 

int A = 0;
int B = 0;
int C = 0;

int N = 0; // total de avioes
int abastece = 0; // 1 se vai abastecer
int lotacao = 0; // total de passageiros

FILE* entrada = fopen("naves.txt","r");

 

Não precisa de mais do que essa variáveis eu acho. A média pode ser calculada só na hora de mostrar...

 

Edita no IDE um arquivo com esse nome por exemplo, "naves.txt" e copia o conteúdo que te mostrei acima. Lê o valor de N, Lê as N linhas. Faz a única conta, calcula o possível acréscimo e mostra os totais...

 

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

@arfneto Irei tentar! Agradeço pela explicação

6 minutos atrás, batgirl123 disse:

@arfneto Irei tentar! Agradeço pela explicação

Apenas mais uma pergunta, eu devo criar um estrutura de repetição correto? E eu teria que fazer um estrutura de repetição para cada um dos portões?

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

3 horas atrás, batgirl123 disse:

Apenas mais uma pergunta, eu devo criar um estrutura de repetição correto? E eu teria que fazer um estrutura de repetição para cada um dos portões?

 

E porque? Os portões não se repetem. Apenas os aviões tem 3 possibilidades A/B/C nada mais. Apenas verifique cada linha defina o portão acumule os valores. Como eu disse

  • Curtir 1
  • Obrigado 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...