Uspeo sam da resim zadatak naravno uz pomoc svih vas. Zadatak izgleda ovako , ali ponovo postoji mali problem koji cu da objasnim u daljem tekstu.
Code:
#include<stdio.h>
#include<stdlib.h>
main()
{
int n,m,i,min;
int *A,*B,*C;
printf("Unesite broj clanova niza A:");
scanf("%d",&n);
A=citaj(n);
sort(n,A);
printf("Unesite broj clanova niza B:");
scanf("%d",&m);
B=citaj(m);
sort(m,B);
printf("***************************************************\n");
printf("Clanovi niza A:\n");
pisi(n,A);
printf("\n");
printf("Clanovi niza B:\n");
pisi(m,B);
if(m>n){
min = n;
}else{
min = m;
}
C=(int*)malloc(min*sizeof(int));
presek(A,n,B,m,C);
realloc(C,min*sizeof(int));
printf("\n");
printf("***************************************************\n");
printf("***************************************************\n");
printf("Clanovi koji su isti u oba niza su:\n");
for (i=0; i<min; i++)
printf("c[%d]= %d\n", i, C[i]);
printf("***************************************************\n");
printf("***************************************************\n");
free(A);
free(B);
free(C);
getch();
}
int citaj(int n)
{
int i;
int *a;
a=(int*)malloc(n*sizeof(int));
if(a==0)
{
printf("Greska!!! Nema dovoljno memorije!!!");
return 1;
}
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
return realloc(a,n * sizeof(int));
}
int pisi(int n,int *a)
{
int i;
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
printf("%d\n",a[i]);
}
}
int sort(int n, int * a)
{
int i,j,tmp;
if(n<=0) return n;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++) // indeksi i<j
if(a[i]>a[j])
{
tmp=a[i]; // razmena a[i] i a[j]
a[i]=a[j];
a[j]=tmp;
}
return n;
}
int presek( int *A, int set_size1,
int *B, int set_size2,int *rezultat) {
int i,j,k;
k=0;
for (i=0; i<set_size1; i++)
for (j=0; j<set_size2; j++)
if( A[i] == B[j] ) {
rezultat[k++] = A[i];
B[j] = B[set_size2-1];
set_size2--;
break;
};
return k;
}
Slika ispod pokazuje rad programa kada se elementnti jednog niza nalaze u elementima drugog niza u potpunosti.
Slika ispod pokazuje problem kada se u niz C smesta manji broj elemenata nego sto se nalazi u bilo kom od dva niza koja se porede , tacnije problem je u delu koda kada niz C alociram preko malloc tako sto stavim da je duzina niza min*sizeof(int).
E sada to i niije toiliko strasno bitno mi je da je program proradio i da je zadatak resen ali mi je ruzno i nepotrebno da tako ostane.
Hvala svima na pomoci.