[ wex-alpha @ 25.04.2004. 14:00 ] @
Nedavno sam probao napraviti mali program koji vrsi gore pomenutu konverziju. Sav sretan sam uraido sljedeci kod:

int i = 0, broj, brojcina [20];
cin >>broj;
do
{
brojcina [i++]=broj%2;
broj/=2;
cout <<"\n"<<broj;

}
while (broj);
cout << brojcina[i++];


Kod je djelomicno radio, ali ostaci dijeljenja koji su trebali ici u array nisu fino radili, dobijao sam samo nekakve nebuloze.

Nekidan mi je kolega doradio kod kako treba da izgleda:

int main()
{
int i = 0, broj, brojcina [20];
cin >>broj;
do
{
brojcina [i++]=broj%2;
broj/=2;
cout <<"\n"<<broj;
}
while (broj);
for(int j = 0; j < i; j++) {
cout << brojcina[i-j -1];
}
cout << endl;

system("PAUSE");
return 0;
}


I to odlicno radi...


Zanima me sta se to desava sa Array, tako da je u mom slucaju samo gluposti izbacivao???





PS

C -- "Jezik koji kombinuje eleganciju i moć asemblera sa čitljivošću i lakoćom održavanja koda asemblera." ????????????????
[ Milan Aksic @ 25.04.2004. 17:13 ] @
"odokativno" (nisam kompajlirao kood), liniju
Code:
cout <<"\n"<<broj;
prepravi u npr.
Code:
for (i--; i >= 0; i--)
    cout << brojcina[i];
U tvojoj liniji, najverovatnije nisi dobijao _ceo_ rezultat, a ne "nebulozni", jer je cout citao do 0 (null).

C -- "Jezik koji kombinuje eleganciju i moć asemblera sa čitljivošću i lakoćom održavanja koda asemblera." !!!!!!!!!!!!!!!!!!!
[ wex-alpha @ 25.04.2004. 20:17 ] @
Ali zanima me sta se to desava u Array-u? Koliko sam shvatio kada inicijaliziram Array, on je u pocetku anuliran, i sta je to bilo pogresno kada sam rekao da ostatak dijeljenja stavlja u njega? Zbog cega treba dodatna FOR petlja???
[ Milan Aksic @ 27.04.2004. 00:07 ] @
Citat:
Ali zanima me sta se to desava u Array-u?

Izvini, ali mozda bi mogao malo bolje da formulises pitanje jer:
Citat:
Citat:
wex-alpha: Zanima me sta se to desava sa Array, tako da je u mom slucaju samo gluposti izbacivao???
Citat:
passenger: U tvojoj liniji, najverovatnije nisi dobijao _ceo_ rezultat, a ne "nebulozni", jer je cout citao do 0 (null).
odnosno, dok ne naidje na 0 (nulu). Ako si mislio na nesto drugo, kopiraj ovde te "gluposti" koje dobijas iz niza.
Citat:
... i sta je to bilo pogresno kada sam rekao da ostatak dijeljenja stavlja u njega?
Nije pogresno. Mozda bi hteo da pogledas http://www.elitesecurity.org/tema/13455 o jednom opstom nacinu, prevodjenja decimalnih brojeva u binarne.
Citat:
Zbog cega treba dodatna FOR petlja???
Mada, postoji vise nacina da se ovakav program napise, ovde dodatna "for" petlja sluzi, da se pojedinacno prikazu elementi niza "brojcina".
[ wex-alpha @ 27.04.2004. 06:57 ] @
Hvala na iscrpnom odgovoru.

Sto se tice konverzija u druge brojne sisteme, sa time sam dobro upoznat. Jos imam jednu nedoumice u vezi Array-a:
Zar kod same inicijalizacije Array-a nisu svi postavljeni na nulu. Ako jesu, kako to da dobijam razlicite rezultate. Jedan je hex, a drugi dec broj
Sljedeci kod:

int broj [20],i;
cout <<"\n"<<broj [20]; //prikaze 37879712
cout <<"\n"<<broj; //prikaze 0x241ff10
cout <<"\n"<<broj [i++];//prikaze 37879664


Kompajler je Dev C++ v4.
[ Reljam @ 27.04.2004. 16:44 ] @
Prvo, niz nije inicijalizovan na nulu kada ga deklarises. Zato dobijas cudne brojeve. Ali nije to jedini uzrok brojeva koje vidis:

1) broj[20] se nalazi van niza, jer niz ide od 0 do 19.
2) broj je pointer, dakle ti vidis vrednost pointera, a ne neki broj iz niza.
3) broj[i++] zavisi od vrednosti i koja je nedefinisana, znaci otprilike kao da si rekao broj[3231]
[ wex-alpha @ 28.04.2004. 07:01 ] @
Hvala... o ti nizovi :)