• Matéria: Informática
  • Autor: r8obKARLleehanat
  • Perguntado 8 anos atrás

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

Respostas

respondido por: KuroeJin
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; }
Perguntas similares