АСП1/К1 2020 — разлика између измена
Ред 1: | Ред 1: | ||
{{tocright}} | {{tocright}} | ||
[https://rti.etf.bg.ac.rs/rti/ri3sp/rokovi/13S111ASP1_K1_1920.pdf Zadaci na sajtu predmeta.] | [https://rti.etf.bg.ac.rs/rti/ri3sp/rokovi/13S111ASP1_K1_1920.pdf Zadaci na sajtu predmeta.] | ||
== 1. zadatak == | |||
=== Postavka === | |||
Neka je data funkcija random() koja vraća broj 0 ili 1 sa podjednakom verovatnoćom. Objasniti i ilustrovati primerom kako bi se korišćenjem zadate funkcije implementirala funkcija koja vraća vrednost 0 sa verovatnoćom 25%, a sa 1 verovatnoćom od 75%. | |||
=== Rešenje === | |||
U okviru naše nove funkcije pozovemo funkciju random dva puta, i na primer samo u slučaju kada oba puta vrati nulu tada naša nova funkcija vraća nulu, a za sve ostale slučajeve (01, 10, 11) vraća jedan. Na taj način je obezbeđeno da funkcija vraća 0 sa verovatnoćom 25%, a 1 sa verovatnoćom 75%. | |||
== 2. zadatak == | == 2. zadatak == |
Верзија на датум 26. август 2021. у 18:35
1. zadatak
Postavka
Neka je data funkcija random() koja vraća broj 0 ili 1 sa podjednakom verovatnoćom. Objasniti i ilustrovati primerom kako bi se korišćenjem zadate funkcije implementirala funkcija koja vraća vrednost 0 sa verovatnoćom 25%, a sa 1 verovatnoćom od 75%.
Rešenje
U okviru naše nove funkcije pozovemo funkciju random dva puta, i na primer samo u slučaju kada oba puta vrati nulu tada naša nova funkcija vraća nulu, a za sve ostale slučajeve (01, 10, 11) vraća jedan. Na taj način je obezbeđeno da funkcija vraća 0 sa verovatnoćom 25%, a 1 sa verovatnoćom 75%.
2. zadatak
Postavka
Neka je dat stek s1 na kome se nalaze celi brojevi. Korišćenjem dodatnog steka s2, transformisati sadržaj steka s1 tako da on postane neopadajuće uređen niz. Smatrati da su operacije za rad sa stekom već implementirane.
Rešenje
SORT STACK(s1)
max = TOP(s1)
cnt = 0
while (not STACK_IS_EMPTY(s1)) do
x = POP(s1)
if (x > max) then
max = x
end_if
PUSH(s2, x)
cnt = cnt + 1
end_while
while (not STACK_IS_EMPTY(s2)) do
x = POP(s2)
PUSH(s1, x)
end_while
while (cnt) do
num = cnt
tmp = 0
while (num) do
x = POP(s1)
if (x < max) then
PUSH(s2, x)
else
cnt = cnt - 1
tmp = tmp + 1
end_if
num = num - 1
end_while
for i = 1 to tmp do
PUSH(s1, max)
i = i + 1
end_for
if (cnt) then
max = TOP(s2)
while (not STACK_IS_EMPTY(s2)) do
x = POP(s2)
if (x > max) then
max = x
end_if
PUSH(s1, x)
end_while
end_if
end_while