mihainan

Multimi - examen PC

Sep 3rd, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int cmp(const void *a,const void *b)
  6. {
  7.     return *(int *)a-*(int *)b;
  8. }
  9.  
  10. int main(int argc, char **argv)
  11. {
  12.     int *A=NULL,*B=NULL,*R,*I,m=0,n=0,k=0,i,a,b,*poz,numar;
  13.     //A=(int *)malloc(m*sizeof(int));
  14.     FILE *f;
  15.     f=fopen("multA.txt","rt");
  16.     while(!feof(f)) //punctele a) si b)
  17.         {
  18.             fscanf(f,"%d",&a);
  19.             A=(int *)realloc(A,(m+1)*sizeof(int));
  20.             if (m!=0)
  21.                 {
  22.                     qsort(A,m,sizeof(int),cmp);
  23.                     poz=(int *)bsearch(&a,A,m,sizeof(int),cmp);
  24.                     if (!(poz>0))
  25.                         {
  26.                             A[m]=a;
  27.                             m++;
  28.                         }
  29.                 }
  30.             else
  31.                 {
  32.                     A[m]=a;
  33.                     m++;
  34.                 }
  35.         } //Multimea A va avea m elemente
  36.     qsort(A,m,sizeof(int),cmp);
  37.     fclose(f);
  38.     printf("Multimea A: ");
  39.     for(i=0;i<m;i++)
  40.         printf("%d ",A[i]);
  41.     printf("\n");
  42.     //B=(int *)malloc(n*sizeof(int));
  43.     FILE *g;
  44.     g=fopen("multB.txt","rt");
  45.     while(!feof(f)) //punctele c) si d)
  46.         {
  47.             fscanf(f,"%d",&b);
  48.             B=(int *)realloc(B,(n+1)*sizeof(int));
  49.             if (n!=0)
  50.                 {
  51.                     qsort(B,n,sizeof(int),cmp);
  52.                     poz=(int *)bsearch(&b,B,n,sizeof(int),cmp);
  53.                     if (!(poz>0))
  54.                         {
  55.                             B[n]=b;
  56.                             n++;
  57.                         }
  58.                 }
  59.             else
  60.                 {
  61.                     B[n]=b;
  62.                     n++;
  63.                 }
  64.         } //Multimea B va avea n elemente
  65.     qsort(B,n,sizeof(int),cmp);
  66.     fclose(g);
  67.     printf("Multimea B: ");
  68.     for(i=0;i<n;i++)
  69.         printf("%d ",B[i]);
  70.     printf("\n");
  71.     numar=atoi(argv[1]);
  72.     poz=(int *)bsearch(&numar,B,n,sizeof(int),cmp);
  73.     if (poz>0)
  74.         printf("Numarul %d se gaseste in multimea B pe pozitia %d.\n",numar,poz-B+1);
  75.     else
  76.         printf("Numarul %d nu se gaseste in multimea B.\n",numar);
  77.     FILE *h;
  78.     h=fopen("multI.txt","wt"); // punctul f)
  79.     I=(int *)malloc(500*sizeof(int));
  80.     for(i=0;i<m;i++)
  81.         {
  82.             poz=(int *)bsearch(&A[i],B,n,sizeof(int),cmp);
  83.             if (poz>0)
  84.                 {
  85.                     I[k]=A[i];
  86.                     k++;
  87.                 }
  88.         } //Intersectia va avea k elemente
  89.     fprintf(f,"Intersectia: ");
  90.     for(i=0;i<k;i++)
  91.         fprintf(h,"%d ",I[i]);
  92.     FILE *fp=fopen("multR.txt","wt"); //punctul e)
  93.     R=(int *)malloc((m+n-k)*sizeof(int)); //Formula cardinalului reuniunii
  94.     for(i=0;i<m;i++)
  95.         R[i]=A[i];
  96.     int card=m;
  97.     for(i=0;i<n;i++)
  98.         {
  99.             qsort(R,card,sizeof(int),cmp);
  100.             poz=(int *)bsearch(&B[i],R,card,sizeof(int),cmp);
  101.             if (!(poz>0))
  102.                 {
  103.                     R[card]=B[i];
  104.                     card++;
  105.                 }
  106.         }
  107.     qsort(R,card,sizeof(int),cmp);
  108.     for(i=0;i<card;i++)
  109.         fprintf(fp,"%d ",R[i]);
  110.     free(A);
  111.     free(B);
  112.     free(I);
  113.     free(R);
  114. }
Advertisement
Add Comment
Please, Sign In to add comment