Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int cmp(const void *a,const void *b)
- {
- return *(int *)a-*(int *)b;
- }
- int main(int argc, char **argv)
- {
- int *A=NULL,*B=NULL,*R,*I,m=0,n=0,k=0,i,a,b,*poz,numar;
- //A=(int *)malloc(m*sizeof(int));
- FILE *f;
- f=fopen("multA.txt","rt");
- while(!feof(f)) //punctele a) si b)
- {
- fscanf(f,"%d",&a);
- A=(int *)realloc(A,(m+1)*sizeof(int));
- if (m!=0)
- {
- qsort(A,m,sizeof(int),cmp);
- poz=(int *)bsearch(&a,A,m,sizeof(int),cmp);
- if (!(poz>0))
- {
- A[m]=a;
- m++;
- }
- }
- else
- {
- A[m]=a;
- m++;
- }
- } //Multimea A va avea m elemente
- qsort(A,m,sizeof(int),cmp);
- fclose(f);
- printf("Multimea A: ");
- for(i=0;i<m;i++)
- printf("%d ",A[i]);
- printf("\n");
- //B=(int *)malloc(n*sizeof(int));
- FILE *g;
- g=fopen("multB.txt","rt");
- while(!feof(f)) //punctele c) si d)
- {
- fscanf(f,"%d",&b);
- B=(int *)realloc(B,(n+1)*sizeof(int));
- if (n!=0)
- {
- qsort(B,n,sizeof(int),cmp);
- poz=(int *)bsearch(&b,B,n,sizeof(int),cmp);
- if (!(poz>0))
- {
- B[n]=b;
- n++;
- }
- }
- else
- {
- B[n]=b;
- n++;
- }
- } //Multimea B va avea n elemente
- qsort(B,n,sizeof(int),cmp);
- fclose(g);
- printf("Multimea B: ");
- for(i=0;i<n;i++)
- printf("%d ",B[i]);
- printf("\n");
- numar=atoi(argv[1]);
- poz=(int *)bsearch(&numar,B,n,sizeof(int),cmp);
- if (poz>0)
- printf("Numarul %d se gaseste in multimea B pe pozitia %d.\n",numar,poz-B+1);
- else
- printf("Numarul %d nu se gaseste in multimea B.\n",numar);
- FILE *h;
- h=fopen("multI.txt","wt"); // punctul f)
- I=(int *)malloc(500*sizeof(int));
- for(i=0;i<m;i++)
- {
- poz=(int *)bsearch(&A[i],B,n,sizeof(int),cmp);
- if (poz>0)
- {
- I[k]=A[i];
- k++;
- }
- } //Intersectia va avea k elemente
- fprintf(f,"Intersectia: ");
- for(i=0;i<k;i++)
- fprintf(h,"%d ",I[i]);
- FILE *fp=fopen("multR.txt","wt"); //punctul e)
- R=(int *)malloc((m+n-k)*sizeof(int)); //Formula cardinalului reuniunii
- for(i=0;i<m;i++)
- R[i]=A[i];
- int card=m;
- for(i=0;i<n;i++)
- {
- qsort(R,card,sizeof(int),cmp);
- poz=(int *)bsearch(&B[i],R,card,sizeof(int),cmp);
- if (!(poz>0))
- {
- R[card]=B[i];
- card++;
- }
- }
- qsort(R,card,sizeof(int),cmp);
- for(i=0;i<card;i++)
- fprintf(fp,"%d ",R[i]);
- free(A);
- free(B);
- free(I);
- free(R);
- }
Advertisement
Add Comment
Please, Sign In to add comment