Todos os 60 professores responderam a uma pesquisa, onde se
desejava saber: sua idade, seu sexo (M – Masculino; F – Feminino), seu nível de escolaridade (G –
Graduado; M – Mestre; D – Doutor) e a quantidade de disciplinas que leciona. Escreva um programa
em C que receba as informações de todos os professores, calcule e mostre:
a. A média de idade dos professores e professoras com Doutorado.
b. A quantidade média de disciplinas lecionadas por professores e professoras com mais 50 anos.
c. A idade da professora mais velha.
d. O percentual de professores e professoras Graduados, Mestres e Doutores.
e. O percentual de professoras Doutoras, em relação ao total do corpo docente.
O programa deve garantir que a idade informada por cada professor esteja entre 18 e 70 anos, que o
sexo seja M, m, F ou f, que o nível de escolaridade seja G, g, M, m, D ou d e que a quantidade de
disciplinas lecionadas seja superior a 0. Caso os valores informados não estejam de acordo com a
especificação acima, novos valores devem ser solicitados até que o(a) professor(a) informe valores
válidos.
Soluções para a tarefa
Resposta:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 60
struct todos_dados
{
//Array de string: 60 palavras de ate 1 caractere.
int idade[60];
char sexo[60][1];
char nivel_escolaridade[60][1];
int qtd_disciplinas[60];
};
struct todos_dados professor; //struct
int main() {
//contadores de posição:
int count = 1, count_2 = 1, count_3 = 1, count_4 = 1;
int i;
//Media de professores com doutorado:
int soma_doutorado = 0, media_doutorado = 0, qtd_doutorado = 0;
//Media professores +50:
int soma_50 = 0, media_50 = 0, qtd_50 = 0;
//Professora mais velha:
int idade_professora = 0, mais_velha = 0;
//Percentual:
int qtd_graduado = 0, qtd_mestre = 0, qtd_doutor = 0;
int total = 0;
float total_g, total_m, total_d;
//Percentual doutor+feminino:
int doutora = 0, doutor = 0;
float total_doutora;
printf("==================================\n");
printf("\tENTRADA:");
printf("\n==================================\n\n");
//Entrada de dados:
for(i = 0; i < TAM; i++){
printf("Informe a idade [%d]: ", count++);
scanf("%d", &professor.idade[i]);
//Opcao invalida de idade:
if(professor.idade[i] < 18 || professor.idade[i] > 70){
system("cls");
printf("==================================\n");
printf("\tIDADE INVALIDA!\n");
printf("==================================\n\n");
return main(0);
}
if(professor.idade[i] > idade_professora){
mais_velha = professor.idade[i];
}
printf("\nInforme o sexo [%d]:\nM - masculino / F - feminino: ", count_2++);
scanf("%s", professor.sexo[i]);
if(strcmp(professor.sexo[i], "m") == 0 || strcmp(professor.sexo[i], "M") == 0
|| strcmp(professor.sexo[i], "f") == 0 || strcmp(professor.sexo[i], "F") == 0){
//Opcao Invalida de sexo:
}else{
system("cls");
printf("==================================\n");
printf("\tOPCAO INVALIDA!\n");
printf("==================================\n\n");
return main(0);
}
if(strcmp(professor.sexo[i], "f") == 0 || strcmp(professor.sexo[i], "F") == 0){
idade_professora = professor.idade[i];
}
printf("\nInforme o nivel de escolaridade [%d]:\nG - graduado / M - mestre / D - doutor: ", count_3++);
scanf("%s", professor.nivel_escolaridade[i]);
if(strcmp(professor.nivel_escolaridade[i], "g") == 0 || strcmp(professor.nivel_escolaridade[i], "G") == 0
|| strcmp(professor.nivel_escolaridade[i], "m") == 0 || strcmp(professor.nivel_escolaridade[i], "M") == 0
|| strcmp(professor.nivel_escolaridade[i], "d") == 0 || strcmp(professor.nivel_escolaridade[i], "D") == 0){
//Opcao invalida de escolaridade:
}else{
system("cls");
printf("==================================\n");
printf("\tOPCAO INVALIDA!\n");
printf("==================================\n\n");
return main(0);
}
printf("\nInforme a quantidade de materias lecionadas [%d]: ", count_4++);
scanf("%d", &professor.qtd_disciplinas[i]);
//Opcao invalida de materias:
if(professor.qtd_disciplinas[i] < 0){
system("cls");
printf("==================================\n");
printf("\tQUANTIDADE INVALIDA!\n");
printf("==================================\n\n");
return main(0);
}
printf("\n==================================\n\n");
if(strcmp(professor.nivel_escolaridade[i], "d") == 0
|| strcmp(professor.nivel_escolaridade[i], "D") == 0){
soma_doutorado = soma_doutorado + professor.idade[i];
qtd_doutorado++;
}
if(professor.idade[i] > 50){
soma_50 = soma_50 + professor.qtd_disciplinas[i];
qtd_50++;
}
if(strcmp(professor.nivel_escolaridade[i], "g") == 0 || strcmp(professor.nivel_escolaridade[i], "G") == 0){
qtd_graduado++;
}
if(strcmp(professor.nivel_escolaridade[i], "m") == 0 || strcmp(professor.nivel_escolaridade[i], "M") == 0){
qtd_mestre++;
}
if(strcmp(professor.nivel_escolaridade[i], "d") == 0 || strcmp(professor.nivel_escolaridade[i], "D") == 0){
qtd_doutor++;
}
if(strcmp(professor.nivel_escolaridade[i], "d") == 0 || strcmp(professor.nivel_escolaridade[i], "D") == 0
&& strcmp(professor.sexo[i], "f") == 0 || strcmp(professor.sexo[i], "F") == 0){
doutora++;
}
}//for
media_doutorado = soma_doutorado / qtd_doutorado;
printf("Media de idade dos professores com doutorado: %d anos\n\n", media_doutorado);
media_50 = soma_50 / qtd_50;
printf("Quantidade media de disciplinas de professores com mais de 50 anos: %d disciplinas\n\n", media_50);
printf("A professora com maior idade possui %d anos\n\n", mais_velha);
printf("Porcentuais:\n");
total = qtd_doutor + qtd_mestre + qtd_graduado;
total_d = (qtd_doutor*100)/total;
printf("Doutores: %.2f%%\n", total_d);
total_m = (qtd_mestre*100)/total;
printf("Mestres: %.2f%%\n", total_m);
total_g = (qtd_graduado*100)/total;
printf("Graduados: %.2f%%\n\n", total_g);
total_doutora = ((doutora*100) - total)/total;
printf("Percentual de professoras doutoras: %.2f%%\n\n", total_doutora);
return 0;
}