31. Sabiranje u različitim brojnim sistemima-rešenje
Objašnjenje zadatka:
Ako je Q!=10 onda je reč o nekom drugom brojnom sistemu, a ne o dekadnom.
Ako je Q=2 onda je reč o BINARNOM brojnom sistemu.
I npr. broj 357 bi bio
357 =3*22 + 5*21 + 7*20
To bi prevedeno na dekadni brojni sistem bio broj
3*4 +5*2 +7*1 = 12+10+7=29
Da bi rešili zadatak u kome treba sabrati dva broja X i Y
za određenu osnovu Q , posmatrajmo primer kada je Q=10
Ako je Q=2 onda je reč o BINARNOM brojnom sistemu.
I npr. broj 357 bi bio
357 =3*22 + 5*21 + 7*20
To bi prevedeno na dekadni brojni sistem bio broj
3*4 +5*2 +7*1 = 12+10+7=29
Da bi rešili zadatak u kome treba sabrati dva broja X i Y
za određenu osnovu Q , posmatrajmo primer kada je Q=10
X = 357 = 3*102 + 5*101 + 7*100
Y=7892 = 7*103 + 8*102 + 9*101 + 2*100
U postupku sabiramo cifre počev od krajnje desne, pa ponavljamo postupak(petlja) sabirajući cifre,
koje su za 1 mesto pomerene ulevo
Pri tome imamo dodatak za sabiranje (dod),
ako je zbir dostigao ili prešao vrednost 10(Q)
koje su za 1 mesto pomerene ulevo
Pri tome imamo dodatak za sabiranje (dod),
ako je zbir dostigao ili prešao vrednost 10(Q)
Algoritam zadatka
- Potrebno je definisati rezultujući broj koji je inicijalizovan na nulu.
- Kroz postupak ponavljanja, upotrebom petlje treba izdvojiti cifre iz oba broja i dodatak(ako postoji).
- Ako je taj zbir manji od 10(Q) dodati ga u rezultujući broj
- Ako je zbir veći od 10(Q) izdvaja se novi dodatak
- a ostatak pri deljenju sa 10(Q) se doda u rezultujući broj
- Postupak se ponavlja dok se ne izdvoje sve cifre
Šematski prikaz algoritma se može videti u nastavku:
Rešenje zadatka
Na slici 2. prikazano je rešenje zadatka u programskom jeziku C.
Prvo se učitava osnova brojnog sistema Q, a zatim se učitavaju brojevi X i Y. Primer opisan u komentarima je za osnovu Q=10, ali je logika ista i kada bi se posmatrala neka druga vrednost za osnovu.
Kroz while petlju se prolazi kroz cifre ta dva broja, idući od cifre skroz desno pa na levo. Cifre se izvlače iz brojeva na ranije opisani način upotrebom deljenja sa stepenima broja 10, kao i traženja ostatka deljenja sa 10 upotrebom operatora "%".
Vrednosti razdvojene sa ";", upisane u komentarima, odgovaraju vrednostima koje se menjaju kroz cikluse. U ovom primeru, ostvareno je 4 ciklusa(vrednost unutar uslova while petlje je 4 puta bila jednaka true).
Dodatak za sabiranje dod je u početku jednak nuli, a u narednim ciklusima zavisi od toga, da li je zbir cifara i dodatka u tekućoj koloni dostigao vrednost Q. Ako jeste, iz rezultata se izdvaja ostatak(to je cifra koja se piše u rezultatu u tekućoj koloni), kao i dodatak za naredni ciklus. Rezultat S se postepeno formira tokom svakog ciklusa dodavanjem člana k*ost, gde je ost cifra, a k odgovarajući stepen broja Q(10 u ovom primeru) sa kojim se cifra množi.
Prvo se učitava osnova brojnog sistema Q, a zatim se učitavaju brojevi X i Y. Primer opisan u komentarima je za osnovu Q=10, ali je logika ista i kada bi se posmatrala neka druga vrednost za osnovu.
Kroz while petlju se prolazi kroz cifre ta dva broja, idući od cifre skroz desno pa na levo. Cifre se izvlače iz brojeva na ranije opisani način upotrebom deljenja sa stepenima broja 10, kao i traženja ostatka deljenja sa 10 upotrebom operatora "%".
Vrednosti razdvojene sa ";", upisane u komentarima, odgovaraju vrednostima koje se menjaju kroz cikluse. U ovom primeru, ostvareno je 4 ciklusa(vrednost unutar uslova while petlje je 4 puta bila jednaka true).
Dodatak za sabiranje dod je u početku jednak nuli, a u narednim ciklusima zavisi od toga, da li je zbir cifara i dodatka u tekućoj koloni dostigao vrednost Q. Ako jeste, iz rezultata se izdvaja ostatak(to je cifra koja se piše u rezultatu u tekućoj koloni), kao i dodatak za naredni ciklus. Rezultat S se postepeno formira tokom svakog ciklusa dodavanjem člana k*ost, gde je ost cifra, a k odgovarajući stepen broja Q(10 u ovom primeru) sa kojim se cifra množi.
Sledeće
Ugnježdene petlje primeri >| |