Ir ao conteúdo
  • Cadastre-se

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


iLoveProg
Ir à solução Resolvido por Pedro Math.pi,

Posts recomendados

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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

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

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

É 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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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