Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "estrutura.h"
  5.  
  6. #define SIM "Sim"
  7. #define NAO "Nao"
  8.  
  9. registro_funcionario *ptr_funcionario;
  10. realoca_mem(){
  11.  
  12.     ptr_funcionario = realloc(ptr_funcionario, sizeof(registro_funcionario)*(quantidade+1));
  13.          if (!ptr_funcionario) {
  14.             printf("Erro na alocacao de memoria!\n");
  15.             return -2;
  16. }
  17. }
  18. entrada_dados(){
  19.  
  20.     int     quantidade=0, i, total_menores=0;
  21.    float    soma_salarios=0;
  22.    char     aux_menor[4];
  23.    const int    ano_corrente=2019;
  24.  
  25.       ptr_funcionario = malloc(sizeof(registro_funcionario));
  26.    if (!ptr_funcionario) {
  27.       printf("Erro na alocacao de memoria!\n");
  28.       return -1;
  29. }
  30.     do {
  31.       printf("\nCPF: ");
  32.       scanf("%s", ptr_funcionario[quantidade].cpf);
  33.       if (strcmp(ptr_funcionario[quantidade].cpf, "0") != 0) {
  34.          // le demais dados
  35.          printf("Nome: ");
  36.          scanf(" %[^\n]s", ptr_funcionario[quantidade].nome);
  37.          //gets(ptr_funcionario[quantidade].nome);
  38.          //fflush(stdin);
  39.          printf("Nascimento: ");
  40.          scanf("%i/%i/%i", &ptr_funcionario[quantidade].data_nascimento.dia, &ptr_funcionario[quantidade].data_nascimento.mes, &ptr_funcionario[quantidade].data_nascimento.ano);
  41.          printf("Salario: ");
  42.          scanf("%f", &ptr_funcionario[quantidade].salario);
  43.          // aumenta area de de memoria
  44.          quantidade++;
  45.          ptr_funcionario = realloc(ptr_funcionario, sizeof(registro_funcionario)*(quantidade+1));
  46.          if (!ptr_funcionario) {
  47.             printf("Erro na alocacao de memoria!\n");
  48.             return -2;
  49.          }
  50.       }
  51.    }while (strcmp(ptr_funcionario[quantidade].cpf, "0") != 0);
  52. }
  53. media(){
  54.  
  55.  
  56.  
  57.  
  58. }
  59.  
  60. saida_dados(){
  61.  
  62.    printf("\nListagem...\n");
  63.    printf("CPF             | Nome                 | Nascimento | Menor | Salario\n");
  64.    for (*i=0; i<*quantidade; *i++) {
  65.       // verifica se eh menor ou nao
  66.       if ((ano_corrente - ptr_funcionario[i].data_nascimento.ano) >= 18) {
  67.          strcpy(aux_menor, NAO);
  68.       } else {
  69.          strcpy(aux_menor, SIM);
  70.          total_menores++;
  71.       }
  72.       // imprime dados
  73.       printf("%-15s | %-20s | %02i/%02i/%02i |  %s  | %10.2f\n", ptr_funcionario[i].cpf, ptr_funcionario[i].nome, ptr_funcionario[i].data_nascimento.dia, ptr_funcionario[i].data_nascimento.mes, ptr_funcionario[i].data_nascimento.ano, aux_menor, ptr_funcionario[i].salario);
  74.       // soma das medias
  75.       soma_salarios+=ptr_funcionario[i].salario;
  76.    }
  77.    // media turma
  78.    printf("\nNumero de menores : %i\n", total_menores);
  79.    printf("Media salarial : %0.2f\n", (soma_salarios/quantidade));
  80.  
  81. }
  82. main(){
  83.  
  84.    printf("\nInforme os dados solicitados dos funcionarios (digite 0 no CPF para sair)...\n");
  85.  
  86.     do {
  87.             realoca_mem();
  88.         entrada_dados();
  89.  
  90. }while (strcmp(ptr_funcionario[quantidade].cpf, "0") != 0);
  91.  
  92. saida_dados();
  93.  
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement