Evo objasnjenja za 1. i 3. zadatak. Ne znam koliko bi ti vredelo da ti se uradi 2. i 4. ako uopste nemas iskustva u programiranju, dok bi 1. i 3. mogao bar da razumes
1. U ovom zadatku ti je data pocetna vrednost za n i za m. While petlja oznacava da ce se naredbe unutar nje izvrsavati dok je uslov zadovoljen (n!=0, != predstavlja razlicito).
Znaci dok je n!=0, izvrsavace se
Code:
m = (10 * m) + (n % 10);
n = n / 10;
n%10 oznacava ostatak pri deljenju sa 10, a n/10 oznacava celobrojno deljenje (jer je n tipa int). Sta se ovde zapravo desava - svaki put ce se m pomnoziti sa 10 i dodace mu se poslednja cifra broja n (jer n%10 zapravo predstavlja poslednju cifru broja n), a sa broja n ce se ukloniti poslednja cifra (jer n/10 predstavlja celobrojno deljenje sa 10 pa se samo uklanja poslednja cifra). Ovo se ponavlja dok se ne prodju sve cifre od broja n (odnosno dok n ne postane 0). Ako bi ispisao prvih par vrednosti za m, lako bi primetio da ce vrednost promenljive m na kraju zapravo biti broj koji ima iste cifre kao i n, samo u obrnutom redosledu - 987654321!
3.
Code:
for (int i = 0; i < 10; i++)
a[i] = 9 ‐ i;
for (int i = 0; i < 10; i++)
a[i] = a[a[i]];
for (int i = 0; i < 10; i++)
cout << a[i];
for je petlja koja promenljivu
i svaki put povecava za 1. Na pocetku je i = 0, a posle svakog izvrsavanja naredbe
Code:
a[i] = 9 - i;
promenljiva
i ce se uvecati za 1.
a predstavlja niz, dok
Code:
a[i]
predstavlja clan niza na i-toj poziciji. Znaci na pocetku ce biti a[0] = 9 - 0; - odnosno na nultoj poziciji niza ce se upisati broj 9. Zatim ce
i da se uveca za 1, pa ce da se izvrsi a[1] = 9 - 1; - odnosno na pozicija prvom mestu u nizu upisace se broj 8. I tako dalje, do poslednjeg kad je a[9]=9-9; - na poslednjoj (devetoj) poziciji zapisace se broj 0. U sledecem koraku
i postaje 10, ali to ne zadovoljava uslov petlje i < 10.
Posle ove petlje niz
a ce biti = 9, 8, 7, 6, 5, 4, 3, 2, 1, 0. Pocetni broj se nalazi na indeksu 0.
Zatim se prelazi na drugu for petlju.
Na pocetku ce biti a[0] = a[a[0]], pa posto je a[0] zapravo 9 (izracunato u prosloj petlji), onda je izraz ekvivalentan a[0]=a[9]. Posto je a[9]=0, onda ce a[0] dobiti vrednost 0.
Zatim a[1]=a[a[1]], sto je a[1]=a[8], sto je a[1]=1.
Zatim a[2]=2;
Zatim a[3]=3;
Zatim a[4]=4;
E sad dolazimo do specificne situacije. Iako se cini da ce a[5] biti jednako broju 5, nije tako. a[5] = a[a[5]]. Iako je pre pocetka izvrsavanje ove petlje na mestu 4 u nizu
a broj 5, mi smo u toku izvrsavanje ove petlje, upravo u prethodnom koraku na a[4] upisali broj 4. Znaci a[5]=4, to jest a[5]=a[4], to jest a[5]=4.
Ako se nastavi sa ovom simulacijom, videce se da ce a[6] da bude 3 (a[6]=a[a[6]], a[6]=a[3], a[6]=3), a[7]=2 itd.
Na kraju ce niz
a da bude = 0, 1, 2, 3, 4, 4, 3, 2, 1, 0
Treca for petlja ispisuje niz redom od 0-tog do 9-tog clana, tako da ce ispis biti
0123443210