Mislim da si dobro skontao zadatak.
Kod ovakvih zadataka se uvek pretpostavlja da niz ima neku maksimalnu granicu do koje se moze najvise ici. To bi bilo kao nesto:
Onda bi vrsio unos u niz i pamtio u posebnoj promenljivoj koliko sam elemenata uneo. Ovako nesto
Kod:
int niz[10000];
int num = 0, tmp = 1;
while (true)
{
scanf("%d",&tmp);
if (tmp == 0)
break;
if (tmp > 0)
niz[num++] = tmp;
}
Posle proteras jednu for petlju od 0 do num-a i proveris uslove.
Za broj brojeva sa ostkom koristi novi niz od maksimalno 11 elemenata (posto ti je tako definisano u zadatku) i u polja sa odgovarajucim indeksom stavljaj brojace (na nultom indeksom broj brojeva sa ostatkom 0, sa indeksom 1 sa ostatkom 1...)
Kod:
int ostatak[11];
for (int i = 0; i< 10 ; i++)
ostatak[i] = 0;
for (i = 0; i < num; i++)
ostatak[niz[i]%n]++;
Naravno pre toga proveri da li je n u odgovarajucem opsegu.
Ako ides u srednju skolu onda sam 99.99% siguran da ti malloc, calloc i realloc (i ostale stvari iz malloc.h) ne trebaju, jer se principi dinamicke memorije tada jos uvek ne uce, mada ni to nije tesko. Da pises "pravu" aplikaciju, onda bi zbog optimizacije memorije morao da koristis malloc.h.