Ir ao conteúdo

Posts recomendados

Postado

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
Postado

   @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

Postado

@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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!