zadaci iz qbasic-a

38
1 1. ZADACI S BROJEVIMA 1.1. Napisati program koji će učitati dva broja n1 i n2. Oba broja trebaju biti prirodna. Ako taj uvjet nije ispunjen, ponoviti učitavanje. Ako je n2 < n1, zamijeniti n1 sa n2. Naći i ispisati sumu drugih korijena svih neparnih brojeva od n1 do n2. CLS 10 PRINT "unesi 2 broja" INPUT n1, n2 IF n1 > 0 AND n2 > 0 THEN IF n2 < n1 THEN temp = n2 n2 = n1 n1 = temp END IF ELSE GOTO 10 END IF s! = 0 FOR i = n1 TO n2 IF ((i MOD 2) <> 0) THEN s! = s! + SQR(i) NEXT i PRINT "suma je"; s! 1.2. Napisati program koji će učitati brojeve n1 i n2. Ako je n1 veće od n2, zamijeniti njihove vrijednosti. Naći i ispisati sve proste brojeve u intervalu n1 do n2. INPUT “Unesi dva broja” ; n1, n2 x = n1 y = n2 IF n1 > n2 THEN x = n2 y = n1 END IF FOR i = x TO y br = 0 FOR j = 1 TO i IF i MOD j = 0 THEN br = br + 1 NEXT j IF br = 2 THEN PRINT i NEXT i

Upload: dada-dee

Post on 11-Feb-2015

531 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: Zadaci Iz Qbasic-A

1

1. ZADACI S BROJEVIMA 1.1. Napisati program koji će učitati dva broja n1 i n2. Oba broja trebaju biti

prirodna. Ako taj uvjet nije ispunjen, ponoviti učitavanje. Ako je n2 < n1, zamijeniti n1 sa n2. Naći i ispisati sumu drugih korijena svih neparnih brojeva od n1 do n2.

CLS

10 PRINT "unesi 2 broja"

INPUT n1, n2

IF n1 > 0 AND n2 > 0 THEN

IF n2 < n1 THEN

temp = n2

n2 = n1

n1 = temp

END IF

ELSE

GOTO 10

END IF

s! = 0

FOR i = n1 TO n2

IF ((i MOD 2) <> 0) THEN s! = s! + SQR(i)

NEXT i

PRINT "suma je"; s!

1.2. Napisati program koji će učitati brojeve n1 i n2. Ako je n1 veće od n2, zamijeniti njihove vrijednosti. Naći i ispisati sve proste brojeve u intervalu n1 do n2.

INPUT “Unesi dva broja” ; n1, n2

x = n1

y = n2

IF n1 > n2 THEN

x = n2

y = n1

END IF

FOR i = x TO y

br = 0

FOR j = 1 TO i

IF i MOD j = 0 THEN br = br + 1

NEXT j

IF br = 2 THEN PRINT i

NEXT i

Page 2: Zadaci Iz Qbasic-A

2

1.3. Napisati program koji će pretvoriti vrijeme koje je dano u satima, minutama i sekundama u sekunde. 2 SATA 3 MIN. 38 SEK. = 7817 SEKUNDI

CLS

INPUT "Unesi sat,minute i sekunde"; H, M, S

t = H * 3600 + M * 60 + S

PRINT t

1.4. Napisati program koji će učitati dimenzije sobe (širinu, duljinu i visinu). Učitati duljinu stranice a jedne manje kocke. Svi podaci neka su cijeli brojevi. Izračunati i na ekran ispisati koliko kocki zadane dimenzije stane u sobu zadanih dimenzija.

DO

CLS

INPUT "unesi dimenzije sobe"; d

INPUT s

INPUT v

20 INPUT "unesi duljinu stranice kocke"; a

d = INT(d)

s = INT(s)

v = INT(v)

a = INT(a)

IF a > d OR a > s OR a > v THEN

PRINT "stranica kocke mora biti manja od dimenzija sobe!"

GOTO 20

END IF

br = INT(d / a) * INT(s / a) * INT(v / a)

PRINT "u sobu stane"; br; "kocaka"

30 PRINT "pritisnite 2 za ponavljanje programa"

INPUT x

LOOP WHILE x = 2

1.5. Napisati program koji s tipkovnice učita dva broja (m, n). Program treba ispisati na ekran sve parne brojeve iz intervala [m+n, m*n].

REM Zadatak 1

CLS

INPUT "Unesi 2 broja"; m, n

FOR i = (m + n) TO (m * n)

IF i MOD 2 = 0 THEN PRINT i

NEXT i

Page 3: Zadaci Iz Qbasic-A

3

1.6. Napisati program koji s tipkovnice učita dva broja (m i n). Ako je prvi učitani broj (m) veći od drugoga (n) na ekran treba ispisati sumu učitanih brojeva, a ako je prvi učitani broj manji od drugoga, na ekran treba ispisati produkt učitanih brojeva.

CLS

INPUT "unesi dva broja s tipkovnice"; m, n

IF m > n THEN

PRINT "suma brojeva m i n"

PRINT m + n

ELSE

PRINT "produkt brojeva m i n"

PRINT m * n

END IF

1.7. Napisati program koji će izračunati i na ekran ispisati sumu kvadrata udaljenosti 10 točaka od točke ishodišta (0,0). Koordinate x,y tih 10 točaka učitati preko tipkovnice.

REM Suma kvadrata udaljenosti točaka

CLS

s = 0

FOR i = 1 TO 10

INPUT "Unesi kordinate točke (x,y)", x, y

d2 = x * x + y * y

s = s + d2

NEXT i

PRINT "Suma kvadrata udaljenosti unesenih točaka od ishodišta je "; s

1.8. Napisati program koji će za svaka dva broja x,y koja se učitaju s tipkovnice i predstavljaju koordinate neke točke, izračunati i na ekran ispisati udaljenost do točke s koordinatama (3,-2). Program prekinuti kad se učitaju brojevi 3,-2.

CLS

DO UNTIL x = 3 AND y = -2

INPUT "unesi koordinate točke ", x, y

d! = SQR((x - 3) * (x - 3) + (y + 2) * (y + 2))

PRINT "udaljenost točke ("; x; ","; y; ") od točke (3,-2) je "; d!

LOOP

Page 4: Zadaci Iz Qbasic-A

4

1.9. Napisati program koji će učitati brojeve m i n. Oba broja moraju bit prirodna i m mora biti veći od n. Ako taj uvjet nije ispunjen ponoviti učitavanje. Naći i ispisati binomni koeficijent b jednak m povrh n tj.

( )b m

n m n=

⋅ −!

! ! CLS

1 : INPUT "Unesi 2 prirodna broja"; m, n

SELECT CASE m

CASE IS < n

PRINT "Unesi ponovno brojeve"

GOTO 1

CASE IS > n

b = 1

FOR x = 1 TO m

b = b * x

NEXT x

FOR x = 1 TO n

b = b / x

NEXT x

FOR x = 1 TO (m - n)

b = b / x

NEXT x

CASE IS = n

b = 1

END SELECT

PRINT b

1.10. Napisati program koji će najprije učitati broj n. Broj n mora biti prirodan i veći od 3. Ako taj uvjet nije ispunjen, ispisati poruku o pogreški i ponoviti učitavanje. Naći i ispisati najmanji prosti broj veći od n.

CLS

10 INPUT "unesi prirodan broj "; n

IF (n MOD 2 <> 0) OR (n <= 3) THEN

PRINT "Pogreska!"

GOTO 10

END IF

s = n + 1

x = 0

DO br = 0

FOR i = 2 TO INT(s / 2)

IF s MOD i = 0 THEN br = br + 1

Page 5: Zadaci Iz Qbasic-A

5

NEXT i

IF br = 0 THEN

x = 1

ELSE

s = s + 1

END IF

LOOP UNTIL x = 1

PRINT s

1.11. Simetričan kvadrat je prirodan broj koji je kvadrat drugog prirodnog broja i čije znamenka su simetrične. 121 je takav broj jer je 121=11x11. Napisati program koji će naći sve simetrične kvadrate od 10 do 10000.

CLS

FOR n = 1 TO 10000

s = n * n

t = s

br = 0

i = 0

REM Brojanje znamenki

DO

br = br + 1

t = INT(t / 10)

LOOP WHILE t <> 0

REDIM a(br)

REM Spremanje znamenki

DO

a(i) = s MOD 10

i = i + 1

s = INT(s / 10)

LOOP WHILE s <> 0

br2 = 0

REM provjera simetricnih znamenki

FOR j = 0 TO INT(br / 2 - 1)

IF a(j) = a(br - j - 1) THEN br2 = br2 + 1

NEXT j

REM Ako je simetrican, ispisi!

IF br2 = INT(br / 2) THEN PRINT n * n

NEXT n

Page 6: Zadaci Iz Qbasic-A

6

1.12. Napisati program koji će simulirati istovremeno bacanje dviju kocaka. Baciti kocke zadani n broj puta. Naći u koliko posto slučajeva su se na obje kocke pojavili isti brojevi.

CLS

INPUT "unesi broj bacanja kocaka "; n

FOR i = 1 TO n

RANDOMIZE TIMER

x = INT(RND * 6) + 1

y = INT(RND * 6) + 1

PRINT x, y

IF x = y THEN br = br + 1

NEXT i

p = (br / n) * 100

PRINT "u"; p; "% slucajeva na obje kocke su se pojavili isti brojevi"

END

1.13. Napisati program koji će učitavati n prirodnih brojeva i naći i ispisati broj n koji pokazuje koliko je među učitanim brojevima bilo takvih, kod kojih su prva i posljednja znamenka jednake.

Rješenje 1

CLS

PRINT "unesi broj elemenata niza n;";

INPUT n

DIM x(n)

FOR i = 1 TO n

PRINT "unesi"; i; ".broj"

INPUT x(i)

NEXT i

FOR i = 1 TO n

a1 = x(i) MOD 10

z = x(i)

DO

a2 = z MOD 10

z = INT(z / 10)

LOOP WHILE z >= 1

IF a1 = a2 THEN

PRINT x(i)

br = br + 1

END IF

NEXT i

Page 7: Zadaci Iz Qbasic-A

7

PRINT "Ukupno je bilo "; br; " brojeva sa istom prvom i zadnjom znamenkom"

Rješenje 2

CLS

INPUT "Odredi dimenziju niza"; n

DIM a$(n)

FOR i = 1 TO n

INPUT "Unesi član niza"; a$(i)

NEXT i

b = o

FOR i = 1 TO n

IF (MID$(a$(i),1,1)=MID$(a$(i),LEN(a$(i)),1)) THEN b=b+1

NEXT i

PRINT "Koliźina brojeva kojima je prva i zadnja znamenka ista:"; b

END

1.14. Napisati program koji će pronaći i na ekran ispisati sve brojeve u intervalu od 100 do 1000 kojima je suma prve i zadnje znamenke jednaka srednjoj znamenci.

Rješenje 1 CLS

PRINT "suma znamenaka"

DIM a(3)

FOR i = 100 TO 999

z = i

FOR j = 1 TO 3

a(j) = z MOD 10

z = INT(z / 10)

NEXT j

IF (a(1) + a(3)) = a(2) THEN PRINT i

NEXT i

Rješenje 2 CLS

FOR i = 100 TO 999

p = INT(i / 100)

z = i MOD 10

s = INT(i / 10) MOD 10

IF p + z = s THEN PRINT i

NEXT i

Page 8: Zadaci Iz Qbasic-A

8

1.15. Napisati program koji će učitati koeficijente a, b, c, d, e, f dviju linearnih jednadžbi sa dvije nepoznanice. Jednadžbe su ax+by=c i dx+ey=f. Izračunati i ispisati rješenja x i y ovih dviju linearnih jednadžbi.

REM Sustav linearnih jednadžbi

CLS

PRINT "Rješava se sustav dviju linearnih jednadžbi sa dvije nepoznanice"

PRINT "Jednadžbe su ax+by=c , dx+ey=f"

INPUT "Unesi koeficjente a,b,c,d,e,f ", a, b, c, d, e, f

IF (a = b AND a = c AND d = e AND d = f) OR ((a = 0 AND b = 0 AND c = 0) OR (d = 0 AND e = 0 AND f = 0)) THEN

PRINT "Jednadžba ima beskonačno mnogo rješenja"

GOTO 10

ELSEIF (b * d = a * e) THEN

PRINT "Jednadžba nema rješenja"

GOTO 10

ELSE

y! = (a * f - d * c) / (a * e - b * d)

x! = (b * f - e * c) / (b * d - a * e)

PRINT "x="; x!, "y="; y!

END IF

10 END

1.16. Napisati program koji će simulirati bacanje kocke. Baciti kocku 6000 puta i naći i ispisati broj pojavljivanja svakog od brojeva 1 do 6. Koristiti Rnd funkciju.

CLS

FOR i = 1 TO 60

x = INT(RND(1) * 6 + 1)

PRINT x

SELECT CASE x

CASE IS = 1

br1 = br1 + 1

CASE IS = 2

br2 = br2 + 1

CASE IS = 3

br3 = br3 + 1

CASE IS = 4

br4 = br4 + 1

CASE IS = 5

br5 = br5 + 1

CASE IS = 6

Page 9: Zadaci Iz Qbasic-A

9

br6 = br6 + 1

END SELECT

NEXT i

PRINT "Broj 1 se pojavio"; br1; "puta"

PRINT "Broj 2 se pojavio"; br2; "puta"

PRINT "Broj 3 se pojavio"; br3; "puta"

PRINT "Broj 4 se pojavio"; br4; "puta"

PRINT "Broj 5 se pojavio"; br5; "puta"

PRINT "Broj 6 se pojavio"; br6; "puta"

END

1.17. Za potrebe nekog sportskog natjecanja, potrebno je za svakog takmičara odrediti mjesto koje je on zauzeo na temelju postignutog rezultata (vremena) t. Svaki takmičar ima svoj startni broj s. Napisati program koji će učitavati podatke o startnom broju takmičara i o njegovom postignutom vremenu t i ispisati poruku: Takmičar xxx, vrijeme xxxx.xx ; xxx. mjesto Kada su učitani svi podaci (kada je takmičenje završeno) program treba ispisati redoslijed svih takmičara. Taj ispis treba imati izgled: Br. Takm. Vrijeme 1 xxx xxxx.xx 2 xxx xxxx.xx

CLS

INPUT "unesi broj koliko je takmičara sudjelovalo na natjecanju"; n

DIM b(n)

DIM t(n)

FOR i = 1 TO n

INPUT "unesi startni broj takmičara"; b(i)

INPUT "unesi vrijeme t"; t!(i)

PRINT "takmičar"; b(i); "vrijeme"; t!(i); "xxx. mjesto"

NEXT i

FOR i = 1 TO n

FOR j = i + 1 TO n

IF t!(j) < t!(i) THEN

a = t!(j)

c = b(j)

t!(j) = t!(i)

b(j) = b(i)

t!(i) = a

b(i) = c

END IF

NEXT j

Page 10: Zadaci Iz Qbasic-A

10

NEXT i

SLEEP (2)

PRINT "----------------------"

PRINT "br. takm. vrijeme"

FOR i = 1 TO n

PRINT i; " "; b(i); " "; t!(i)

NEXT i

1.18. Napisati program koji će pretvoriti vrijeme koje je dano u sekundama u sate, minute i sekunde. 3818 SEKUNDI = 1 SAT 3 MIN. 38 SEK.

CLS

INPUT "unesi vrijeme u sekundama"; s

h = INT(s / 3600)

m = INT((s - 3600 * h) / 60)

s = s - (h * 3600) - (m * 60)

PRINT "vrijeme u satima minutama i sekundama je :"

PRINT h; ":"; m; ":"; s

1.19. Napisati program koji će na ekran ispisati sve brojeve koji su djeljivi sa 3 a nisu djeljivi sa 7 između 1000 i 10000.

FOR x = 1000 TO 10000

IF x MOD 3 = 0 THEN

IF x MOD 7 > 0 THEN PRINT x

NEXT x

1.20. Napisati program koji će na ekran ispisati sve brojeve koji su djeljivi s brojem 7 a nisu djeljivi s brojem 9 između 500 i 15000.

CLS

FOR i = 500 TO 15000

IF i MOD 7 = 0 AND i MOD 9 <> 0 THEN PRINT i

NEXT i

1.21. Napisati program koji će učitati a,b koeficijente pravca y=ax+b. Učitati također koordinate točke x0,y0. Treba pronaći i ispisati najkraću udaljenost te točke do pravca i jednadžbu pravca koji je okomit na originalni pravac a prolazi kroz (x0,y0).

CLS

INPUT "unesi koeficijente pravca"; a, b

INPUT "unesi koordinate toźke"; x0, y0

k = -1 / a

q = -k * x0 + y0

d = ABS((-a * x0 + y0 - b) / SQR(a * a + 1))

PRINT "y="; k; "x+"; q

PRINT "Udaljenost toźke je"; d

Page 11: Zadaci Iz Qbasic-A

11

1.22. Napisati program koji će učitati dva prirodna broja a i b tako da je a>=b, a,b<15. Izračunati x=(a!)/((a-b)!b!) i ispisati na ekran (! je oznaka za faktorijele).

s1 = 1

s2 = 1

s3 = 1

PRINT "uc 2 br a i b td je a>=b i a i b<15"

10 INPUT "unesi a"; a

INPUT "unesi b"; b

IF a >= b AND b < 15 THEN

FOR i = 1 TO a

s1 = s1 * i

NEXT i

FOR i = 1 TO a - b

s2 = s2 * i

NEXT i

FOR i = 1 TO b

s3 = s3 * i

NEXT i

ELSE

PRINT "trebas unit br takve da je a>=b i b<15"

GOTO 10

END IF

x = s1 / (s2 * s3)

PRINT "x="; x

1.23. Napisati program koji će učitati broj n koji mora biti veći od 10. Ako taj uvjet nije ispunjen, ispisati poruku o pogreški i prekinuti rad programa. Naći i ispisati najveći prosti broj manji od n.

REM "****prosti broj****"

CLS

INPUT a

IF a > 10 THEN

11 a = a - 1

i = 2

10 IF i < a THEN

IF a MOD i = 0 THEN

GOTO 11

ELSE i = i + 1

GOTO 10

END IF

Page 12: Zadaci Iz Qbasic-A

12

ELSE

PRINT a

END IF

ELSE

PRINT "error!"

END IF

1.24. Napisati program koji će najprije učitati prirodan broj n i realan broj x. Program treba naći i ispisati sumu prvih n članova niza s=1+x/1!+x^2/2!+..+x^n/n! (^ označava potenciranje).

u = 1

s = 1

10 INPUT "Unesi prirodan broj n="; n

IF n = INT(n) THEN

INPUT "Uesi realan broj m="; m!

FOR i = 1 TO n

u = u * i

a = m ^ i / u

s = s + a

NEXT i

ELSE

GOTO 10

END IF

PRINT "Suma prvih n źlanova niza je s="; s

1.25. Napisati program koji će s tastature učitati prirodni broj i naći i ispisati sve proste faktore toga broja.

INPUT "Unesi prirodni broj"; n

FOR i = 2 TO n

10 IF n MOD i = 0 THEN

PRINT i

n = n / i

GOTO 10

END IF

NEXT i

1.26. Napisati program za pretvorbu binarnog broja u dekadski. PRINT "ucitaj binarni broj"

INPUT bin

n = 0

dek = 0

WHILE bin <> 0 THEN

Page 13: Zadaci Iz Qbasic-A

13

a = bin MOD 10

dek = dek + a * 2 ^ n

n = n + 1

bin = bin / 10

WEND

PRINT "broj pretvoren iz binarnog u dekatdki sustav je "; dek

1.27. Napisati program za pretvorbu heksadekadskog broja u dekadski. pot = 1

INPUT a$

REM PRINT LEN(a$)

duzina = LEN(a$)

i = 1

DO WHILE (i <= duzina)

slovo$ = MID$(a$, duzina - i + 1, 1)

IF UCASE$(slovo$) = "A" THEN

znamenka(i) = 10

ELSEIF UCASE$(slovo$) = "B" THEN

znamenka(i) = 11

ELSEIF UCASE$(slovo$) = "C" THEN

znamenka(i) = 12

ELSEIF UCASE$(slovo$) = "D" THEN

znamenka(i) = 13

ELSEIF UCASE$(slovo$) = "E" THEN

znamenka(i) = 14

ELSEIF UCASE$(slovo$) = "F" THEN

znamenka(i) = 15

ELSE

znamenka(i) = VAL(slovo$)

END IF

i = i + 1

LOOP

i = 1

DO WHILE (i <= duzina)

REM PRINT znamenka(i)

sum = sum + znamenka(i) * pot

pot = pot * 16

i = i + 1

LOOP

PRINT sum

Page 14: Zadaci Iz Qbasic-A

14

1.28. Pitagorini brojevi su prirodni brojevi i1, i2 i i3 koji zadovoljavaju uvjet i1*i1+i2*i2=i3*i3. Napisati program koji će naći i ispisati sve Pitagorine brojeve manje od 1000.

PRINT "Pitagorini brojevi su:"

FOR i1 = 1 TO 1000

FOR i2 = 1 TO 1000

FOR i3 = 1 TO 1000

IF i1 * i1 + i2 * i2 = i3 * i3 THEN

PRINT "i1="; i1; " i2="; i2; " i3="; i3

END IF

NEXT i3

NEXT i2

NEXT i1

1.29. Napisati program koji će s tipkovnice učitati prvo dva cijela broja (M i N) koji predstavljaju donju (M) i gornju (N) granicu intervala. Pronaći i na ekran ispisati sumu parnih i sumu neparnih brojeva unutar zadanog intervala.

INPUT "unesi dva broja,manji pa veci"; m, n

IF n < m THEN

t = m

m = n

n = t

END IF

sump = 0

sun = 0

FOR i = m TO n

IF i MOD 2 = 0 THEN

sump = sump + i

ELSE

sumn = sumn + i

END IF

NEXT i

PRINT sump, sumn

1.30. Napisati program koji će na ekran ispisati sve parne brojeve koji su djeljivi s brojem 3 i nalaze se u intervalu između 100 i 1000.

CLS

FOR i = 102 TO 1000 STEP 6

PRINT i

SLEEP 1

NEXT i

Page 15: Zadaci Iz Qbasic-A

15

1.31. Napisati program koji će učitavati podatke o godini upisa (GOD) i spolu (SPOL) studenata. GOD je cijeli broj koji može biti od 1 do 4. Spol je cijeli broj koji može biti 1 (muški) ili 2 (ženski). Učitane podatke treba tabelirati i dobivenu tabelu ispisati tako, da njen izgled bude slijedeći: PODACI O STUDENTIMA PO GODINAMA MUŠKI ŽENSKI UKUPNO 1. GOD. xxxx xxxx xxxx 2. GOD. xxxx xxxx xxxx 3. GOD. xxxx xxxx xxxx 4. GOD. xxxx xxxx xxxx UKUPNO: xxxx xxxx xxxx

DIM GOD(2, 4)

FOR i = 1 TO 2

FOR j = 1 TO 4

GOD(i, j) = 0

NEXT j

NEXT i

PRINT "Koliko ima studenata?"

INPUT n

FOR k = 1 TO n

PRINT "Unesi godinu upisa"; k; ". studenta:"

INPUT g

PRINT "Unesi spol"; k; ". studenta, za muski unesi 1, a za zenski 2:"

INPUT s

FOR i = 1 TO 2

FOR j = 1 TO 4

IF g = j AND s = i THEN

GOD(i, j) = GOD(i, j) + 1

END IF

NEXT j

NEXT i

NEXT k

PRINT TAB(15); "muski"; TAB(25); "zenske "; "ukupno"

FOR j = 1 TO 4

PRINT j; ". godina: "; GOD(1, j); TAB(25); GOD(2, j); " "; GOD(1, j) + GOD(2, j)

NEXT j

ukm = 0

ukz = 0

FOR j = 1 TO 4

ukm = ukm + GOD(1, j)

ukz = ukz + GOD(2, j)

Page 16: Zadaci Iz Qbasic-A

16

NEXT j

PRINT " ukupno: "; ukm; TAB(25); ukz

1.32. Napisati program koji ispituje da li se točka sa koordinatama zadanim sa tipkovnice nalazi na kružnici, unutar kružnice ili van nje

PRINT "Unesi radijus kru§nice:"

INPUT r

INPUT "Unesi koordinatu x:"; x

INPUT "Unesi koordinatu y:"; y

IF SQR(x * x + y * y) = r THEN

PRINT "Točka(";x;",";y;")leži na kružnici radijusa:"; r

ELSE

IF SQR(x * x + y * y) < r THEN

PRINT "Točka(";x;",";y;")nalazi se unutar kružnice radijusa:"; r

ELSE

PRINT "Točka(";x;",";y;") nalazi se izvan kružnice radijusa :"; r

END IF

END IF

1.33. Napisati program za pretvorbu oktalnog broja u dekadski. 1 INPUT "Unesi broj oktalnog brojevnog sustava: "; n$

s = 0

FOR i = LEN(n$) TO 1 STEP -1

c$ = MID$(n$, i, 1)

c = VAL(c$)

IF c >= 0 AND c < 8 THEN

s = s + c * 8 ^ (LEN(n$) - i)

ELSE

PRINT "Uneseni broj nije oktalni broj"

GOTO 1

END IF

NEXT i

PRINT "Ekvivalent u dekadskom brojevnom sustavu je:"; s

1.34. Napisati program za pretvorbu heksadekadskog broja u oktalni. Rješenje 1

CLS

PRINT "Unesi heksadekadski broj:"

INPUT a$

b = LEN(a$)

r$ = "00"

Page 17: Zadaci Iz Qbasic-A

17

FOR i = 1 TO b

y$ = MID$(a$, i, 1)

SELECT CASE y$

CASE "0"

r$ = r$ + "0000"

CASE "1"

r$ = r$ + "0001"

CASE "2"

r$ = r$ + "0010"

CASE "3"

r$ = r$ + "0011"

CASE "4"

r$ = r$ + "0100"

CASE "5"

r$ = r$ + "0101"

CASE "6"

r$ = r$ + "0110"

CASE "7"

r$ = r$ + "0111"

CASE "8"

r$ = r$ + "1000"

CASE "9"

r$ = r$ + "1001"

CASE "A"

r$ = r$ + "1010"

CASE "B"

r$ = r$ + "1011"

CASE "C"

r$ = r$ + "1100"

CASE "D"

r$ = r$ + "1101"

CASE "E"

r$ = r$ + "1110"

CASE "F"

r$ = r$ + "1111"

END SELECT

NEXT i

v$ = ""

l$ = ""

n = LEN(r$)

Page 18: Zadaci Iz Qbasic-A

18

FOR i = n - 2 TO 1 STEP -3

v$ = MID$(r$, i, 3)

SELECT CASE v$

CASE "000"

l$ = l$ + "0"

CASE "001"

l$ = l$ + "1"

CASE "010"

l$ = l$ + "2"

CASE "011"

l$ = l$ + "3"

CASE "100"

l$ = l$ + "4"

CASE "101"

l$ = l$ + "5"

CASE "110"

l$ = l$ + "6"

CASE "111"

l$ = l$ + "7"

END SELECT

NEXT i

z$ = ""

FOR i = LEN(l$) TO 1 STEP -1

c$ = MID$(l$, i, 1)

z$ = z$ + c$

NEXT i

PRINT "Heksadekadski broj:"; a$; " u oktalnom je zapisu broj:"; z$

Rješenje 2 PRINT "Unesi heksadekadski broj!"

INPUT a$

b = LEN(a$)

c$ = ""

FOR i = b TO 1 STEP -1

x$ = MID$(a$, i, 1)

c$ = c$ + x$

NEXT i

S = 0

FOR i = 0 TO b - 1

y$ = MID$(c$, i + 1, 1)

Page 19: Zadaci Iz Qbasic-A

19

SELECT CASE y$

CASE "0"

S = S + 0

CASE "1"

S = S + 16 ^ i

CASE "2"

S = S + 2 * 16 ^ i

CASE "3"

S = S + 3 * 16 ^ i

CASE "4"

S = S + 4 * 16 ^ i

CASE "5"

S = S + 5 * 16 ^ i

CASE "6"

S = S + 6 * 16 ^ i

CASE "7"

S = S + 7 * 16 ^ i

CASE "8"

S = S + 8 * 16 ^ i

CASE "9"

S = S + 9 * 16 ^ i

CASE "A"

S = S + 10 * 16 ^ i

CASE "B"

S = S + 11 * 16 ^ i

CASE "C"

S = S + 12 * 16 ^ i

CASE "D"

S = S + 13 * 16 ^ i

CASE "E"

S = S + 14 * 16 ^ i

CASE "F"

S = S + 15 * 16 ^ i

END SELECT

NEXT i

PRINT "Heksadekadski broj "; a$; " u dekadskom zapisu je:"; S

M = S

j = 0

DO WHILE S > 0

k = S MOD 8

Page 20: Zadaci Iz Qbasic-A

20

S = FIX(S / 8)

j = j + 1

LOOP

DIM n(j)

d = 1

DO WHILE M > 0

n(d) = M MOD 8

M = FIX(M / 8)

d = d + 1

LOOP

r$ = ""

FOR i = j TO 1 STEP -1

r$ = r$ + STR$(n(i))

NEXT i

PRINT "Heksadekadski broj "; a$; " u oktalnom zapisu je:"; r$

1.35. Napisati program koji će učitati dvije točke u trodimenzionalnom prostoru A=(x1,y1,z1) i B=(x2,y2,z2). Program treba ispisati na ekran kolika je udaljenost između točaka A i B.

INPUT “Unesi koordinate točke A” ; x1, y1, z1

INPUT “Unesi koordinate točke B” ; x2, y2, z2

x = ( x2 – x1 )^2

y = ( y2 – y1 )^2

z = ( z2 – z1 )^2

sum = x + y + z

d = SQR ( sum )

PRINT d

1.36. Napisati program koji će učitavati n prirodnih brojeva i naći i ispisati broj n koji pokazuje koliko je među učitanim brojevima bilo takvih, kod kojih su prva i posljednja znamenka jednake.

INPUT "Koliko zelis brojeva"; n

br = 0

FOR i = 1 TO n

INPUT "Unesi broj:"; x$

SELECT CASE LEFT$(x$, 1)

CASE "-"

a$ = MID$(x$, 2, 1)

b$ = RIGHT$(x$, 1)

a = VAL(a$)

b = VAL(b$)

IF a = b THEN br = br + 1

Page 21: Zadaci Iz Qbasic-A

21

CASE ELSE

IF LEFT$(x$, 1) = RIGHT$(x$, 1) THEN br = br+1

IF LEN(x$) = 1 THEN br = br - 1

END SELECT

NEXT i

PRINT br; "je/su broj-a koja imaju prvu i zadnju znamenku jednaku."

1.37. Napisati program za pretvorbu dekadskog broja u binarni. REM Pretvaranje dekadskih brojeva u binarne

DIM b(1000)

INPUT „Unesi broj:“ ; a

n = 0

DO WHILE a > 0

n = n +1

b(n) = a MOD 2

a = FIX(a / 2)

LOOP

PRINT „ Odgovarajući binarni broj je:“

FOR i = n TO 1 STEP -1

PRINT b(i)

NEXT i

1.38. Napisati program za pretvorbu oktalnog broja u heksadekadski. 10 INPUT "Unesi broj u oktalnom brojevnom sustavu."; a

i = 0

z = 1

DO UNTIL a = 0

z = a MOD 10

IF z > 7 THEN GOTO 10

dek = dek + z * 8 ^ i

i = i + 1

a = INT(a / 10)

LOOP

h$ = HEX$(dek)

PRINT h$

Napisati program koji će učitati radijus kugle R2 i radijus njoj koncentrične manje kugle R1. Ponavljati učitavanje R1 sve dok se ne učita manji broj od R2. Izračunati i na ekran ispisati koliko iznosi volumen prostora između te dvije kugle.

Svaki paran broj može se prikazati kao suma dvaju prostih brojeva (tkzv. Goldbachovo pravilo). Napisati program koji će najprije učitati dva prirodna broja n1 i n2. Ako je n1 > n2

Page 22: Zadaci Iz Qbasic-A

22

zamijeniti n1 sa n2. Prikazati sve parne brojeve u intervalu n1 do n2 kao sumu dvaju prostih brojeva.

Napisati program za pretvorbu dekadskog broja u oktalni.

Napisati program za pretvorbu dekadskog broja u heksadekadski.

Napisati program koji će učitati dva broja n1 i n2. Oba broja trebaju biti prirodna. Ako taj uvjet nije ispunjen, ponoviti učitavanje. Ako je n2 < n1, zamijeniti n1 sa n2. Naći i ispisati sumu drugih korijena svih neparnih brojeva od n1 do n2.

Napisati program koji će učitavati cijele brojeve sve dok se ne učita broj manji od 0. Za svaki učitan broj ispisati na ekran koliko ga puta možemo cjelobrojno podijeliti sa 2 dok ne dobijemo broj 0.

Napravi program koji računa površinu kružnog isječka. Polumjer kružnice i kut u stupnjevima unesite sa tipkovnice odvojene razmakom.

Unesite koordinate vrhova trokuta.Izračunajte duljine stranica trokuta i ispišite ih, te odredite da li je trokut raznostraničan,jednakokračan ili jednakostraničan.

Unesi katete pravokutnog trokuta i izračunaj hipotenuzu, te kutove trokuta u stupnjevima.

Napišite izbornik za izračun površine geometrijskih likova: kvadrata, pravokutnika i trokuta. Kao elementi za izračun unose se duljine stranica likova.

Unesite dva broja putem tipkovnice i zatim nađite najveći broj sa kojim su oba broja djeljiva i ispišite ga (tzv. najveća zajednička mjera).

Napisati program koji će izračunati i ispisati površinu piramide koja ima bazu kvadrat stranice a, bridove duljine b. Vrijednosti a i b je potrebno učitati putem tastature.

Napisati program koji će učitati dva pravca u obliku y=ax+b i y=cx+d, znači a,b,c,d učitati putem tipkovnice. Program treba pronaći i ispisati da li se ta dva pravca sijeku i ako da u kojoj točki.

Napisati program koji ispituje da li se točka sa koordinatama zadanim sa tipkovnice nalazi na kružnici, unutar kružnice ili van nje.

Napisati program koji će pronaći sve brojeve između 150 i 410 koji su jednaki sumi kubova svojih znamenki. N= 153 N= 370 N= 371 N= 407

Napisati program koji će pronaći i na ekran ispisati sve brojeve iz intervala [10, 10000] čija je suma znamenaka djeljiva sa svim znamenkama tog broja (nule ne uzimati u obzir).

Napisati program koji će izračunati i na ekran ispisati sumu svih četveroznamenkastih brojeva koji su djeljivi s 13, a zadnja znamenka im nije 8.

Napisati program koji će učitavati cijele brojeve sve dok se ne učita broj 0. Za sve učitane brojeve pronaći koliko puta se ponovila znamenka 4 i taj rezultat na kraju kad se učita 0 ispisati na ekran.

Napisati program koji će učitavati cijele brojeve s tipkovnice sve dok se ne učita broj manji ili jednak nuli (0). Za svaki učitani broj izračunati i na ekran ispisati sumu parnih znamenki broja.

Page 23: Zadaci Iz Qbasic-A

23

Napisati program koji ispituje da li se točka sa koordinatama zadanim sa tipkovnice nalazi na kružnici, unutar kružnice ili van nje.

Napisati program koji će pronaći i na ekran ispisati sve brojeve koji su djeljivi s 13 a nisu djeljivi sa 7 iz intervala [10, 10000].

2. ZADACI SA STRINGOVIMA 2.1. Napisati program koji će učitati string. Treba izračunati duljinu stringa.

Ako duljina nije djeljiva sa 4 onda dopuniti string sa znakom ‘.’. Točkice staviti na kraj stringa tako da duljina stringa bude djeljiva sa 4. Tako dobiveni string ispisati ponovno na ekran.

INPUT "unesi string"; a$

WHILE LEN(a$) MOD 4 <> 0

a$ = a$ + "."

WEND

PRINT a$

2.2. Napisati program koji će učitati rimski broj u obliku stringa. Izračunati vrijednost toga broja i ispisati na ekran.

DECLARE FUNCTION provjera (a$)

12 DATA "I", 1, "V", 5, "X", 10, "L", 50, "C", 100, "D", 500, "M", 1000

REM unos

PRINT "Unesi rimski broj :";

INPUT a$

a$ = UCASE$(a$)

REM rastavljanje rimskog broja

n1 = LEN(a$)

DIM x1$(n1)

FOR i = 1 TO n1

x1$(i) = MID$(a$, i, 1)

NEXT i

REM provjera sub

COLOR 18: PRINT "!!! NAPOMENA !!! ==> Provjera broja nije potpuna"

COLOR 7: PRINT "Zelis li provjeru rimskog broja?(D/N):";

INPUT o$

IF UCASE$(o$) = "D" THEN

p = provjera(a$)

IF p = 12 THEN GOTO 12

IF p = 13 THEN GOTO 13

END IF

Page 24: Zadaci Iz Qbasic-A

24

13 REM pretvorba

FOR i = 1 TO n1

FOR j = 1 TO 10

READ z$

IF z$ = x1$(i) THEN

READ x1(i)

RESTORE

GOTO 10

END IF

READ k

NEXT j

10 NEXT i

REM sumiranje

FOR i = 1 TO n1 - 1

IF x1(i) < x1(i + 1) THEN

S = S - x1(i)

GOTO 20

END IF

S = S + x1(i)

20 NEXT i

S = S + x1(n1)

PRINT ""

REM ispis

PRINT "Rimski broj "; a$; " iznosi "; S

END

FUNCTION provjera (a$)

21 REM rastavljanje rimskog broja

n = LEN(a$)

DIM x$(n)

FOR i = 1 TO n

x$(i) = MID$(a$, i, 1)

NEXT i

DIM x(n)

B = 23

23 REM slova

FOR i = 1 TO n

IF x$(i) <> "I" AND x$(i) <> "V" AND x$(i) <> "X" AND x$(i) <> "L" AND x$(i) <> "C" AND x$(i) <> "D" AND x$(i) <> "M" THEN

PRINT "Slovo";x$(i);"nije rimski broj!"

Page 25: Zadaci Iz Qbasic-A

25

ff = 2

END IF

NEXT i

B = B + 1

IF ff = 2 THEN GOTO 1

24 REM pretvorba

FOR i = 1 TO n

FOR j = 1 TO 10

READ z$

IF z$ = x$(i) THEN

READ x(i)

RESTORE

GOTO 0

END IF

READ k

NEXT j

0 NEXT i

B = B + 1

25 REM stupanj

FOR i = 1 TO n - 1

IF x(i) < x(i + 1) AND x(i + 1) / x(i) <> 10 AND x$(i) + x$(i + 1) <> "IV" AND x$(i) + x$(i + 1) <> "XL" AND x$(i) + x$(i + 1) <> "CD" THEN

PRINT "Netocan rimski broj!"

PRINT "Nepostojeci rimski broj =/= "; x$(i); x$(i + 1)

ff = 1

END IF

NEXT i

B = B + 1

IF ff = 1 THEN GOTO 2

26 REM v,l,d

FOR i = 1 TO n

IF x$(i) = "V" THEN

bV = bV + 1

ELSEIF x$(i) = "L" THEN

bL = bL + 1

ELSEIF x$(i) = "D" THEN

bD = bD + 1

ELSE

GOTO 252

Page 26: Zadaci Iz Qbasic-A

26

END IF

252 NEXT i

IF bV > 1 THEN PRINT "Netocan rimski broj! (broj pojavljivanja slova V veci od 1)"

IF bL > 1 THEN PRINT "Netocan rimski broj! (broj pojavljivanja slova L veci od 1)"

IF bD > 1 THEN PRINT "Netocan rimski broj! (broj pojavljivanja slova D veci od 1)"

B = B + 1

IF bV > 1 OR bL > 1 OR bD > 1 THEN ff = 1

IF ff = 1 THEN GOTO 2

27 REM i,x,c

DIM h$(3)

h$(1) = "I"

h$(2) = "X"

h$(3) = "C"

FOR i = 1 TO 3

FOR j = 1 TO n - 1

IF x$(j) <> h$(i) THEN

bs = 0

ELSE

bs = bs + 1

END IF

IF bs >= 2 AND x(j) < x(j + 1) THEN

PRINT "Greska! "; x$(j - 1); x$(j); x$(j + 1); " nije dozvoljen rimski broj!"

ff = 1

END IF

IF bs > 3 THEN

PRINT "Netocan rimski broj! (slovo "; h$(i); " se pojavilo"; bs; " puta u nizu)"

ff = 1

END IF

NEXT j

NEXT i

FOR i = 1 TO n

IF x$(i) = "M" THEN fm = 1

IF x$(i) <> "M" AND fm = 1 THEN bm = bm + 1

IF x$(i) = "M" AND bm >= 2 THEN

PRINT "Greska! Slovo M krivo koristeno!"

ff = 1

Page 27: Zadaci Iz Qbasic-A

27

END IF

NEXT i

B = B + 1

IF ff = 1 THEN GOTO 2

1 REM provjera 1

IF ff = 2 THEN

PRINT "U rimskom broju postoje nedozvoljena slova! Obavezan novi unos!"

provjera = 12

GOTO 15

END IF

IF ff = 0 THEN GOTO 28

2 REM provjera 2

PRINT "Zelis li nastaviti provjeru (D/N)?";

INPUT o$

IF UCASE$(o$) = "D" THEN

ff = 0

IF B = 24 THEN GOTO 24

IF B = 25 THEN GOTO 25

IF B = 26 THEN GOTO 26

IF B = 27 THEN GOTO 27

IF B = 28 THEN GOTO 28

ELSE

provjera = 13

END IF

28 REM provjera 3

PRINT "Provjera gotova!"

provjera = 13

15 END FUNCTION

2.3. Napisati program koji će učitati string. Izračunati i na ekran ispisati je li učitani string rimski broj ili ne.

PRINT "Unesi string velikim slovima:";

INPUT a$

br = 0

I = 0

V = 0

X = 0

L = 0

C = 0

D = 0

Page 28: Zadaci Iz Qbasic-A

28

M = 0

n = LEN(a$)

FOR j = 1 TO n

b$ = MID$(a$, j, 1)

SELECT CASE b$

CASE IS = "I"

br = br + 1

I = I + 1

CASE IS = "V"

br = br + 1

V = V + 1

CASE IS = "X"

br = br + 1

X = X + 1

CASE IS = "L"

br = br + 1

L = L + 1

CASE IS = "C"

br = br + 1

C = C + 1

CASE IS = "D"

br = br + 1

D = D + 1

CASE IS = "M"

br = br + 1

M = M + 1

END SELECT

NEXT j

IF br = n AND I < 4 AND V < 2 AND X < 5 AND L < 2 AND C < 5 AND D < 2 AND M < 5 THEN

PRINT "String sadrzi rimske znamenke.";

ELSE

PRINT "String nije rimski broj.";

END IF

2.4. Napisati program koji će u zadanom stringu pronaći koliko ima parova otvorenih i zatvorenih običnih, uglastih i vitičastih zagrada ‘(‘, ‘)’, ‘[‘, ‘]’, ‘{‘, ‘}’. Sva tri podatka ispisati na ekran.

INPUT "unesi string"; x$

boo = 0

boz = 0

buo = 0

Page 29: Zadaci Iz Qbasic-A

29

buz = 0

bvo = 0

bvz = 0

FOR i = 1 TO LEN(x$)

c$ = MID$(x$, i, 1)

SELECT CASE c$

CASE IS = "("

boo = boo + 1

CASE IS = ")"

boz = boz + 1

CASE IS = "["

buo = buo + 1

CASE IS = "]"

buz = buz + 1

CASE IS = "{"

bvo = bvo + 1

CASE IS = "}"

bvz = bvz + 1

END SELECT

NEXT i

IF boo <= boz THEN

PRINT "obicnih ima"; boo

ELSE

PRINT "obicnih ima"; boz

END IF

IF buo <= buz THEN

PRINT "uglastih ima"; buo

ELSE

PRINT "uglastih ima"; buz

END IF

IF bvo <= bvz THEN

PRINT "viticastih ima"; bvo

ELSE

PRINT "viticastih ima"; bvz

END IF

Page 30: Zadaci Iz Qbasic-A

30

3. ZADACI S NIZOVIMA 3.1. Napisati program koji će koristiti niz v od 50 cijelih brojeva. Učitati 50

cijelih brojeva u niz v. Naći srednju vrijednost tih brojeva i ispisati samo one brojeve, koji su veći od srednje vrijednosti.

DIM v(5)

s = 0

FOR i = 1 TO 5

INPUT "Unesi clan niza"; v(i)

s = s + v(i)

NEXT i

sr! = s / 5

PRINT "Srednja vrijednost niza je:"; sr!

FOR i = 1 TO 5

IF v(i) > sr! THEN PRINT v(i)

NEXT i

3.2. Napisati program koji će koristiti niz x od n elemenata. Naći najmanji i najveći član xmin i xmax niza. Naći i ispisati sve članove niza koji su veći od xmax/2 i manji od xmin*2. Ispis treba imati izgled: Članovi veći od xmax/2 i manji od xmin*2 su: xxxxxx.xx xxxxxx.xx

INPUT "Unesi broj elemenata", n

DIM x(n)

FOR i = 1 TO n

INPUT "Unesi broj", x(i)

NEXT i

max = x(1)

min = x(1)

FOR i = 2 TO n

IF x(i) < min THEN min = x(i)

IF x(i) > max THEN max = x(i)

NEXT i

PRINT "Max = "; max

PRINT "Min = "; min

PRINT "Brojevi veći od max/2 su:"

FOR i = 1 TO n

IF x(i) > max / 2 THEN PRINT x(i)

NEXT i

PRINT "Brojevi manji od min*2 su:"

FOR i = 1 TO n

Page 31: Zadaci Iz Qbasic-A

31

IF x(i) < min * 2 THEN PRINT x(i)

NEXT i

3.3. Napisati program koji će učitati prirodan broj n koji mora biti manji od 500. Ako taj uvjet nije ispunjen ispisati odgovarajuću poruku i ponoviti učitavanje. Učitati n elemenata u niz v1 i n elemenata u niz v2. Zamijeniti redoslijed elemenata u nizu v2 tako da 0. element dođe na n-1 mjesto, 1. na n-2. i t.d. Naći i ispisati skalarni produkt tako dobivenog niza v2 i učitanog niza v1 (skalarni produkt sp je suma produkata odgovarajućih članova niza).

10 PRINT "Unesi broj n:"

INPUT n

IF n > 500 THEN

PRINT "Ne valja unos! Ponovi"

GOTO 10

END IF

FOR i = 0 TO n - 1

PRINT "unesi "; i + 1; ". broj niza v1: "

INPUT v1(i)

PRINT "unesi "; i + 1; ". broj niza v2:"

INPUT v2(i)

NEXT i

FOR i = 0 TO n - 1

PRINT v1(i); " ";

NEXT i

PRINT

FOR i = 0 TO n - 1

PRINT v2(i); " ";

NEXT i

PRINT

z = INT(n / 2)

FOR i = 0 TO z - 1

x = n - i - 1

t = v2(i)

v2(i) = v2(x)

v2(x) = t

NEXT i

FOR i = 0 TO n - 1

PRINT v2(i); " ";

NEXT i

PRINT

FOR i = 0 TO n - 1

Page 32: Zadaci Iz Qbasic-A

32

Sp = Sp + (v1(i) * v2(i))

NEXT i

PRINT "Skalarni produkt je "; Sp

3.4. Medijan je statistički pojam definiran kao "srednji član" niza poredanih podataka. Ako niz ima n članova i n je neparan broj, onda (pod uvjetom da su članovi poredani) medijan je n/2. član (računajući n/2 cjelobrojno; npr. ako je n=17 tada je medijan član poredanog niza s indeksom 8). Ako je n paran, tada je medijan aritmetička sredina n/2-1 i n/2 člana (npr. ako je n=28 tada je medijan aritmetička sredina članova poredanog niza s indeksima13 i 14). Napisati logiku program koji će učitati prirodan broj n, zatim učitati n brojeva u niz v, poredati te brojeve po rastućem redoslijedu i naći i ispisati medijan.

10 INPUT "Unesi broj elemenata niza"; n

IF (n = 0) THEN

PRINT "Greska!"

GOTO 10

END IF

DIM v(n)

PRINT "Unesi elemente niza"

FOR i = 1 TO n

INPUT v(i)

NEXT i

FOR i = 1 TO n - 1

FOR j = i + 1 TO n

IF (v(i) > v(j)) THEN

t = v(i)

v(i) = v(j)

v(j) = t

END IF

NEXT j

NEXT i

IF (n MOD 2 <> 0) THEN

a = INT(n / 2)

M = v(a)

ELSE

b = n / 2

c = b - 1

M = INT((b + c) / 2)

END IF

PRINT "Medijan je "; M

Page 33: Zadaci Iz Qbasic-A

33

3.5. Napisati program koji će učitavati jedan za drugim niz brojeva. Naći i ispisati aritmetičku sredinu učitanih brojeva uzimajući u obzir samo one brojeve koji su veći ili jednaki 2 i manji ili jednaki pet.

z = 0

PRINT "unesi broj źlanova niza"

INPUT a

DIM x(a)

FOR i = 1 TO a

INPUT x(i)

NEXT i

FOR i = 1 TO a

IF x(i) >= 2 AND x(i) <= 5 THEN

s = s + x(i)

br = br + 1

END IF

NEXT i

r = s / br

PRINT r

3.6. Napisati program koji će pomoću Rnd funkcije postaviti 100 slučajnih brojeva u niz slbr. Brojevi trebaju biti u intervalu od 1 do 200. Naći i ispisati sve one brojeve postavljene u niz slbr koji su se pojavili dva ili više puta.

RANDOMIZE TIMER

DIM slbr(100)

FOR i = 1 TO 100

slbr(i) = RND(1) * (200) + 1

PRINT slbr(i)

NEXT i

PRINT "brojevi koji se ponavljaju su"

FOR i = 1 TO 100

FOR j = i + 1 TO 100

IF slbr(i) = slbr(j) THEN

PRINT slbr(i)

GOTO 10

END IF

NEXT j

10 NEXT i

3.7. Napisati program koji će učitati prirodan broj n koji mora biti manji od 50. Ako taj uvjet nije ispunjen, ispisati odgovarajuću poruku i ponoviti učitavanje. Učitati n brojeva u niz b1 i generirati n slučajnih brojeva u

Page 34: Zadaci Iz Qbasic-A

34

intervalu 1 do 2*n i te brojeve staviti u niz b2. Naći najveći broj u jednom i drugom nizu i zamijeniti njihova mjesta.

10 INPUT "Unesi jedan broj"; n

IF n >= 50 THEN

PRINT "Unesi broj manji od 50"

GOTO 10

END IF

DIM b1(n)

DIM b2(n)

FOR i = 1 TO n

INPUT "Uźitaj broj iz niza"; b1(i)

NEXT i

FOR i = 1 TO n

PRINT b1(i); " ";

NEXT i

PRINT

PRINT "Sluźajni brojevi iz b2:"

FOR i = 1 TO n

RANDOMIZE TIMER

b2(i) = CINT(RND * 2 * n)

NEXT i

FOR i = 1 TO n

PRINT b2(i); " ";

NEXT i

PRINT

MAX1 = b1(1)

p1 = 1

MAX2 = b2(1)

p2 = 1

FOR i = 1 TO n

IF b1(i) > MAX1 THEN

MAX1 = b1(i)

p1 = i

END IF

IF b2(i) > MAX2 THEN

MAX2 = b2(i)

p2 = i

END IF

NEXT i

t = b1(p1)

Page 35: Zadaci Iz Qbasic-A

35

b1(p1) = b2(p2)

b2(p2) = t

PRINT "b1 nakon zamjene:"

FOR i = 1 TO n

PRINT b1(i); " ";

NEXT i

PRINT

PRINT "b2 nakon zamjene:"

FOR i = 1 TO n

PRINT b2(i); " ";

NEXT i

PRINT

Napisati program koji će učitavati niz od n cijelih brojeva. Naći i ispisati broj n koji pokazuje koliko je među učitanim brojevima bilo onih, kod kojih je zadnja znamenka jednaka 3.

Napisati program koji će učitati broj n. Taj broj mora biti veći od nule i manji od 10. Ako taj uvjet nije ispunjen, ispisati odgovarajuću poruku i ponoviti učitavanje. Naći i ispisati srednju vrijednost svih parnih brojeva u nizu, ali ne uzimajući u obzir one parne brojeve, koji su djeljivi sa 13.

Napisati program koji će koristiti niz y od 50 elemenata. Učitati 50 realnih brojeva. Ako je učitani broj negativan, staviti ga u niz s promijenjenim predznakom. Ako je učitani broj jednak nuli ne staviti ga u niz. Naći geometrijsku sredinu svih članova niza. Ispisati one članove niza koji su manji od geometrijske sredine.

Napisati program koji će koristiti tri niza: SIFRA, CIJENA i KOLIC svaki od po 300 elemenata. Učitati podatke u sva tri niza. Podaci u nizu SIFRA su šifre materijala na nekom skladištu. Podaci u nizu CIJENA predstavljaju cijenu pojedinog materijala a podaci u nizu KOLIC predstavljaju količinu materijala na skladištu. Naći i ispisati ukupnu vrijednost zaliha materijala na skladištu. Ispisati šifre onih materijala, čije vrijednosti zaliha su veće od 1/10 ukupne vrijednosti zaliha. Formate ispisa izabrati proizvoljno.

Napisati program koji će najprije učitati cijeli broj M. Taj broj mora biti veći od 0 i manji od 10. Ako taj uvjet nije zadovoljen, ispisati poruku "POGREŠNO ZADANA ZNAMENKA" i ponoviti učitavanje. Program dalje treba učitavati niz od n brojeva. Program treba naći i ispisati broj m koji pokazuje koliko je među učitanim brojevima bilo onih kod kojih je prva znamenka jednaka M.

Napisati program koji će koristiti niz v od 50 cijelih brojeva. Učitati 50 cijelih brojeva u niz v. Naći srednju vrijednost tih brojeva i ispisati samo one brojeve, koji su veći od srednje vrijednosti.

Page 36: Zadaci Iz Qbasic-A

5. ZADACI S POTPROGRAMIMA 5.1. Napisati cjelobrojnu funkciju koja kao parametre ima 3 cijela broja a, b i c.

Funkcija treba vratiti sumu od dva najveća broja od ta 3. Znači, najmanji od njih treba izostaviti u toj sumi.

DECLARE FUNCTION provjera! (a!, b!, c!)

REM unos

PRINT "Unesi tri broja a,b,c :"

INPUT a, b, c

REM provjera

PRINT "Suma je :"; provjera(a, b, c)

END

FUNCTION provjera (a, b, c)

IF a < b AND a < c THEN

min = a

ELSEIF b < a AND b < c THEN

min = b

ELSE

min = c

END IF

provjera = a + b + c - min

END FUNCTION

Page 37: Zadaci Iz Qbasic-A

47

5.2. Napisati cjelobrojnu funkciju prost(x) koja poprima vrijednost -1 ako x nije prirodan broj (x je realna varijabla!), 0 ako je x prirodan ali nije prost broj i 1 ako je x prost broj.

DECLARE FUNCTION prost (x)

INPUT "Unesi broj"; x

IF prost(x) = 1 THEN PRINT "Broj"; x; " je prost."

IF prost(x) = 0 THEN PRINT "Broj"; x; "je prirodan, ali ne i prost broj."

IF prost(x) = -1 THEN PRINT x; "nije prirodan broj."

FUNCTION prost (x)

k = x

IF (x > 0) AND (x - INT(x) = 0) THEN

REM Provjera je li x prost broj:

FOR i = 2 TO INT(x / 2)

IF (k MOD i = 0) THEN

k = k / i

br = br + 1

END IF

NEXT i

REM Ako x nije, f-ja vraca vrijednost 0.

IF br > 0 THEN prost = 0

REM Ako je, f-ja vraca vrijednost 1.

IF br = 0 THEN prost = 1

REM Ako x nije prirodan, f-ja vraca vrijednost -1.

ELSE

prost = -1

END IF

END FUNCTION

5.3. Napisati realnu funkciju Razlika koja kao parametre ima dva broja a i b. Funkcija treba izračunati i vratiti razliku između ta dva broja (a – b).

DECLARE FUNCTION Razlika! (br1!, br2!)

INPUT "unesite dva broja: "; br1, br2

PRINT Razlika(br1, br2)

END

FUNCTION Razlika (br1, br2)

Razlika = br1 - br2

END FUNCTION

Page 38: Zadaci Iz Qbasic-A

48

5.4. Napisati realnu funkciju koja kao parametre ima 4 realna broja x1,y1,x2,y2 koji predstavljaju koordinate dviju točaka u ravnini. Funkcija treba vratiti vrijednost udaljenosti ovih dviju točaka.

CLS

PRINT " Unesi parametre tocaka A i B"

PRINT " Unesi parametre x1 i y1 za tocku A"

INPUT "unesi parametar x1"; x1

INPUT "unesi parmaetar y1"; y1

PRINT " Unesi parametre x2 i y2 za tocku B"

INPUT "unesi parmaetar x2"; x2

INPUT "unesi parmaetar y2"; y2

PRINT "Udaljenost izmedu tocke A i B je"; d(x1,x2,y1,y2)

END

FUNCTION d (x1,x2,y1,y2)

A = (x2 - x1) * (x2 - x1)

B = (y2 - y1) * (y2 - y1)

d = SQR(A + B)

END FUNCTION

Napisati cjelobrojnu funkciju koja ima parametre realne brojeve a,b,c,d koji su koeficijenti pravaca y=ax+b i y=cx+d. Funkcija treba vratiti 1 ako se ti pravci sijeku, a vratiti 0 ako su paralelni.

Napisati realnu funkciju vodx kojoj se predaju parametri V,m i x. V je realni niz s m popunjenih elemenata a x je realan broj. Funkcija vodx treba vratiti vrijednost najmanjeg broja u nizu V koji je veći od x. Ako u nizu V ne postoji broj veći od x funkcija vodx treba vratiti vrijednost -1000.

Napisati cjelobrojnu funkciju vsr kojoj se predaju parametri A i m. A je realni niz od m članova. Funkcija treba naći broj članova niza A koji su veći od srednje vrijednost svih članova tog niza.

Napisati glavni program i proceduru SORT. Glavni program učitava realne brojeve iz datoteke čije ime se zadaje kao parametar pri pozivu programa. Brojevi iz datoteke učitavaju se u realni niz v1. Broj popunjenih elemenata u nizu v1 treba staviti u varijablu m. Proceduri SORT predaju se parametri v1, v2 i m. v2 je niz istog tipa i oblika kao v1. Procedura SORT treba poredati po rastućem redoslijedu podatke iz niza v1 i staviti ih u v2. U glavnom programu ispisati niz v2 u datoteku čije ime se zadaje kao drugi parametar .

Napisati realnu funkciju koja kao parametre ima 4 realna broja a,b,c,d. Oni predstavljaju 2 kompleksna broja a+bi, c+di. Funkcija treba vratiti zbroj modula ova dva kompleksna broja.