[ proka_92 @ 27.11.2010. 14:42 ] @
Pokusavam da napisem program koji ce za svaki uneti element nalaziti poziciju u nizu i umetati ga na tu poziciju, tako da niz ostane sortiran u rastucem poretku. Gde gresim?
Code:
#include<stdio.h>
int main()
{
    int arr[10],i,n,brel=0,tmp,poz,x,z;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        poz=-1;
        scanf("%d",&tmp);
        if(brel==0)
        {
            arr[brel]=tmp;
            brel++;
        }
        else
        {
            for(x=0;x<brel;x++)
            {
                if(arr[x]>tmp)
                {
                    poz=x;
                    break;
                }
            if(poz>=0)
            {
                for(x=brel-1;x>=poz;x--)
                    arr[x+1]=arr[x];
                arr[poz]=tmp;
                brel++;
            }
            else
            {
                arr[brel]=tmp;
                brel++;
            }
            }
        }
    }
    for(i=0;i<n;i++)
        printf("\n%d",arr[i]);
    return 0;
}
[ pajaja @ 27.11.2010. 16:55 ] @
Pozdrav,

sto se tvog resenja tice, ne radi ti kako treba zbog 2 greske.
1:Nisi zatvorio ovu for petlju
Code (c):

            for(x=0;x<brel;x++)
            {
                if(arr[x]>tmp)
                {
                    poz=x;
                    break;
                }
 

odmah posle ovog if-a, vec na kraju. Prebaci } sa kraja na pravo mesto i radice.
2: Ako vec imas definisan niz velicine 10, nema potrebe za unosenjem n posle, ili ako se vec unosi moras da proveris da li je <= od 10 (ili definisane velicine niza).


I moja preporuka sto se resenja problema tice, ako vec imas sortiran niz najbolje je da koristis binarnu pretragu za pronalazenje indeksa niza u koji zelis da ubacis broj. Moraces samo da modifikujes standardnu binarnu pretragu koja u slucaju da nije pronadjen element u nizu vraca -1, da vraca prvi sledeci element.

[ proka_92 @ 27.11.2010. 17:37 ] @
Da, sada radi, hvala :) Sto se druge stavke tice, stavio sam 10 kao maksimalan broj elemenata niza, unosim n samo za testiranje, nije mi potrebna provera, ovo sam radio samo da se prisetim nekih stvari, ova metoda mi treba za resavanje drugog zadatka... Kad budem imao malo vise vremena probacu i sa binarnom pretragom da uradim, za sada cu se drzati ove metode! Hvala na pomoci!