Ir ao conteúdo
  • Cadastre-se

C Calcular média de renda


elyastrid

Posts recomendados

Olá, estou com problemas no cálculo de média de renda no meu código.

Segue código abaixo:

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

struct questionario {
	char nome [40];
	char sexo [40];
	int idade;
	float renda;
	char fumante [40];
	char esportes [40];
	char atividade [40];
};
int op;
void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}
int main () {
	char estatistica [40], nomepesquisa[40];
	int i,total_h=0,total_m=0, faixa_e=0, total_f=0,renda_total=0;
	float perc_h, perc_m, perc_faixa,perc_f, renda_media;
	struct questionario respostas[5];
	FILE *arquivo;
	
	arquivo= fopen ("resposta.txt", "w");
	
	if (arquivo == NULL) {
		printf ("Erro na abertura do arquivo!"); 
	}
// cadastrando //
do {	
	for (i=0; i<5; i++)
	{
	printf ("Digite o seu nome:");
	scanf ("%s", respostas[i].nome);
		limpa_linha();
	fprintf (arquivo, "Nome: %s ",respostas[i].nome);
	printf ("Digite o seu sexo - F p/Feminino, M p/ Masculino e O p/ Outro: ");
	scanf ("%s", respostas[i].sexo);
		limpa_linha();
	fprintf (arquivo,"Sexo: %s ", respostas[i].sexo);
	printf ("Digite a sua idade:");
	scanf ("%d", &respostas[i].idade);
		limpa_linha();
	fprintf (arquivo, "Idade: %d ", respostas[i].idade);
	printf ("Digite a sua renda:");
	scanf ("%2.f", &respostas[i].renda);
		limpa_linha();
	fprintf (arquivo, "Renda: %2.f ", respostas[i].renda);
	printf ("Eh fumante ? - S p/ Sim e N p/ Nao: ");
	scanf ("%s", respostas[i].fumante);
		limpa_linha();
	fprintf (arquivo, "Eh fumante?: %s ", respostas[i].fumante);
	printf ("Gosta de esportes? - S p/ Sim e N p/ Nao:");
	scanf ("%s", respostas[i].esportes);
		limpa_linha();
	fprintf (arquivo, "Gosta de esportes?: %s ", respostas[i].esportes);
	printf ("Pratica atividade fisica ? - S p/ Sim e N p/ Nao: ");
	scanf ("%s", respostas[i].atividade);
		limpa_linha();
	fprintf (arquivo, "Pratica atividade fisica?: %s ", respostas[i].atividade);
}
fclose (arquivo);
printf ("\n Digite 1 para continuar cadastrando:");
scanf ("%d", &op);
} while (op==1);
// pesquisar //
do {
	arquivo= fopen ("resposta.txt", "r");
	printf ("\n Digite 1 para pesquisar por Nome:");
	scanf ("%d", &op);
	if (op==1) {
			printf ("\n Digite o nome:");
			scanf ("%s", nomepesquisa);
			for (i=0;i<5;i++) {
				if (!strcmp(respostas[i].nome, nomepesquisa)){
					printf ("\n Nome: %s \n Sexo: %s \n Idade: %i \n Renda: %2.f  \n Eh fumante?: %s  \n Gosta de esportes?: %s  \n Pratica atividade fisica?:%s", respostas[i].nome, respostas[i].sexo, respostas[i].idade, respostas[i].renda, respostas[i].fumante, respostas[i].esportes, respostas[i].atividade);
				}
}
}
fclose (arquivo);
printf ("\n Digite 1 para continuar cadastrando:");
scanf ("%d", &op);
} while (op==1);
// gerar estatistica
printf ("\n Digite 2 para gerar estatistica:");
scanf ("%d", &op);
		
// percentual de homens e mulheres //
if (op==2) {

			for (i=0;i<5;i++) {
				if (strcmp (respostas[i].sexo, "masculino") == 0) {
		        total_h ++;}
		    }
			perc_h = total_h * 100.0/5;  // perc. homens
			
			for (i=0;i<5;i++) {
				if (strcmp (respostas[i].sexo, "feminino")==0) {
					total_m++;}
			}
			perc_m= total_m *100.0/5; // perc. mulheres
printf("O percentual de homens e mulheres eh de: %2.f %2.f \n", perc_h, perc_m);
			

		
		// percentual de pessoas na faixa etária de 18 a 40 anos // 
for (i=0;i<5;i++) {
	if (respostas[i].idade >18)
	if (respostas[i].idade <40) {
		faixa_e ++;
	}
}
perc_faixa= faixa_e *100.0/5;
printf ("O percentual de pessoas na faixa etaria de 18 a 40 eh de: %2.f \n", perc_faixa);
		
		// percentual de fumantes//
for (i=0;i<5;i++) {
	if (strcmp (respostas[i].fumante,"sim") ==0) {
		total_f ++;
	}
}
perc_f= total_f * 100.0/5;
printf ("O percentual de fumantes eh de: %2.f\n", perc_f);
		
		
		// renda média de todos os entrevistas // 
fscanf (arquivo,"%2.f", respostas[i].renda);
for (i=0;i<5;i++) {
	renda_total ++;
}
renda_media = renda_total/5;
printf ("A renda media de todos os entrevistados eh de: %2.f \n", renda_media);

		


}
fclose(arquivo);		
system ("pause");
return 0;
}

 

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

   @elyastrid         a leitura no arquivo não está sendo efetivada :

 

fscanf(arquivo,"%2.f",respostas[i].renda);/* aqui não pega nada do rquivo */

 

e para calcular os dados você pode usar apenas um laço de repetição e somando as rendas ,  assim  :

 

if(op==2){
    for(i=0;i<5;i++){
        if(strcmp(respostas[i].sexo,"masculino") == 0)
            total_h++;
        if(strcmp(respostas[i].sexo,"feminino")==0)
            total_m++;
        if(respostas[i].idade >18 && respostas[i].idade <40)
            faixa_e++;
        if(strcmp(respostas[i].fumante,"sim") ==0)
            total_f++;
        renda_total+=respostas[i].renda;
    }

 

mas a renda_total seria do tipo float

Link para o comentário
Compartilhar em outros sites

@devair1010

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

struct questionario {
	char nome [40];
	char sexo [40];
	int idade;
	float renda;
	char fumante [40];
	char esportes [40];
	char atividade [40];
};
int op;
void limpa_linha() {
    scanf("%*[^\n]");
    scanf("%*c");
}
int main () {
	char estatistica [40], nomepesquisa[40];
	int i,total_h=0,total_m=0, faixa_e=0, total_f=0;
	float perc_h, perc_m, perc_faixa,perc_f, renda_media,renda_total=0;
	struct questionario respostas[5];
	FILE *arquivo;
	
	arquivo= fopen ("resposta.txt", "w");
	
	if (arquivo == NULL) {
		printf ("Erro na abertura do arquivo!"); 
	}
// cadastrando //
do {	
	for (i=0; i<5; i++)
	{
	printf ("Digite o seu nome:");
	scanf ("%s", respostas[i].nome);
		limpa_linha();
	fprintf (arquivo, "Nome: %s ",respostas[i].nome);
	printf ("Digite o seu sexo - F p/Feminino, M p/ Masculino e O p/ Outro: ");
	scanf ("%s", respostas[i].sexo);
		limpa_linha();
	fprintf (arquivo,"Sexo: %s ", respostas[i].sexo);
	printf ("Digite a sua idade:");
	scanf ("%d", &respostas[i].idade);
		limpa_linha();
	fprintf (arquivo, "Idade: %d ", respostas[i].idade);
	printf ("Digite a sua renda:");
	scanf ("%2.f", &respostas[i].renda);
		limpa_linha();
	fprintf (arquivo, "Renda: %2.f ", respostas[i].renda);
	printf ("Eh fumante ? - S p/ Sim e N p/ Nao: ");
	scanf ("%s", respostas[i].fumante);
		limpa_linha();
	fprintf (arquivo, "Eh fumante?: %s ", respostas[i].fumante);
	printf ("Gosta de esportes? - S p/ Sim e N p/ Nao:");
	scanf ("%s", respostas[i].esportes);
		limpa_linha();
	fprintf (arquivo, "Gosta de esportes?: %s ", respostas[i].esportes);
	printf ("Pratica atividade fisica ? - S p/ Sim e N p/ Nao: ");
	scanf ("%s", respostas[i].atividade);
		limpa_linha();
	fprintf (arquivo, "Pratica atividade fisica?: %s ", respostas[i].atividade);
}
fclose (arquivo);
printf ("\n Digite 1 para continuar cadastrando:");
scanf ("%d", &op);
} while (op==1);
// pesquisar //
do {
	arquivo= fopen ("resposta.txt", "r");
	printf ("\n Digite 1 para pesquisar por Nome:");
	scanf ("%d", &op);
	if (op==1) {
			printf ("\n Digite o nome:");
			scanf ("%s", nomepesquisa);
			for (i=0;i<5;i++) {
				if (!strcmp(respostas[i].nome, nomepesquisa)){
					printf ("\n Nome: %s \n Sexo: %s \n Idade: %i \n Renda: %2.f  \n Eh fumante?: %s  \n Gosta de esportes?: %s  \n Pratica atividade fisica?:%s", respostas[i].nome, respostas[i].sexo, respostas[i].idade, respostas[i].renda, respostas[i].fumante, respostas[i].esportes, respostas[i].atividade);
				}
}
}
fclose (arquivo);
printf ("\n Digite 1 para continuar cadastrando:");
scanf ("%d", &op);
} while (op==1);
// gerar estatistica
printf ("\n Digite 2 para gerar estatistica:");
scanf ("%d", &op);
		
// percentual de homens e mulheres //
if (op==2) {

			for (i=0;i<5;i++) {
				if (strcmp (respostas[i].sexo, "masculino") == 0) {
		        total_h ++;}
		    }
			perc_h = total_h * 100.0/5;  // perc. homens
			
			for (i=0;i<5;i++) {
				if (strcmp (respostas[i].sexo, "feminino")==0) {
					total_m++;}
			}
			perc_m= total_m *100.0/5; // perc. mulheres
printf("O percentual de homens e mulheres eh de: %2.f %2.f \n", perc_h, perc_m);
			

		
		// percentual de pessoas na faixa etária de 18 a 40 anos // 
for (i=0;i<5;i++) {
	if (respostas[i].idade >18)
	if (respostas[i].idade <40) {
		faixa_e ++;
	}
}
perc_faixa= faixa_e *100.0/5;
printf ("O percentual de pessoas na faixa etaria de 18 a 40 eh de: %2.f \n", perc_faixa);
		
		// percentual de fumantes//
for (i=0;i<5;i++) {
	if (strcmp (respostas[i].fumante,"sim") ==0) {
		total_f ++;
	}
}
perc_f= total_f * 100.0/5;
printf ("O percentual de fumantes eh de: %2.f\n", perc_f);
		
		
		// renda média de todos os entrevistados // 
for (i=0;i<5;i++) {
        renda_total+=respostas[i].renda;
}
renda_media = renda_total/5;

printf ("A renda media de todos os entrevistados eh de: %2.f \n", renda_media);

		


}
fclose(arquivo);		
system ("pause");
return 0;
}

Só quero calcular a média da renda, quanto aos outros cálculos irei deixar assim mesmo. Fiz como pontuou aqui 

 

8 horas atrás, devair1010 disse:

renda_total+=respostas[i].renda;

Porém, ele não me retorna o valor corretamente.

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