Ir ao conteúdo

Posts recomendados

Postado

Exercício 2:   
Para cada um dos consumidores de energia elétrica de uma cidade é informado o número da conta e o total de KW consumido no mês. Sabendo-se que o custo do KW é de R$ 1,75, fazer um algoritmo para: 

  • Armazenar e listar o número da conta, o total de KW consumidos e o valor a pagar de cada consumir cadastrado;
  • Listar o número da conta, o total de KW consumidos e o valor a pagar do consumidor que mais gastou e o que menos gastou;
  • Mostrar a média de consumo da cidade;
  • Mostrar o número de consumidores que ultrapassaram o consumo de 170 KW; 

Armazene as informações em estruturas de vetores e/ou matrizes. Na tela, deve existir um MENU que pergunta ao usuário se ele deseja cadastrar um novo consumidor ou listar alguma informação (maior, menor, média, etc.).

 

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

int NConta[30];//Numero de conta
int TotalKW;// Valor Total de KW
int VPConsumidor;//Valor a Pagar de cada consumidor
int VGMais, VGMenos;
int MediaCons;
int consUltra;// Consulmo que ultrapassa 170
float media;////Media de consulmo
int Valorpago;
int subtracao;

int main()
{
	printf("Digite o numero da conta A:\n");
	scanf_s("%d", &NConta);

	printf("Digite o numero total de consumo KW:\n");
	scanf_s("%d", &TotalKW);

	if (TotalKW)
	{// soma do valor a pagar de cada consumidor
		Valorpago = 1.75 * TotalKW;
	}

	void cadastro();
	{
		int i;
		for (i = 0; i <= Valorpago; i++)
		{
			if (Valorpago[i] > Valorpago[VGMais]) {
				VGMais = i;
			}
			if (Valorpago[i] < Valorpago[VGMenos]) {
				VGMenos = i;
			}
		}
	}

	printf("O Total da conta = %d\n", Valorpago);
	printf("Maior Valor: %s com a Valorpago %d.", Valorpago[VGMais]);
	printf("Maior Valor: %s com a Valorpago %d.", Valorpago[VGMenos]);

	system("pause");
	return 0;
}

Esta dando alguns erros e queria ver onde posso arrumar, e ali no void de cadastro onde esta os dois if seria para ver qual é o valor gasto maior e menor so que e ali que o código nao esta lendo como faço para ele ler? como fazer a media dos 2 valores? como fazer para por como vetor? 

Postado

Olá@Graziele Demetrio edite o post, por favor, apague o código e copie novamente e dessa vez use o CODETAG esse botão [<>] de sua caixa de mensagens. Esse procedimento melhor a apresentação do seu código. Obrigado.

 
 

@Graziele Demetrio Apesar de ter editado, ainda continuo trazendo caracteres estranhos.

Tenha certeza que apagou do post antigo e copiou a partir do IDE no PC. Esses caracteres espaços ou estranhos ocorrem quando o código é copiado diretamente do post, isso dificulta muito nossa ajuda. Recomendo sempre usar o code tag <> no código colado a partir de uma  cópia (Ctrl + C) da IDE.  

Postado

Agora copie sem problema.

 

2 minutos atrás, Graziele Demetrio disse:

@MB_ agora editei novamente e copiei  direto do visual studio

ótimo, vou estudar seu código e tentar uma ou mais resposta para seu questionamento.

adicionado 2 minutos depois

Em 1 hora eu retorno!

  • Haha 1
Postado

@Graziele Demetrio Então notei 2 equívocos e não são sérios, são faltas comuns de sintaxe que todo mundo comete.

São eles:

  1. Você implementou uma função cadastro; legal, porém dentro de outra; não legal isso rompe com principal fundamental do paradigma de programação procedural, mesmo que os eventos seja sequencias uma função não é implementada dentro de outra faz anos, pode até ser declarada e sempre chamada mais jamais implementada porque não faz sentido. Refiro-me a função cadastrar que é interna a função main. Está como exemplo abaixo
    main(void)
    {
    	void cadastro(void)
    	{
    		...
    	}
    	return 0;
    }

     

  2. Ainda na função cadastro void cadastro(); a variável global Valorpago foi declarada como sendo simples, contudo a função acessa por índices como se fosse um objeto, ou melhor, um vetor que na realidade não é. O mesmo equívoco dentro da função main. 
  3. Para fechar a função cadastro void cadastro(); que pelo identificado (seu nome dentro do algoritmo) leva a entender que será algo para preencher informações; as informações  do exame
    2 horas atrás, Graziele Demetrio disse:

    o número da conta e o total de KW consumido no mês

    Quando na verdade há uma tentativa de encontrar o maior e o menor consumidor de energia. Então o nome desse procedimento (ou função) é outro.

 

 

De cara, recomendo começar pela função cadastrar(...) que de fato solicita as informações do exame.

Depois para outras ainda a se pensar.

 

DICA: Reduza o número de variáveis globais, deixa apenas aquelas que são estritamente necessárias, pois o uso abusivo delas é muito fortemente característica de pouca lógica e ninguém gosta de passar esse impressão.

 

  • Curtir 1
Postado

boa tarde, dei uma ajeitada no codigo , mais esta dando agora erro ( subscrito requer tipo ponteiro ou matriz),

pode me ajudar, nao sei onde esta este erro, e o que tem que ser feito.

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


#define numeros_linhas 5 // declarando tamanho máximo do vetor
#define valor_kwh 1.75
#define CONSUMO_ACIMA 170
#define KEY_ENTER 13
// variáveis globais

float consumidor[numeros_linhas][2];
int total_registrado = 0;
int NConta[30];//Numero de conta
int TotalKW;// Valor Total de KW
int Valorpago;
int a, b[10] = { 0 };



int 


	printf("Digite o numero da conta A:\n");
	scanf_s("%d", &NConta);

	printf("Digite o numero total de consumo KW:\n");
	scanf_s("%d", &TotalKW);


	if (TotalKW)
	{// soma do valor a pagar de cada consumidor

		Valorpago = 1.75 * TotalKW;

	}

void cadastroConsKw();
{
	system("cls");
	printf("\nNúmero da matrícula:\n");
	scanf_s("%f", &consumidor[total_registrado][0]);
	printf("\nKWH consumido: ");
	scanf_s("%f", &consumidor[total_registrado][1]);
	total_registrado++;
	printf("\nCadastro realizado com sucesso!\n");
	system("pause");
}
void consumo_Maio()
{
	system("cls");
	// o menor no começo é sempre 0, então não existe engenharia de usar energia do poste e não	pagar nada

	if (total_registrado > 0)
	{
		float kwh = 0, vl_total = 0, numero_conta = 0;

		int i;
		// compara se o kwk é maior que registrado
		for (i = 0; i < total_registrado; i++)
		{
			if (consumidor[i][1] > kwh)
			{
				numero_conta = consumidor[i][0];
				kwh = consumidor[i][1];
			}
		}
		vl_total = (float)(kwh * valor_kwh);
		printf("\nMaior consumo registrado");
		printf("\nNúmero da conta: %0.2f", numero_conta);
		printf("\nKwH consumido: %0.2f", kwh);
		printf("\nValor total a pagar: %0.2f", vl_total);
	}
	else {
		printf("\nNão há consumidor cadastrado...\n");
	}
		system("pause");
}// procedimento para mostrar menor consumo

void consumo_Menor() 
{
	system("cls");
	// preciso primneiro colocar kwk com valor estratoférico que nem Bill Gates conseguiria pagar
	if (total_registrado > 0) 
	{
		float kwh = 99999999, vl_total = 0, numero_conta = 0;

		int i; 
		
		for (i = 0; i < total_registrado; i++) 
		{// compara se o kwk é menor que registrado

			if (consumidor[i][1] < kwh) 
			{
				numero_conta = consumidor[i][0];
				kwh = consumidor[i][1];
			}
		}
		vl_total = (float)(kwh * valor_kwh);
		printf("\nMenor consumo registrado");
		printf("\nNúmero da conta: %0.2f", numero_conta);
		printf("\nKw consumido: %0.2f", kwh);
		printf("\nValor total a pagar: %0.2f", vl_total);
	}
	else {
		printf("\nConsulmidor inexistente...\n");
	}
	system("pause");
}// procedimento para listar consumidores acima n kwh
void listarConsumoSuperior(float n)
{
	system("cls");

	if (total_registrado > 0)
	{
		int contador = 0, i = 0;

		printf("\nExibindo consumo acima de %.2fKW", n);

		for (i = 0; i < total_registrado; i++)
		{
			if (consumidor[i][1] > n)
			{
				printf("\nNúmero da conta: %.2f - KWh: %.2f", consumidor[i][0],
					consumidor[i][1]);
				contador++;
			}
		}
		printf("\nTotal encontrado: %d\n", contador); // imprimindo total de consumidor
	}
	else
	{
		printf("\nNão há consumidor cadastrado...\n");
	}
	system("pause");
}
// exibe a media de consumo da cidade

void consumo_medio_cidade()
{
	system("cls");
	if (total_registrado > 0)
	{
		float media = 0; // declarando media 

		int i;

		for (i = 0; i < total_registrado; i++)
		{
			media = media + consumidor[i][1];//somando consumo
		}
		media = media / total_registrado; // fazendo media com total somado dividindo com numero de consumidor cadastrado

		printf("\nO consumo médio da cidade é: %.2fKW\n", media); // imprimindo a media de consumo da cidade
	}
	else
	{
		printf("\nNão há consumidor cadastrado...\n");
	}
	system("pause");
}
// procedimento para exibir menu




	printf("O Total da conta = %d\n", Valorpago);
	printf("Maior Valor: %s com a Valorpago %d.", Valorpago[VGMais]);
	printf("Maior Valor: %s com a Valorpago %d.", Valorpago[VGMenos]);


	int main(int argc, char* argv[])
	{
		setlocale(LC_ALL, "Portuguese");

		exibirMenu();
		return 0;
	}

 

Postado

As 5 funções estão funcionando ...

 

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


#define NUMERO_LINHAS 5 // declarando tamanho máximo do vetor
#define valor_kwh 1.75
#define CONSUMO_ACIMA 170
#define VAZIO 0
#define KEY_ENTER 13

// Variáveis Globais
int   total_registrado;
int   consumidor_numero_conta[NUMERO_LINHAS];
float consumidor_total_KW[NUMERO_LINHAS];



void cadastroConsKw(void)
{
	system("cls");

	if (NUMERO_LINHAS == total_registrado) {
            printf("Cadastro Cheio\n");
	}
	else for (int reg= 0; reg < NUMERO_LINHAS; ++reg) {
            if(VAZIO == consumidor_numero_conta[reg]) {
                    printf("Número da matrícula: "); scanf(" %d",&consumidor_numero_conta[reg]);
                    printf("KWH consumido: "); scanf(" %f",&consumidor_total_KW[reg]);

                    ++total_registrado;
                    puts("");
                    printf("Cadastro realizado com sucesso!\n");
                    break;
            }
	}
	system("pause");
	return;
}



void consumo_maior(void)
{
	system("cls");
    float kwh = 0, vl_total = 0;
    int numero_conta = 0;
	// o menor no começo é sempre 0, então não existe engenharia de usar energia do poste e não	pagar nada

	if (total_registrado > VAZIO) {
            int i;
		// compara se o kwk é maior que registrado
            for (i = 0; i < NUMERO_LINHAS; i++) {
                    if ((consumidor_numero_conta[i] != VAZIO)&&(consumidor_total_KW[i] > kwh)) {
                            numero_conta = consumidor_numero_conta[i];
                            kwh = consumidor_total_KW[i];
                    }
            }
            vl_total = (kwh * valor_kwh);

            printf("Maior consumo registrado \n");
            printf("Número da conta: %d \n", numero_conta);
            printf("KwH consumido: %0.2f \n", kwh);
            printf("Valor total a pagar: %0.2f \n", vl_total);
            puts("");
	}
	else {
            printf("\nNão há consumidor cadastrado...\n");
	}
    system("pause");
}// procedimento para mostrar menor consumo

void consumo_menor(void)
{
	system("cls");
    float kwh = 99999999, vl_total = 0;
    int numero_conta = 0;
	// preciso primneiro colocar kwk com valor estratoférico que nem Bill Gates conseguiria pagar
	if (total_registrado > VAZIO) {

            int i;
		// compara se o kwk é maior que registrado
            for (i = 0; i < NUMERO_LINHAS; i++) {
                    if ((consumidor_numero_conta[i] != VAZIO)&&(consumidor_total_KW[i] < kwh)) {
                            numero_conta = consumidor_numero_conta[i];
                            kwh = consumidor_total_KW[i];
                    }
            }
            vl_total = (float)(kwh * valor_kwh);

            printf("Menor consumo registrado \n");
            printf("Número da conta: %d \n", numero_conta);
            printf("Kw consumido: %0.2f \n", kwh);
            printf("Valor total a pagar: %0.2f \n", vl_total);
            puts("");
	}
	else {
            printf("\nConsulmidor inexistente...\n");
	}
	system("pause");
}// procedimento para listar consumidores acima n kwh



void listarConsumoSuperior(float n)
{
	system("cls");

	if (total_registrado > 0) {
            int contador = 0, i = 0;

            printf("Exibindo consumo acima de %.2f KW \n", n);
            for (i = 0; i < NUMERO_LINHAS; i++) {
                    if ((consumidor_numero_conta[i] != VAZIO)&&(consumidor_total_KW[i] > n)) {
                            printf("Número da conta: %d - KWh: %.2f \n", consumidor_numero_conta[i],
                                                                                consumidor_total_KW[i]);
                            contador++;
                    }
            }
            printf("Total encontrado: %d \n", contador); // imprimindo total de consumidor
	}
	else {
            printf("\nNão há consumidor cadastrado... \n");
	}
	system("pause");
}
// exibe a media de consumo da cidade

void consumo_medio_cidade()
{
	system("cls");
	if (total_registrado > 0) {
            float media = 0; // declarando media

            int i;

            for (i = 0; i < NUMERO_LINHAS; i++) {
                if (consumidor_numero_conta[i] != VAZIO) {
                        media = media + consumidor_total_KW[i];//somando consumo
                }
            }
            media = media / total_registrado; // fazendo media com total somado dividindo com numero de consumidor cadastrado
            printf("O consumo médio da cidade é: %.2fKW\n",media); // imprimindo a media de consumo da cidade
	}
	else {
            printf("Não há consumidor cadastrado...\n");
	}
	system("pause");
}

int main(void)
{
    setlocale(LC_ALL, "Portuguese");

    cadastroConsKw();
    cadastroConsKw();
    cadastroConsKw();

    listarConsumoSuperior(CONSUMO_ACIMA);

    consumo_medio_cidade();
    consumo_maior();
    consumo_menor();


    return 0;
}

 

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!