Ir ao conteúdo

C Promoção de hotel com diária proporcional e normal


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Boa tarde, estou fazendo essa questão:

Citação

1. Um hotel com 75 apartamentos deseja fazer uma promoção especial de final de semana, concedendo um desconto de 25% na diária. Com isso, espera-se aumentar sua taxa de ocupação de 50 para 80%. Sendo dado o valor normal da diária, calcule e imprima:

a. O valor da diária proporcional;

b. O valor total arrecadado com 80% de ocupação e diária proporcional;

c. O valor total arrecadado com 50% de ocupação e diária normal;

d. 2. A diferença entre esses dois valores. 

E fiz da seguinte forma:

#include <stdio.h>

int main() {
	double x;
	printf("Diaria: ");
	scanf("%lf", &x);
	printf("\nD. Promocional: %f", x - (0.25 * x));
	double xDP = (75.0 * 0.8) * (x - (0.25 * x)), xDN = (75.0 * 0.5) * x;
	printf("\nDProporcial: %f, DNormal: %f", xDP, xDN);
	printf("\nDif.: %f", xDP - xDN);
	return 0;
}

Mas me disseram que não está totalmente correta e sinceramente não sei o que estou errando, alguém pode me ajudar a identificar o erro? Obrigado.

  • Obrigado 1
  • Solução
Postado

@lsnkesp    o resultado está certo , e então pode ser que na diferença  apareça resultado negativo ,  e usar a função "fabs"  nesses casos 

#include <stdio.h>
#include <float.h>
int main() 
{
	double diaria_normal =  0;
	int    qtd_apartam   = 75;
	printf("Diaria: "                                                    );
	scanf("%lf", &                                          diaria_normal);
	double    diaria_proporcional = diaria_normal - 0.25 *  diaria_normal ;
	double    tot_80_porcento = (qtd_apartam * 0.8) * diaria_proporcional , 
	          tot_50_porcento = (qtd_apartam * 0.5) * diaria_normal       ;
	printf(" \nDiaria Proporcional -----------------------------: %9.2f"  , 
	                               diaria_normal - 0.25 * diaria_normal  );
	printf("\ntotal com 80%% de ocupaCAo e diAria proporcional -: %9.2f"  ,
	                                                     tot_80_porcento );
	printf("\ntotal com 50%% de ocupaCAo e diAria normal -------: %9.2f"  , 
	                                                    tot_50_porcento  );
	printf(" \nDiferenCa ---------------------------------------: %9.2f"  , 
	                          fabs( tot_80_porcento - tot_50_porcento )  );
	printf("\n\n\n");
	return 0;
}

 

  • Obrigado 1
Postado
9 horas atrás, devair1010 disse:
double    diaria_proporcional = diaria_normal - 0.25 *  diaria_normal ;
	

 

Conside .75...

 

	printf(" \nDiaria Proporcional -----------------------------: %9.2f"  , 
	                               diaria_normal - 0.25 * diaria_normal  );
	printf("\ntotal com 80%% de ocupaCAo e diAria proporcional -: %9.2f"  ,
	                                                     tot_80_porcento );
	printf("\ntotal com 50%% de ocupaCAo e diAria normal -------: %9.2f"  , 
	                                                    tot_50_porcento  );
	printf(" \nDiferenCa ---------------------------------------: %9.2f"  , 
	                          fabs( tot_80_porcento - tot_50_porcento )  );
	printf("\n\n\n");

 

Considere 1 printf de 5 linhas. Mais fácil de ler e dezenas de vezes mais rápido.

Compare:

 

    printf(
        "\n\
Diaria Proporcional  -----------------------------: %9.2f\n\
total com 80%% de ocupaCAo e diAria proporcional -: %9.2f\n\
total com 50%% de ocupaCAo e diAria normal -------: %9.2f\n\
DiferenCa  ---------------------------------------: %9.2f\n\
\n\
\n",
    .75 * diaria_normal,
    tot_80_porcento,
    tot_50_porcento,
    fabs(tot_80_porcento - tot_50_porcento)
    );

 

TESTE o retorno de scanf...

  • Obrigado 2
Postado
2 horas atrás, lsnkesp disse:

Só não entendi porque considerar ".75"

 

🤔

 

19 horas atrás, devair1010 disse:
diaria_proporcional = diaria_normal - 0.25 *  diaria_normal ;

 

Porque se sabe que 1x - 0.25x = .75x. E faz pouco sentido calcular o conhecido 

2 horas atrás, lsnkesp disse:

Não sabia dessa função

 

De todo modo o valor absoluto é só isso: o valor absoluto. Bastaria um if.

  • Curtir 1
  • Obrigado 1

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