/* * Zadatak je bio: * Kreirati funkciju koja odredjuje na koje mesto u nizu treba ubaciti novi element tako da poredak ostane rastuci. * Kreirati funkciju koja yadati element ubacuje na zadato mesto u zadati niz. * Ucitavati brojeve i ubacivati ih u niz takod a bude sortiran kad se unosenje zavrsi. Ucitavanje elemenata se zavrsava kada se ucita 0. Element 0 * ne ulazi u niz. * * Dodatak: * Za niz pored duzine pamtiti i koliko je alocirano mesta za njega. U startu treba alociran prostor za 10 elemenata. Takodje, prilikom ubacivanja, * kad god je potrebno, prosiriti memoriju niza za 10. Ukoliko ima mesta da se yadati broj ubaci u niz, nema potrebe realocirati, vec samo ubaciti. */ #include #include int* AllocateInt1D(int n) { return (int*)malloc(n*sizeof(int)); } void StampajNiz(int *a, int n) { int i; for(i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); } int* Ucitaj(int *n) { int *a; printf("Unesite broj elemenata niza: "); scanf_s("%d",n); a = AllocateInt1D(*n); for(int i = 0; i < *n; i++) { printf("a[%d] = ", i); scanf_s("%d",&a[i]); } return a; } int* UbaciXnaK(int *a, int *n, int x, int k) { if(k <= *n) { a = (int *)realloc(a,((*n)+1)*sizeof(int)); int i; for(i = *n; i > k; i--) a[i] = a[i-1]; a[k] = x; (*n)++; } return a; } int Gde(int *a, int n, int x) { int i; for(i = 0; i < n; i++) if(a[i] > x) return i; return n; } int main() { int n=0; int *x = NULL; int g,t; scanf_s("%d", &t); while(t != 0) { g = Gde(x,n,t); x = UbaciXnaK(x,&n,t,g); scanf_s("%d", &t); } StampajNiz(x,n); system("PAUSE"); return 0; }