Ir ao conteúdo
  • Cadastre-se
iLoveProg

RESOLVIDO (struct) consumo de eletrodomésticos. erro no consumo total.

Recommended Posts

Faça um programa que controla o consumo de energia dos eletrodomésticos de uma casa e:
-Crie e leira 5 eletrodomésticos que contém nome (máximo 15 letras), potencia (real, em kW) e tempo ativo por dia (real, em horas).
-Leia um tempo t (em dias), calcule e mostre o consumo total na casa e o consumo relativo de cada eletrodoméstico (consumo/consumo total) nesse período de tempo. Apresente este último dado em porcentagem.

Eu fiz o código todo certo, mas eu não consigo fazer o consumo total e nem a porcentagem de consumo por eletrodoméstico. Vejam o código, eu estou indicando onde eu não consigo.

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

typedef struct{
   char nome[15];
   float potencia;
   int tempo;
   int tdias;
   
   
} Consumo;

int main(){
   int quantidade=2;
   Consumo eletrodomesticos[quantidade];
   int i=0;
   float consumototal;
   float consumo;
   float porcentagem;
   
   for(i=0;i<quantidade;i++){
      printf("\nInsira o nome, potencia(em kW), tempo ativo por dia(em hrs) e  quantidade de dias em que esta ligado:\n\n");
      scanf("%s %f %d %d", &eletrodomesticos[i].nome, &eletrodomesticos[i].potencia, &eletrodomesticos[i].tempo,&eletrodomesticos[i].tdias);
   }
   for(i=0;i<quantidade;i++){
      printf("ELETRODOMESTICO %i\n\nNOME: %s\nPOTENCIA: %f\nTEMPO ATIVO: %d\nDIAS LIGADO: %d\n\n", i+1, eletrodomesticos[i].nome, eletrodomesticos[i].potencia, eletrodomesticos[i].tempo, eletrodomesticos[i].tdias);
   }
   for(i=0;i<quantidade;i++){
      
      consumo=eletrodomesticos[i].potencia*eletrodomesticos[i].tempo*eletrodomesticos[i].tdias;
   
      printf("Consumo %d= %f\n", i+1, consumo);

   }   
   for(i=0;i<quantidade;i++){
      consumototal= eletrodomesticos[i+1].potencia*eletrodomesticos[i+1].tempo*eletrodomesticos[i+1].tdias;
         
   } 
   printf("Consumo total=%f\n\n", consumototal); //NAO CONSIGO FAZER O CONSUMO TOTAL
   
   for(i=0;i<quantidade;i++){
    porcentagem=consumo/consumototal;
    printf("Porcentagem (%d): %f", i+1, porcentagem); //E NEM A PORCENTAGEM DE CONSUMO
   }
   
   return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ninguém sabe me responder? Creio que do jeito que eu montei o struct, n da pra calcular o o consumo total, consequentemente, a porcentagem de consumo de cada eletrodoméstico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@iLoveProg

• O consumo total é a soma dos consumos 1 e 2. Trabalhe com ela dentro do laço de repetição que você usa pra calcular o consumo de cada eletrodoméstico. Só precisa incrementar com o resultado da variável consumo:

consumototal += consumo

 

Com isso você evita criar outro laço de repetição e somente mostra o valor da variável.

 

• Pra trabalhar a porcentagem você precisará do consumo de cada aparelho novamente. Então ou você cria uma variável na struct para armazenar esse valor (não sei se a normalização aprovaria) ou você repete o cálculo do consumo que você fez na primeira vez e usa o resultado do consumo na divisão com o consumo total. 

Obs: O resultado é pedido em porcentagem. Então o resultado deve ser multiplicado por 100.

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct{
	char nome[15];
	float potencia;
	int tempo;
	int tdias;
	
	
} Consumo;

int main(){
	int quantidade=2;
	Consumo eletrodomesticos[quantidade];
	int i=0;
	float consumototal;
	float consumo;
	float porcentagem;
	
	for(i=0;i<quantidade;i++){
		printf("\nInsira o nome, potencia(em kW), tempo ativo por dia(em hrs) e  quantidade de dias em que esta ligado:\n\n");
		scanf("%s %f %d %d", &eletrodomesticos[i].nome, &eletrodomesticos[i].potencia, &eletrodomesticos[i].tempo,&eletrodomesticos[i].tdias);
	}
	for(i=0;i<quantidade;i++){
		printf("ELETRODOMESTICO %i\n\nNOME: %s\nPOTENCIA: %f\nTEMPO ATIVO: %d\nDIAS LIGADO: %d\n\n", i+1, eletrodomesticos[i].nome, eletrodomesticos[i].potencia, eletrodomesticos[i].tempo, eletrodomesticos[i].tdias);
	}
	for(i=0;i<quantidade;i++){
		
		consumo=eletrodomesticos[i].potencia*eletrodomesticos[i].tempo*eletrodomesticos[i].tdias;
		consumototal+=consumo;
		printf("Consumo %d= %f\n", i+1, consumo);

	}	 
	printf("Consumo total=%f\n\n", consumototal);
	
	for(i=0;i<quantidade;i++){
	 porcentagem=consumo/consumototal;
	 
	}
	printf("Porcentagem (1): %.2f porcento\n", (porcentagem*100));
	printf("Porcentagem (2): %.2f porcento\n", (1-porcentagem)*100);
	return 0;
}

Consegui. valeu ae maninho. Segue o código. Nesse caso a porcentagem so serve para dois aparelhos. Ainda to fazendo algumas modificações.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

É por aí mesmo.

Use o mesmo laço de repetição do cálculo do consumo.

 

for(i=0;i<quantidade;i++){
		
		consumo=eletrodomesticos[i].potencia*eletrodomesticos[i].tempo*eletrodomesticos[i].tdias;
        // aqui você calcula porcentagem = consumo *100 / consumototal
        // mostre porcentagem

	}

 

  • Curtir 1

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

×