Exercícios avaliativos Unidade II Orientações: implemente e compile cada programa na sua IDE preferida ( code blocks, visual c, etc...), posteriormente envie os códigos fonte, compactados ou não, via ambiente Moodle ao seu tutor para avaliação.1) Elabore um programa usando structs que trate a seguinte situação (25 pontos): a prefeitura está aplicando pesquisa de amostragem no bairro Porteirinha de Dourados-MS. Serão consultados 450 moradores. Deseja-se coletar a idade dos adultos(em anos), sexo (M/F), grau de escolaridade(1-fundamental, 2- ensino médio, 3- ensino superior) e renda mensal. Após coletar todos os dados apure os seguintes dados:a. A média de salário do grupo b. Maior e menor idade do grupo c. % do grau de escolaridade predominante no bairrod. A quantidade de homens e mulheres
Soluções para a tarefa
Respondido por
0
#include<stdio.h>
#include<stdlib.h>
int qtd=450;
typedef struct{
int idade;
char sexo;
int escolaridade;
float renda; }Moradores;
int coletar_dados(Moradores m[], int pos);
int inserir_dados(Moradores m[], int pos)
int idade_mrdr(Moradores mr[], int pos);
int sexo_mr(Moradores mr[], int pos);
int escolaridade_mr(Moradores m[], int pos);
int renda_mensal(Moradores m[], int pos);
float mediaslr(Moradores m[], float smslr int pos);
int maioriddgrupo(Moradores m[], int maior,int pos);
int menoriddgrupo(Moradores m[], int menor,int pos);
float percentfund(Moradores m[], int qfund,int pos);
float percentmedio(Moradores m[], int qtdmedio, int pos);
int qtdhomens(Moradores m[], int qtdM, int pos);
int exibir(Moradores m[]);
int main(){
Moradores mrdrs[qtd];
coletar_dados(mrdrs, 0);
exibir(mrdrs);
system("pause");
return 0;}
int coletar_dados(Moradores mors[], int pos){
if(pos<qtd){
inserir_dados(mors, pos);
return coletar_dados(mors, pos+1); }
printf("\n\n_____________________________________\n\n");
return 0; }
int inserir_dados(Moradores mr[], int pos){
idade_mrdr(mr, pos);
sexo_mr(mr,pos);
escolaridade_mr(mr,pos);
renda_mensal(mr,pos);
printf(\n-----------------------------------------------------------------\n)
return 0; }
int idade_mrdr(Moradores m[], int pos){
printf("Idade do morador %d: ", pos+1);
scanf("%d", &m[pos].idade);
if(m[pos].idade<0){
printf("Idade invalida!!\n\n");
return idade_mrdr(mr, pos); }
return 0; }
int sexo_mr(Moradores m[], int pos){
fflush(stdin);//se for linux utilize o _fpurge(stdin);
printf("Sexo((m/M)/(f/F)) do morador %d: ", pos+1);
scanf("%c", &m[pos].sexo);
if((m[pos].sexo!='m')&&(m[pos].sexo!='M')&&(m[pos].sexo!='f')&&(m[pos].sexo!='F')){
printf("Sexo invalido!!!\n\n");
return sexo_mr(m, pos); }
fflush(stdin);
return 0; }
int escolaridade_mr(Moradores m[], int pos){
printf("Escolaridade:\n");
printf("1 - Fundamental\n");
printf("2 - Medio\n");
printf("3 - Superior\n");
printf("Grau de escolaridade do morador %d: ", pos+1);
scanf("%d", &m[pos].escolaridade);
if((m[pos].escolaridade<1)||(m[pos].escolaridade>3)){
printf("Grau de escolaridade invalido!\n\n");
return escolaridade_mr(m, pos); }
return 0;}
int renda_mensal(Moradores m[], pos){
printf("Renda mensal do morador %d: ", pos+1);
scanf("%f", &m[pos].renda);
if(m[pos].renda<0){
printf("Renda invalida\n\n");
return renda_mensal(m, pos); }
return 0; }
//calcula a media salarial dos moradores
float mediaslr(Moradores m[], float smslr, int pos){
if(pos<qtd) return mediaslr(m, smslr+m[pos].renda, pos+1);
return smslr/(float)qtd; }
//retorna a maior idade do grupo de moradores
int maioriddgrupo(Moradores m[], int maior, int pos){
if(pos<qtd){
if(m[pos].idade>maior) return maioriddgrupo(m, m[pos].idade, pos+1);
else return maioriddgrupo(m, maior, pos+1); }
return maior; }
//retorna a menor idade do grupo de moradores
int menoriddgrupo(Moradores m[], int menor, int pos){
if(pos<qtd){
if(m[pos].idade<menor) return menoriddgrupo(m, m[pos].idade, pos+1);
else return menoriddgrupo(m, menor, pos+1); }
return menor; }
//calcula o percentual de moradores com o ensino fundamental
float percentfund(Moradores m[], int qtdfund, int pos){
if(pos<qtd){
if(m[pos].escolaridade==1) return percentfund(m, qtdfund+1, pos+1);
else return percentfund(m, qtdfund, pos+1); }
return ((float)qtdfun/(float)qtd)*100; }
//calcula o percentual dos moradores tem o ensino medio
float percentmedio(Moradores m[], int qtdmedio, int pos){
if(pos<qtd){
if(m[pos].escolaridade==2) return percentmedio(m, qtdmedio+1, pos+1);
else return percentmedio(m, qtdmedio, pos+1); }
return ((float)qtdfun/(float)qtd)*100; }
//calcula a quantidade de homens
int qtdhomens(Moradores m[], int qtdM, int pos){
if(pos<qtd){
if((m[pos].sexo=='m')||(m[pos].sexo=='M')) return qtdhomens(m, qtdM+1, pos+1);
else return qtdhomens(m, qtdM, pos+1); }
return qtdM; }
int exibir(Moradores m[]){
printf("Media do salario eh R$%.2f\n", mediaslr(m,0,0));
printf("A maior idade eh %d anos e a menor eh %d anos\n", maioriddgrupo(m, m[0].idade, 1), menoriddgrupo(m, m[0].idade, 1));
float pfund, pmedio, psuperior;
pfundr=percentfund(m, 0, 0);
pmedio=percentmedio(m, 0, 0);
psuperio=100-(pmedio+pfund);
printf("O percentual de moradores com grau de escolaridade eh %.2f%% fundamental, %.2f%% medio e %.2f%% superior\n", pfund, pmedio, psuperior);
int homens, mulheres;
homens=qtdhomens(m, 0, 0);
mulheres=qtd-homens;
printf("A quantidade de homens eh %d e de mulheres eh %d\n\n", homens, mulheres);
printf("\n\n")
return 0; }
#include<stdlib.h>
int qtd=450;
typedef struct{
int idade;
char sexo;
int escolaridade;
float renda; }Moradores;
int coletar_dados(Moradores m[], int pos);
int inserir_dados(Moradores m[], int pos)
int idade_mrdr(Moradores mr[], int pos);
int sexo_mr(Moradores mr[], int pos);
int escolaridade_mr(Moradores m[], int pos);
int renda_mensal(Moradores m[], int pos);
float mediaslr(Moradores m[], float smslr int pos);
int maioriddgrupo(Moradores m[], int maior,int pos);
int menoriddgrupo(Moradores m[], int menor,int pos);
float percentfund(Moradores m[], int qfund,int pos);
float percentmedio(Moradores m[], int qtdmedio, int pos);
int qtdhomens(Moradores m[], int qtdM, int pos);
int exibir(Moradores m[]);
int main(){
Moradores mrdrs[qtd];
coletar_dados(mrdrs, 0);
exibir(mrdrs);
system("pause");
return 0;}
int coletar_dados(Moradores mors[], int pos){
if(pos<qtd){
inserir_dados(mors, pos);
return coletar_dados(mors, pos+1); }
printf("\n\n_____________________________________\n\n");
return 0; }
int inserir_dados(Moradores mr[], int pos){
idade_mrdr(mr, pos);
sexo_mr(mr,pos);
escolaridade_mr(mr,pos);
renda_mensal(mr,pos);
printf(\n-----------------------------------------------------------------\n)
return 0; }
int idade_mrdr(Moradores m[], int pos){
printf("Idade do morador %d: ", pos+1);
scanf("%d", &m[pos].idade);
if(m[pos].idade<0){
printf("Idade invalida!!\n\n");
return idade_mrdr(mr, pos); }
return 0; }
int sexo_mr(Moradores m[], int pos){
fflush(stdin);//se for linux utilize o _fpurge(stdin);
printf("Sexo((m/M)/(f/F)) do morador %d: ", pos+1);
scanf("%c", &m[pos].sexo);
if((m[pos].sexo!='m')&&(m[pos].sexo!='M')&&(m[pos].sexo!='f')&&(m[pos].sexo!='F')){
printf("Sexo invalido!!!\n\n");
return sexo_mr(m, pos); }
fflush(stdin);
return 0; }
int escolaridade_mr(Moradores m[], int pos){
printf("Escolaridade:\n");
printf("1 - Fundamental\n");
printf("2 - Medio\n");
printf("3 - Superior\n");
printf("Grau de escolaridade do morador %d: ", pos+1);
scanf("%d", &m[pos].escolaridade);
if((m[pos].escolaridade<1)||(m[pos].escolaridade>3)){
printf("Grau de escolaridade invalido!\n\n");
return escolaridade_mr(m, pos); }
return 0;}
int renda_mensal(Moradores m[], pos){
printf("Renda mensal do morador %d: ", pos+1);
scanf("%f", &m[pos].renda);
if(m[pos].renda<0){
printf("Renda invalida\n\n");
return renda_mensal(m, pos); }
return 0; }
//calcula a media salarial dos moradores
float mediaslr(Moradores m[], float smslr, int pos){
if(pos<qtd) return mediaslr(m, smslr+m[pos].renda, pos+1);
return smslr/(float)qtd; }
//retorna a maior idade do grupo de moradores
int maioriddgrupo(Moradores m[], int maior, int pos){
if(pos<qtd){
if(m[pos].idade>maior) return maioriddgrupo(m, m[pos].idade, pos+1);
else return maioriddgrupo(m, maior, pos+1); }
return maior; }
//retorna a menor idade do grupo de moradores
int menoriddgrupo(Moradores m[], int menor, int pos){
if(pos<qtd){
if(m[pos].idade<menor) return menoriddgrupo(m, m[pos].idade, pos+1);
else return menoriddgrupo(m, menor, pos+1); }
return menor; }
//calcula o percentual de moradores com o ensino fundamental
float percentfund(Moradores m[], int qtdfund, int pos){
if(pos<qtd){
if(m[pos].escolaridade==1) return percentfund(m, qtdfund+1, pos+1);
else return percentfund(m, qtdfund, pos+1); }
return ((float)qtdfun/(float)qtd)*100; }
//calcula o percentual dos moradores tem o ensino medio
float percentmedio(Moradores m[], int qtdmedio, int pos){
if(pos<qtd){
if(m[pos].escolaridade==2) return percentmedio(m, qtdmedio+1, pos+1);
else return percentmedio(m, qtdmedio, pos+1); }
return ((float)qtdfun/(float)qtd)*100; }
//calcula a quantidade de homens
int qtdhomens(Moradores m[], int qtdM, int pos){
if(pos<qtd){
if((m[pos].sexo=='m')||(m[pos].sexo=='M')) return qtdhomens(m, qtdM+1, pos+1);
else return qtdhomens(m, qtdM, pos+1); }
return qtdM; }
int exibir(Moradores m[]){
printf("Media do salario eh R$%.2f\n", mediaslr(m,0,0));
printf("A maior idade eh %d anos e a menor eh %d anos\n", maioriddgrupo(m, m[0].idade, 1), menoriddgrupo(m, m[0].idade, 1));
float pfund, pmedio, psuperior;
pfundr=percentfund(m, 0, 0);
pmedio=percentmedio(m, 0, 0);
psuperio=100-(pmedio+pfund);
printf("O percentual de moradores com grau de escolaridade eh %.2f%% fundamental, %.2f%% medio e %.2f%% superior\n", pfund, pmedio, psuperior);
int homens, mulheres;
homens=qtdhomens(m, 0, 0);
mulheres=qtd-homens;
printf("A quantidade de homens eh %d e de mulheres eh %d\n\n", homens, mulheres);
printf("\n\n")
return 0; }
Perguntas interessantes
História,
8 meses atrás
Português,
8 meses atrás
Matemática,
8 meses atrás
Sociologia,
1 ano atrás
Matemática,
1 ano atrás
Física,
1 ano atrás