Advertisement
veto14

Q9Exercicios1

Mar 28th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define max 50
  4.  
  5. typedef struct data{
  6.     int dia, mes, ano;
  7. }Data;
  8.  
  9. typedef struct candidato{
  10.     int n_inscr;
  11.     char nome[51];
  12.     float nota;
  13.     Data *nasc;
  14. }Cand;
  15.  
  16. Cand** init_mvet(int a);
  17. Data* init_data(int a, int b, int c);
  18. Cand* new_cand(Cand** tab, int *y);
  19. void imprime_cands(Cand** tab, int tamanho);
  20. void imprime_data(Data* d);
  21. void limpar_tela();
  22. void limpar_memo(Cand** tab,int *tamanho);
  23.  
  24. int main(void){
  25.     Cand** vet;
  26.     Cand* cands[50];
  27.     int ncands=0,a = max;
  28.     vet = init_mvet(a);
  29.     cands[ncands] = new_cand(vet,&ncands);
  30.     cands[ncands] = new_cand(vet,&ncands);
  31.     cands[ncands] = new_cand(vet,&ncands);
  32.     limpar_tela();
  33.     imprime_cands(vet,ncands);
  34.     limpar_memo(vet,&ncands);
  35.     printf("%d",ncands);
  36.     return 0;
  37. }
  38.  
  39. Cand** init_mvet(int a){
  40.     Cand** vet;
  41.     int i;
  42.     vet = (Cand**)malloc(a*sizeof(Cand*));
  43.     for(i=0;i<a;i++){
  44.         vet[i] = NULL; 
  45.     }
  46.     return vet;
  47. }
  48.  
  49. Data* init_data(int a,int b,int c){
  50.     Data* d;
  51.     d = (Data*)malloc(sizeof(Data));
  52.     d -> dia = a;
  53.     d -> mes = b;
  54.     d -> ano = c;
  55.     return d;
  56. }
  57.  
  58. Cand* new_cand(Cand** tab, int *y){
  59.     int a,b,c,n;
  60.     float grade;
  61.     if(tab[*y] == NULL){
  62.         tab[*y] = (Cand *)malloc(sizeof(Cand));
  63.     }
  64.     printf("Insira o nome do candidato.\n");
  65.     getchar();
  66.     fgets(tab[*y] -> nome,51,stdin);
  67.     printf("Insira o numero de inscricao do candidato.\n");
  68.     scanf("%d",&n);
  69.     printf("Insira em seguida o Dia, MÃĒs e Ano de nascimento do Candidato.\n");
  70.     scanf("%d %d %d",&a,&b,&c);
  71.     printf("Agora insira a nota do candidato.\n");
  72.     scanf("%f",&grade);
  73.     tab[*y] -> n_inscr = n;
  74.     tab[*y] -> nasc = init_data(a,b,c);
  75.     tab[*y] -> nota = grade;
  76.     *y = (*y) + 1;
  77.     return tab[*y];
  78. }
  79.  
  80. void imprime_data(Data* d){
  81.     printf("Data de Nascimento %d/%d/%d\n",d -> dia,d -> mes,d -> ano);
  82. }
  83.  
  84. void imprime_cands(Cand** tab, int tamanho){
  85.     int i;
  86.     for(i=0; i<tamanho; i++){
  87.         printf("%s",tab[i] -> nome);
  88.         printf("%.1f\n",tab[i] -> nota);
  89.         printf("%d\n",tab[i] -> n_inscr);
  90.         imprime_data(tab[i] -> nasc);
  91.     }
  92. }
  93.  
  94. void limpar_tela(){
  95.     int i;
  96.     for(i=0; i<50; i++){
  97.         printf("\n");
  98.     }
  99. }
  100.  
  101. void limpar_memo(Cand** tab, int *tamanho){
  102.     int i;
  103.     for(i=0; i<*tamanho; i++){
  104.         free(tab[i]);
  105.     }
  106.     *tamanho = 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement