1. Napisati funkciju na programskom jeziku C za spajanje dva učitana niza celih brojeva u rezultujući niz koji sadrži sve elemente iz dva niza *osim onih elemenata koji su isti u oba niza. U glavnom programu uneti dužinu niza i pozvati funkcije za učitavanje i spajanje niza.
*Razlika je samo u delu zadatka gde se traži ispis svih elemenata iz dva niza osim elemenata koji su isti u oba niza.
Da li neko zna da ovaj postojeći kod koji je ovde na forumu okačen preformuliše u ovaj koji se traži?
----------------------------
Podsetnik: kod koji je urađen (na forumu) za ispisivanje svih elemenata koji su isti u oba niza:
------------------------------
code:
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));
min = 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;
system("pause");
}
#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));
min = 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;
system("pause");
}
--------------------------------------------------------------
Hvala vam unapred, za svaku vrstu pomoći!
[Ovu poruku je menjao Mihajlo Cvetanović dana 05.10.2011. u 11:24 GMT+1]