Advertisement
Guest User

Untitled

a guest
Jul 6th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Afunc1.c */
  2. #include "analize.h"
  3.  
  4. AT2 Aloc(size_t MP, size_t NA)
  5. /* aloca spatiu pentru MP persoane si NA rezultate de analize */
  6. {
  7.     T2 *a;
  8.     int i, *p;
  9.    
  10.     a = (T2 *)malloc(sizeof(T2));
  11.     if(!a)
  12.         return NULL;
  13.    
  14.     a->a1 = (T1 *)calloc(MP,sizeof(T1));
  15.     if(!a->a1)
  16.     {
  17.         free(a);
  18.         return NULL;
  19.     }
  20.  
  21.     a->a3 = (int *)calloc(MP * NA,sizeof(int));
  22.     if(!a->a3)
  23.     {
  24.         free(a->a1->ocup);
  25.         free(a->a1);
  26.         free(a);
  27.         return NULL;
  28.     }
  29.    
  30.     a->na = NA;
  31.    
  32.     for( i = 0, p = a->a3; i < MP; i++, p += NA )
  33.         a->a1->aa = p;
  34.     return a;
  35. }
  36.  
  37. /*
  38. void Elib(AT2 *aa)
  39. /* elibereaza intregul spatiu ocupat d
  40. {
  41.     int i;
  42.     free((*aa)->a1->aa);
  43.     free((*aa)->a2);
  44.     free((*aa)->a3);
  45.     free (aa);
  46.     aa=NULL;
  47. }
  48. */
  49. int Adauga(T1 *x, char *numeprenume, char *cj, char *ocup)
  50.      /* adauga copia sirului s, daca este posibil */
  51. {
  52.     x->id = strdup(numeprenume);
  53.     if(!x->id)
  54.         return 0;
  55.        
  56.     x->cj = strdup(cj);
  57.     if(!x->cj)
  58.     {
  59.         free(x->id);
  60.         x->id=NULL;
  61.         return 0;
  62.     }
  63.    
  64.     x->ocup = strdup(ocup);
  65.     if(!x->ocup)
  66.     {
  67.         free(x->id);
  68.         free(x->cj);
  69.         x->id=NULL;
  70.         x->cj=NULL;
  71.         return 0;
  72.     }
  73.     return 1;
  74. }
  75.  
  76. int Cit(FILE* f, T2 *a)
  77. {
  78.     int i = 0, j, gs;
  79.     T1 *p;
  80.   char numeprenume[42], cj[16], ocup[12];
  81.   for(i =0, p = a->a1; i < (a->a1) - (a->a2),  fscanf(f, "%s%s%s", numeprenume, cj, ocup) == 3; p++ )
  82.   {
  83.         if(!Adauga(p, numeprenume, cj, ocup))
  84.             break;
  85.     a->nc++;
  86.         for(j=0; j<a->na; j++)
  87.         fscanf(f,"%i",p->aa[j]);
  88.     i++;
  89.   }
  90.   return i;
  91. }
  92.  
  93. void Afi(T2 *a)
  94. { T1 *as;
  95.   int *p, *s, i=0;
  96.   for (as = a->a1; as < a->a2; as++)
  97.   { printf("%2i. %s %-*s %s %s|", i++, as->id, 41 - strlen(as->id), as->cj, as->ocup);
  98.     for (p = as->aa, s = p + a->na; p < s; p++)
  99.       printf("%3i", *p);
  100.     printf("\n");
  101.   }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement