Prikaz jedne poruke
Stara 31.3.2012, 1:17   #2
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: Pomoc oko programa u C-u

Kod:
// b = niz
int pocetak = 0, kraj = 0, duzina = 0, tmp_pocetak = 0, tmp_kraj = 0, tmp_duzina = 0;

for (int i = 0; i < db; i++)
{
    if (b[i] == 0)
    {
        if (tmp_duzina++ == 0) tmp_pocetak = i;
        tmp_kraj = i;
    }
    else
    {
        if (tmp_duzina > duzina)
        {
            pocetak = tmp_pocetak;
            kraj = tmp_kraj;
        }
        tmp_duzina = 0;
    }
}
Ovo sam napisao na najprimitivniji način na koji sam mogao

Ideja je da čuvaš najveće vrednosti u pocetak, kraj i duzina, i imaš neke pomoćne promenljive koje ćeš da koristiš pri prolasku kroz niz.

for petlja kaže sledeće:

Kod:
ukoliko je trenutni član jednak nuli:
    ukoliko je pomoćna dužina jednaka nuli, znači da je to početak niza nula pa postavljam tmp_pocetak na trenutan broj
    uvećam dužinu za 1
    postavim kraj na trenutan broj

ukoliko nije, ovo je kraj niza ili uopšte nije bio niz:
    ako je dužina niza kog sam trenutno izbrojao veća od dužine nekog prethodnog niza:
        postavi pravi početak na moj pomoćni početak
        postavi pravi kraj na moj pomoćni kraj
    postavi pomoćnu dužinu na 0
EclipsE je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku EclipsE na korisnoj poruci:
absonic (31.3.2012)