Koliko ja mogu da primetim nizovi u tvom programu su staticki, odnosno nisu alocirani dinamicki. Mada u svakom slucaju imena nizova su pokazivaci bez obzira na nacin alokacije.
Evo ja sam sklopio na brzaka program koji radi ono sto ti zelis, malo mu treba doterivanje ali bitno je da radi posao.
Code:
#include <stdio.h>
#include <stdlib.h>
int pot (int *niz1, int n, int *niz2){
int i, j=0;
for (i=0;i<n;i++) {if ((niz1[i]%2)==0) niz2[j++]=niz1[i];}
return j;
}
int main(){
int *niz1, *niz2, n, m, i;
printf("Unesite dim niza:");
scanf("%d", &n);
/* pretpostavicu da su svi uneseni podaci ispravni i da ima dovoljno mem za niz */
/* naravno ti izvrsi provere u svom programu */
niz1=(int *)calloc(n, sizeof(int));
niz2=(int *)calloc(n, sizeof(int));
printf("Unesite niz:\n");
for(i=0;i<n;i++) scanf("%d", &niz1[i]);
/* ovde ce f-ja pot da vrati dimenziju novog niza pa cemo da izvrsimo realociranje */
m=pot(niz1, n, niz2);
niz2=(int *)realloc(niz2, m*sizeof(int));
printf("Niz bez neparnih je:\n");
for(i=0;i<m;i++) printf("B[%d]=%d\n", i+1, niz2[i]);
printf("Novi broj elemenata niza je: %d\n", m);
free(niz1); free(niz2);
return 0;
}
I drink to make other people interesting.