Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Nejasni algoritmi koji me koce...(HITNO)

[es] :: C/C++ programiranje :: C/C++ za početnike :: Nejasni algoritmi koji me koce...(HITNO)

[ Pregleda: 2695 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mladendenic
mladen denic

Član broj: 104645
Poruke: 19
147.91.1.*



Profil

icon Nejasni algoritmi koji me koce...(HITNO)28.01.2007. u 21:09 - pre 209 meseci
Imam ispit za 10 dana i imam puno sitnica koje me koce i nedaju mi da predjem neki nivo u programiranju.

Za to vas molim ako imate strplenja da mi objasnite neke nejasne stvari.

Ako vam je tesko, objasnite mi bar nesto..

1)

#define JEDAN 1
main()
{
unigned int x,i,pom,br_bitova=0,broj_parova=0;
short susedni,bin,x[32],y[32];


scanf("%d",&x);

pom=x; //koja je vrednost za pom

susedni= x&JEDAN //log i operacija ali mi nije jasno kolika je vrednost za susedni

for(i=0; i<sizeof(int)*8;i++) //kolika je vrednost sizeof(int)
.
.
.
pom=pom>>1; //da li ovo pomeranje oznacava i deljene sa 2

}

2)
printf("%7.2f",z); //sta oznacava ovo %7.2f

3)
if(OPCIJA==2)

{
opcija2=getchar();

opcija2=getchar(); //sta oznacava ovo sto se pojavljuje 2 puta


.
.
.
}
4)
scanf("%d",&x);
for(i=0; i<10; i++)
cifre=0;
pom=x;

while(pom) //pom nije ni 1 ni 0 vec x, kako...

{
cifre[pom%10]++; //ovo mi nista nije jasno
.
.
}
5)while(c=getchar() != EOF)
{
text[i++]=c; //ovo nista ne razumem
}



 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Nejasni algoritmi koji me koce...(HITNO)28.01.2007. u 22:42 - pre 209 meseci
Citat:

1)
Code:


#define JEDAN 1
main()
{
unigned int x,i,pom,br_bitova=0,broj_parova=0;
short susedni,bin,x[32],y[32];


scanf("%d",&x);

pom=x; ////koja je vrednost za pom
/*
ovde pom dobija vrednost adrese pocetka niza. Kad na primer napravis niz x, x je u stvari pokazivac na pocetak tog niza.
Kad pristupas elementima npr. x[1] to se prevodi u *(x+1), odnosno dereferencira se jedno mesto unapred od pocetka niza.
Tako je na primer a[i] isto sto i *(a+i), sto je isto kao i *(i+a) i konacno dobijamo i[a]. Cudno izgleda, ali je tako.
*/


susedni= x&JEDAN //log i operacija ali mi nije jasno kolika je vrednost za susedni
/*
Ovo je bit operator za logicno i. Posto imas JEDAN definisano kao 1 znaci sa tim vrsis logicno i.
Na primer ako ti je vrenost za x 00001101 (u praksi ovo je mnogo veci broj), a znas da ti je vrednost JEDAN 00000001, dobices 
da je susedni = 00000001, posto se logicno i radi za svaki bit posebno.
*/


for(i=0; i<sizeof(int)*8;i++) //kolika je vrednost sizeof(int)
/*
sizeof(int) se i koristi bas zbog pitanje koliko ce biti. Odnosno, na razlicitim racunarima int moze da zauzima razlicit broj bita/bajtova.
sizeof vraca broj bajtova koji zauzima argument (obicno je to 4) i kad to pomnozis sa 8 dobijes broj bita (1 bajt = 8 bita)
*/

pom=pom>>1; //da li ovo pomeranje oznacava i deljene sa 2
/*
Da, ovo je shift-ovanje u desno, sto je u binarnom sistemu ekvivalento sa deljenjem sa dva.
*/


}






Citat:

2)
Code:

printf("%7.2f",z); //sta oznacava ovo %7.2f
/*
%7.2f znaci da kad ispisujes realan broj u jednostrukoj preciznosti (to ti kaze ovo f) ostavis 
 mesta za cifre ispred decimalnog zareza i 2 mesta za cifre iza decimalnog zareza.

na primer ako ti je z=16.323, izlas ce ti biti 
_ _ _ _ _16.32 (_ predstavljaju razmake)
*/




Citat:
Code:

3)
if(OPCIJA==2)

{
opcija2=getchar();

opcija2=getchar(); //sta oznacava ovo sto se pojavljuje 2 puta
/*
Pretpostavljam da ovo sluzi da pokupi enter iz buffera tastature, ali za to treba koristiti fpurge. Nisam siguran za ovo.
*/



Citat:

4)
Code:

scanf("%d",&x);
for(i=0; i<10; i++)
cifre=0;
pom=x;

while(pom) //pom nije ni 1 ni 0 vec x, kako...
/*
Pretpostavljam da te ovde buni sto umesto pom treba da stoji logicnki izraz koji vraca tacno ili netaco (1 ili 0), 
ali u c/c++-u je tacno uvek ono sto je razlicito od nule (ne samo jedinica) a netacno ono sto je nula.
*/

{
cifre[pom%10]++; //ovo mi nista nije jasno
/*
Operator % vraca ostatak pri deljenju. Znaci kad pom podelis sa 10, dobijes neki ostatak i taj ostatak koristis da pristupis clanu u nizu koji ima
tu vrednost indexa i njega povecas za jedan.
*/

}


Citat:

5)
Code:


while(c=getchar() != EOF)
{
text[i++]=c; //ovo nista ne razumem
}

/*
Deo c=getchar() != EOF ti cita znak po znak sa tastature dok ne naidje na kraj datoteke.
text[i++]=c jednostacno smesta znak koji si malopre procitao u niz text.
*/



Nisi dao cele zadatke, pa ne mogu da ti tačno kažem šta koji treba da radi. Na primer u ovom četvrtom promenjiju cifre koristiš malo kao vektor, a malo kao skalar, pa sam pisao šta linije bukvalno znače.

Nadam se da će ti ovo pomoći.

Inače, ako sam ja negde pogrešio, molio bih iskusnije da i meni skrenu pažnju na greške :) Hvala...

[Ovu poruku je menjao del-boy dana 29.01.2007. u 06:13 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Nejasni algoritmi koji me koce...(HITNO)

[ Pregleda: 2695 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.