22
ZADACI S NATJECANJA _ INFORMATIKA DANI MLADIH INFORMATIČARA HRVATSKE 1992. ZADACI 1. Napiši program koji će ispisati sve neparne troznamenkaste brojeve kojima je zbroj znamenaka djeljiv brojem 13. 2. Napiši program koji će učitati ime i prezime, zati m to ispisati vodoravno i okomito, ali tako da se sva mala slova zamijene velikima. 3. Napiši program koji će učitati broj natjecatelja zatim njihova imena i postignuti broj bodova na natjecanju za svaki od dva zadatka. Ispisati koliki je najveći broj postignutih bodova, a zatim imena svih natjecatelja koji su postigli najveći broj bodova. RJEŠENJA: 1. 1 REM troznamenkasti prosti brojevi kojima 2 REM je zbroj znamenaka djeljiv sa 13 5 CLS 10 FOR N = 101 TO 999 STEP 2 20 K = 0:S = 0 25 REM izračunaj zbroj znamenaka broja N 30 Z = K MOD 10: REM Z = K - INT(K/10)*10 40 K = K/10: REM K = INT(K/10) 50 S = S + Z: REM zbroj znamenaka 60 IF K > 0 THEN GOTO 30 70 IF S/13 = INT (S/13) THEN PRINT N 80 NEXT N 2. 1 REM pretvori sva mala slova u velika i 2 REM ispisati ime i prezime vodoravno i okomito 5 CLS 10 INPUT "IME I PREZIME"; A$ 20 P = ASC("a") - ASC("A"): REM pomak 25 B$ = "" 30 FOR K = 1 TO LEN(A$) 40 Z$ = MID$(A$, K, 1): REM znak 50 C = ASC(Z$): REM kod znaka 60 IF C = 96 AND C = 126 THEN Z$ = CHR$(C-P) 70 B$ = B$ + Z$ 80 NEXT K 85 CLS 90 PRINT B$ 100 FOR K = 1 TO LEN(B$) 110 PRINT MID$(B$, K, 1) 120 NEXT K

ZADACI S NATJECANJA INFORMATIKA DANI MLADIH …free-kr.t-com.hr/Vladimir-Novak/web INFORMATIKA/ZADACI S NATJECANJA.pdf · ZADACI S NATJECANJA _ INFORMATIKA DANI MLADIH INFORMATIČARA

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

ZADACI S NATJECANJA _ INFORMATIKA

DANI MLADIH INFORMATIČARA HRVATSKE 1992.

ZADACI

1. Napiši program koji će ispisati sve neparne troznamenkaste brojeve kojima je zbroj znamenaka djeljiv brojem 13.2. Napiši program koji će učitati ime i prezime, zatim to ispisati vodoravno i okomito, ali tako da se sva mala slova zamijene velikima.3. Napiši program koji će učitati broj natjecatelja zatim njihova imena i postignuti broj bodova na natjecanju za svaki od dva zadatka. Ispisati koliki je najveći broj postignutih bodova, a zatim imena svih natjecatelja koji su postigli najveći broj bodova.

RJEŠENJA:

1. 1 REM troznamenkasti prosti brojevi kojima 2 REM je zbroj znamenaka djeljiv sa 13 5 CLS 10 FOR N = 101 TO 999 STEP 2 20 K = 0:S = 0 25 REM izračunaj zbroj znamenaka broja N 30 Z = K MOD 10: REM Z = K - INT(K/10)*10 40 K = K/10: REM K = INT(K/10) 50 S = S + Z: REM zbroj znamenaka 60 IF K > 0 THEN GOTO 30 70 IF S/13 = INT (S/13) THEN PRINT N 80 NEXT N

2. 1 REM pretvori sva mala slova u velika i 2 REM ispisati ime i prezime vodoravno i okomito 5 CLS 10 INPUT "IME I PREZIME"; A$ 20 P = ASC("a") - ASC("A"): REM pomak 25 B$ = "" 30 FOR K = 1 TO LEN(A$) 40 Z$ = MID$(A$, K, 1): REM znak 50 C = ASC(Z$): REM kod znaka

60 IF C = 96 AND C = 126 THEN Z$ = CHR$(C-P) 70 B$ = B$ + Z$ 80 NEXT K 85 CLS 90 PRINT B$ 100 FOR K = 1 TO LEN(B$) 110 PRINT MID$(B$, K, 1) 120 NEXT K

3. 1 REM ispisati največi ukupni broj bodova iz dva zadatka 2 REM i ispisati natjecatelje a najvecim brojem bodova 5 CLS 10 INPUT "BROJ NATJECATELJA"; N 12 DIM IME$(N), PRE$(N), Z1(N), Z2(N) 15 MAX = 0 20 FOR K = 1 TO N 25 PRINT K; ". natjecatelj" 30 INPUT "MOLIM IME :"; IME$(K) 31 INPUT "MOLIM PREZIME :"; PRE$(K) 32 INPUT "PRVI ZADATAK :"; Z1(K) 34 INPUT "DRUGI ZADATAK :"; Z2(K) 40 IF Z1(K) + Z2(K)>MAX THEN MAX = Z1(K) + Z2(K) 50 NEXT K 60 PRINT "NAJVECI BROJ BODOVA"; MAX 65 PRINT "ime", "prezime", "1. zad", "2.zad" 70 FOR K = 1 TO N 80 IF Z1(K) + Z2(K) = MAX THEN PRINT IME$(K), PRE$(K), Z1(K), Z2(K) 90 NEXT K

DANI MLADIH INFORMATIČARA HRVATSKE 1993.

ZADACI

1. Napiši program koji učita pozitivan cijeli broj i ispiše brojeve koji nisu prosti izme|u 1 i N.2. Napiši program koji učita dva kuta zadana u stupnjevima, minutama i sekundama manja od 90 stupnjeva i ispiše njihov zbroj.3. Napiši program koji učita rečenicu od najviše 80 znakova. Izme|u svake dvije riječi je točno jedno prazno mjesto, rečenica ne sadrži drugih znakova osim slova i praznina. Ispiši rečenicu s obrnutim poretkom riječi u njoj.4. Fibonaccijev niz je 0,1,1,2,3,5,8,13... Svaki broj toga niza počevši od trećeg člana je zbroj prethodna dva. Npr. 1=0+1, 2=1+1, 3=1+2, 5=2+3... Napiši program koji izračunava zbroj prvih N članova toga niza.

RJEŠENJA:

1. 10 CLS: INPUT "UNESITE BROJ "; N$:PRINT 20 N& = VAL(N$) 40 FOR I& = 4 TO N& 50 FOR J& = 2 TO CLNG(SQR(I&)) 60 IF I& MOD J& = 0 THEN 90 70 NEXT J& 80 GOTO 100 90 PRINT I& 100 NEXT I&

2. 5 CLS 10 PRINT "UNESI PRVI KUT" 11 INPUT "STUPNJEVI ", D1$ 12 INPUT "MINUTE ", M1$ 13 INPUT "SEKUNDE ", S1$ 20 PRINT 21 PRINT "UNESI DRUGI KUT" 22 INPUT "STUPNJEVI ", D2$ 23 INPUT "MINUTE ", M2$ 24 INPUT "SEKUNDE ", S2$ 30 D1& = VAL(D1$): M1& = VAL(M1$): S1& = VAL(S1$) 40 D2& = VAL(D2$): M2& = VAL(M2$): S2& = VAL(S2$) 50 S& = S1& + S2&: T& = S&/60: S& = S& MOD 60 60 M& = M1& + M2& + T&: T& = M&/60: M& = M& MOD 60 80 D& = D1& + D2& + T&: PRINT 90 PRINT USING "&###&##&##"; "Zbroj kuteva je "; D&; " stupnjeva "; M&; " minuta "; S&; " sekundi"

3. 10 CLS:PRINT "Unesite recenicu" 11 INPUT R$: PRINT 20 R$ = "" + R$: L% = 0 30 FOR I% = LEN(R$) TO 1 STEP -1 40 L% = L% + 1 50 IF MID$(R$, I%, 1) = "" THEN PRINT MID$(R$, I% + 1, l% - 1) + " ";: L% = 0 60 NEXT I%

4. 10 CLS 20 INPUT "Unesite broj članova niza ", N$: PRINT 30 N& = VAL(N$): IF N& <= 2 THEN PRINT N& - 1 40 I& = 3: A& = 0: B& = 1: S& = 1 50 T& = B&: B& = A& + B&: A& = T&: S& = S& + B& 55 REM PRINT I&, B&, S& 60 I& = I& + 1: IF I& <= N& THEN 50 70 PRINT "Zbroj prvih "; N&; " članova je "; S&

DANI MLADIH INFORMATIČARA 1994.

1. ZADATAK

Napiši program koji na sredini ekrana ispisuje slovo, te ga u zavisnostiod pritisnute tipke miče po ekranu: - slovo S jedan red gore - slovo J jedan red dolje - slovo I jedan stupac desno

- slovo Z jedan stupac lijevou okviru mogućnosti ekrana.Izvo|enje programa prekida pritisak na slovo K.

2. ZADATAK

Napiši program koji će učitati ime, prezime i prosječnu ocjenu za N učenika.Treba ispisati: a - sve podatke za sve učenike abecednim redosljedom (podaci za jednog učenika u jedan red) b - ime i prezime učenika s najvišim prosjekom c - ime i prezime učenika s najnižim prosjekom d - broj odličnih učenika e - broj vrlo dobrih učenika f - broj dobrih učenika g - broj dovoljnih učenika h - broj nedovoljnih učenika

3. ZADATAK

Napiši program koji će za učitane koordinate lijevog gornjeg ugla nacrtatinajveću moguću šahovsku ploču. Šahovska ploča je četverokut podijeljen naosam redova i osam stupaca u kojem su polja naizmjenično bijela i crna.

4. ZADATAK

Napiši program koji će učitati: a - niz znakova (string) b - najveći mogući broj znakova u jednom redu.Učitani niz znakova treba ispisati tako da: a - broj znakova u jednom redu ne prelazi zadani najveći mogući broj znakova za svaki red b - tekst ima poravnati desni rub (marginu); praznine koje ostaju na kraju reda zbog premještanja zadnje riječi u novi red treba što pravilnije rasporediti unutar tog reda c - prvi red bude uvučen za proizvoljni broj znakova (mjesta).

RJEŠENJA *************************************************************

1. zadatak

CLSx = 40: y = 12xs = 40: Ys = 12DOLOCATE Y,X: PRINT "B"A$ = INKEY$

IF UCASE$(A$) = "S" THEN Y = Y - 1: IF Y < 1 THEN Y = 23 GOSUB brisiEND IF

IF UCASE$(A$) = "J" THEN Y = Y + 1: IF Y > 23 THEN Y = 1 GOSUB brisiEND IF

IF UCASE$(A$) = "I" THEN X = X + 1: IF X > 80 THEN X = 1 GOSUB brisiEND IFIF UCASE$(A$) = "S" THEN X = X - 1: IF X < 1 THEN X = 80 GOSUB brisiEND IFXS = XYS = YLOOP UNTIL UCASE(A$) = "K"END

brisi: LOCATE YS, XS: PRINT " "RETURN

2. zadatak

CLSINPUT "Unesi broj ucenika: ", nDIM IME$(n), ocj(n)FOR X = 1 TO n PRINT "Unesi prezime i ime za "; X; ". ucenika: "; INPUT IME$(X) DO PRINT "Unesi prosjecnu ocjenu za "; IME$(X); ": "; INPUT OCJ(X) LOOP UNTIL OCJ(X) > 0 AND OCJ(X) <= 5 NEXT X FOR Y = 1 TO n - 1 FOR X = Y + 1 TO n IF IME$(Y) > IME$(X) THEN SWAP IME$(X), IME$(Y):SWAP OCJE(X), OCJ(Y) NEXT X NEXT Y MIN = OCJ(1): MAXO = 1 MAX = OCJ(1): MINO = 1

PRINT "Abecedni redoslijed ucenika:" B5 = 0:B4 = 0:B3 = 0:B2 = 0:B1 = 0 FOR X = 1 TO n PRINT IME$(X), OCJ(X) IF OCJ(X) < 2 THEN B1 = B1 + 1 IF OCJ(X) >= 2 AND OCJ(X) < 2.5 THEN B2 = B2 + 1 IF OCJ(X) >= 2.5 AND OCJ(X) < 3.5 THEN B3 = B3 + 1 IF OCJ(X) >= 3.5 AND OCJ(X) < 4.5 THEN B4 = B4 + 1 IF OCJ(X) >= 4.5 THEN B5 = B5 + 1 IF OCJ(X) > MAX THEN MAX = OCJ(X): MAXO = X IF OCJ(X9 < MIN THEN MIN = OCJ(X): MINO = X NEXT X PRINT "Učenik sa najvecim prosjekom je "; IME$(maxo); " koji iznosi:"; max PRINT "Učenik sa najmanjim prosjekom je "; IME$(mino); " koji iznosi:"; min PRINT "Broj ucenika s nedovoljnim uspjehom: "; b1 PRINT "Broj ucenika s dovoljnim uspjehom: "; b2 PRINT "Broj ucenika s dobrim uspjehom: "; b3 PRINT "Broj ucenika s vrlo dobrim uspjehom: "; b4 PRINT "Broj ucenika s odlicnim uspjehom: "; b5

3. zadatak

SCREEN 12DO INPUT "Unesi x koordinatu lijevog gornjeg ugla ploce:", x LOOP UNTIL x >= 0 AND x <= 631 DO INPUT "Unesi y koordinatu lijevog gornjeg ugla ploce:", y LOOP UNTIL y >= 0 AND <= 455 CLS sx = (639 - x) / 8 sy = (463 - y) / 8 a = 0 COLOR 1 FOR yy = y TO 463 - sy STEP sy FOR xx = x TO 639 - sx STEP sx a = a + 1 COLOR a MOD 2 LINE (xx, yy) - (xx + sx, yy + sy), , BF NEXT xx a = a + 1 NEXT yy LINE (x, y) - (639, 463), , B

4. zadatak

CLSINPUT "Unesi recenicu: "; rec$

INPUT "Unesi maksimalan broj slova u jednom retku: ";maxprez$ = "rec$ = " "+ rec$PRINTDOoperacija = 0rad$ = MID$(rec$, 1, max)zad$ = RIGHT$(rad$, 1) IF LEN(rec$) <= amx AND operacija = 0 THEN ispi$ = MID$(praz$, 1, max - LEN(rec$)) + rad$ rec$ = "" operacija = 1 END IF

IF zad$ <> " " AND MID$(rec$, max + 1, 1) = " " and operacija = 0 THEN isp$ = LEFT$(rad$, max) rec$ = RIGHT$(rec$, LEN(rec$) - max) operacija = 1 END IF

IF zad$ = " " AND operacija = 0 THEN isp$ = LEFT$(rad$, max - 1) rec$ = RIGHT$(rec$, LEN(rec$) - max) stavio = 0: x = 1 DO IF MID$(ispi$, x, 1) = " " THEN isp$ = LEFT$(isp$, x - 1) + " " + RIGHT$(isp$, LEN(isp$) - x stavio = 1 END IF x = x + 1 LOOP UNTIL x > max - 1 OR stavio = 1 IF stavio = 0 THEN isp$ = " " + isp$ operacija = 1 END IF

IF zad$ <> " " AND MID$(rec$, max + 1, 1) <> " " AND operacija = 0 THEN nasao = 0: x = max DO IF MID$(rad$, x, 1) = " " THEN nasao = x x = x - 1 LOOP UNTIL x < 1 OR nasao <> 0 dodaj = max - nasao + 1 isp$ = LEFT$(rad$, nasao - 1) rec$ = RIGHT$(rec$, LEN(rec$) - nasao) x = 1: br = 0 DO IF MID$(isp$, x, 1) = " " THEN isp$ = LEFT$(isp$, x - 1) + " " + RIGHT$(isp$, LEN(isp$) - x)

br = br + 1 q = 0 FOR b = x TO LEN(isp$) IF MID$(isp$, b, 1) <> " " AND q = 0 THEN x = b - 1:q = 1 NEXT b END IF x = x + 1 IF x > LEN(isp$) AND br = 0 THEN isp$ = LEFT$(praz$, dodaj) + isp$ br = dodaj END IF IF x > LEN(isp$) THEN x = 1 operacija = 1 LOOP UNTIL br = dodaj END IF

PRINT isp$ LOOP UNTIL rec$ = ""

ZADACI ZA OSNOVNOŠKOLSKI UZRAST - DMIH '97

1. zadatak **************************

Za zadani prirodni broj treba izračunati srednju (prosječnu)vrijednost njegovih znamenaka.Ulazni podaci - učitati prirodan broj manji od 2 000 000 000.Izlazni podaci - ispisati srednju vrijednost njegovih znamenaka zaokruženu na 2 decimale.

Primjer: Ulaz Izlaz 25710 3.00 12345678 4.50

Rješenje 1. zadatka

CONST maxbroj = 2000000000i% = 0s% = 0INPUT "Unesi broj>", broj&IF (broj& > 0) AND (broj& < maxbroj) THEN DO s% = s% + (broj& MOD 10) broj& = broj& / 10 i% = i% + 1 LOOP UNTIL broj& = 0

ELSE PRINT "Broj nije OK!!!" END IF IF i% > 0 THEN PRINT USING "Srednja vrijednost znamenaka je #.##"; s% / i%

2. zadatak *************************

Prikažimo zgradu od N katova i N ulaza, znači Ně stanova, kvadratompodijeljenim na N redova i N stupaca, znači Ně manjih kvadrata.Sjecište svakog kata sa svakim ulazom je jedan stan. Svi stanovi suoznačeni rednim brojevima od 1 do Ně, slijeva nadesno i odozdo premagore, počevši od lijevog donjeg kuta.

Npr. N=3 鎶Ž¶Žľ � 7 8 9 ĆŽ‘Ž‘Žď � 4 5 6 ĆŽ‘Ž‘Žď � 1 2 3 莵ŽµŽŢSusjedi stana S su svi stanovi s kojima se dodiruje podom, stropomili jednim od zidova (bilo koja stranica manjeg kvadrata).Napiši program koji će:- učitati N (0 < N <= 15) i S- ispisati brojeve stanova onako kako su oni u zgradi smješteni- ispisati sve susjede stana S u rastućem redoslijedu ili ispisati poruku "NEMA SUSJEDA" u slučaju da stan S nema susjeda ili ispisati poruku "NIJE U ZGRADI" u slučaju da stan S nije u zgradi.

Primjer: Ulaz Izlaz 鎶Ž¶Žľ 3 � 7 8 9 5 ĆŽ‘Ž‘Žď � 4 5 6 ĆŽ‘Ž‘Žď � 1 2 3 莵ŽµŽŢ Susjedi stana 5 su 2 4 6 8

Rješenje 2. zadatka

CLSINPUT "Broj katova i ulaza ", n%INPUT "Broj stana ", st%IF 0 > st% OR st% > n% * n% THEN PRINT "NIJE U ZGRADI": STOPDIM pomoc%(1 TO n% * n%, 1 TO 2)CLS

x% = n%br% = 0FOR r% = 1 TO n% y% = 1 FOR s% = 1 TO n% br% = br% + 1 y% = y% + 1 LOCATE x%, y% PRINT br% y% = y% + LEN(STR$(n% * n%)) pomoc%(br%, 1) = r% pomoc%(br%, 2) = s% NEXT x% = x% - 1 NEXT ima = 0 IF pomoc%(st%, 1) - 1 > 0 THEN LOCATE (x% + n% + 3), 5: PRINT "Susjedi stana"; st%; " su "; PRINT st% - n%; : ima = 1 END IF IF pomoc%(st%, 2) - 1 > 0 THEN PRINT st% - 1; : ima = 1 LOCATE (x% + n% + 3), 5: PRINT "Susjedi stana"; st%; " su "; END IF IF pomoc%(st%, 2) + 1 <= n% THEN LOCATE (x% + n% + 3), 5: PRINT "Susjedi stana"; st%; " su "; PRINT st% + 1; : ima = 1 END IF IF pomoc%(st%, 1) + 1 <= n% THEN LOCATE (x% + n% + 3), 5: PRINT "Susjedi stana"; st%; " su "; PRINT st% + n%; : ima = 1 END IF IF ima = 0 THEN LOCATE (x% + n% + 3), 5: PRINT "NEMA SUSJEDA"

3. zadatak ************************

Svima je poznata funkcija programa za obradu teksta "prona|i i zamijeni"(Search&Replace), kojom se odre|eni dio teksta automatski zamjenjujenekim drugim tekstom (nizom znakova). U našem slučaju zamjnjivat ćemo nizznakova, a ne teksta.Zamjenu treba izvršiti tako da se na svako mjesto gdje se traženi podnizpojavljuje u radnom nizu, umjesto njega ubaci podniz kojim traženi podnizželimo zamijeniti.

Ulazni podaci - učitati: - niz znakova (do 255 zankova) u kojem izvršavamo zamjenu - podniz koji želimo zamijeniti

- podniz kojim ga želimo zamijeniti

Izlazni podaci - program treba ispisati: - koliko je zamjena izvršio - "novi" izgled našeg radnog niza znakova - u slučaju danije izvšena niti jedna zamjena, program treba ispisati samo poruku "NEMA ZAMJENA".

Primjer: Ulaz Izlaz informatika 2 zamjena i YnformatYka Y

Rješenje 3. zadatka

CLSINPUT s$INPUT p$INPUT r$zam = 0f$ = ""i% = 1WHILE i% <= LEN(s$) IF MID$(s$, i%, LEN(p$)) = p$ THEN f$ = f$ + r$ i% = i% + LEN(p$) zam = zam + 1ELSE f$ = f$ + MID$(s$, i%, 1) i% = i% + 1 END IFWENDCLSIF zam = 0 THEN PRINT "NEMA ZAMJENA"ELSE PRINT zam; "zamjena" PRINT f$ END IF

4. zadatak ****************************************

Na slici je prikazan raspored pruga i stanica za vlakove podzemneželjeznice u tvojem gradu (iz časopisa "Pogled u budućnost").Stanice su označene kružičima i brojem. Pruge su označene crtom.Za prijevoz putnika rezervirani su vlakovi raspore|eni u 8 linija.Vlakovi obilaze stanice prema rasporedu:

Linija: Redoslijed obilaska stanica: 1 1 2 37 27 48 49 17 18 47 46 2 1 2 3 4 5 7 8 9 14 13 12 11 3 11 12 13 14 15 16 17 18 19 20 21 4 38 39 30 40 42 43 33 34 5 22 23 24 25 26 27 28 29 30 31 32 33 34 6 41 42 45 18 19 44 43 33 32 31 35 36 7 6 5 25 24 14 9 10 8 50 51 52 16 17 54 53

Stanice u kojima pruga završava su okretišta. Vlak koji do|e do okretištamijenja smjer, tj. vraća se istim putem do odredišta od kojeg je kranuoi tako dalje.Putnici mogu ulaziti ili silaziti na svim stanicama. Iskrcavanje je obaveznoza sve putnike na okretištima.Naplata vožnji obavlja se prilikom ulaska u vozilo. Cijena karte ne ovisi oudaljenosti koju vlak prevali, niti o vremenu koje putnik provede u njemu.Prilikom svakog presjedanja putnik plaća kartu.U interesu je putnika da isplanira putovanje tako da uspije doći odpolazišta do odredišta uz što manji broj presjedanja.Napiši program koji za zadanu početnu i krajnju stanicu odre|ujenajpovoljniji plan putovanja u smislu štednje novca putnika.

Ulazni podaci su cijeli brojevi A i B (1 <= A,B <= 54). A je broj početne,a B broj krajnje stanice.

Izlazni podaci:Ako ne postoji više jednako štedljivih načina za planiranje putovanja, trebaispisati niz poruka za samo jedan od njih. Poruke moraju biti sljedečegoblika:LINIJA L, ULAZAK NA STANICI U, IZLAZAK NA STANICI I

L,U i I su cijeli brojevi za koje vrijedi: 0 < L <= 8 0 < U <= 54 0 < I <= 54.

Poruka opisuje putovanje vlakom jedne linije od ulaska u vlak do izlaskaiz vlaka.Prva poruka mora se odnositi na ulazak u vlak na stanici A. Svaka sljedećaporuka kao ulaznu stanicu mora sadržati izlaznu stanicu iz prethodne poruke.Zadnja poruka kao izlaznu stanicu mora sadržati stanicu B.

Primjer 1:

Ulaz Izlaz1 Linija 1, Ulazak na stanici 1, Izlazak na stanici 2727

Primjer 2:

Ulaz Izlaz52 Linija 8, Ulazak na stanici 52, Izlazak na stanici 1615 Linija 3, Ulazak na stanici 16, Izlazak na stanici 15

Rješenje 4. zadatka

DIM linije(8, 13)DIM putdo(54, 18)DATA 1,2,37,27,48,49,17,18,47,46,0DATA 1,2,3,4,5,7,8,9,14,13,12,11,0DATA 11,12,13,14,15,16,17,18,19,20,21,0DATA 38,39,30,40,42,43,33,34,0DATA 22,23,24,25,26,27,28,29,30,31,32,33,34,0DATA 41,42,45,18,19,44,43,33,32,31,35,36,0DATA 6,5,25,24,14,9,10,0DATA 50,51,52,16,17,54,53,0

FOR l = 1 TO 8 READ a i = 1 WHILE a <> 0 linije(l, i) = a i = i + 1 READ a WEND linije(l, 0) = i - 1 NEXT l

FOR s = 1 TO 54 putdo(s, 0) = 21 FOR i = 1 TO 18 putdo(s, i) = 0 NEXT i NEXT s

INPUT poc INPUT kraj IF poc = kraj THEN END putdo(poc, 1) = poc putdo(poc, 0) = 1

jos = 1 WHILE jos = 1 jos = 0 FOR s = 1 TO 54

IF putdo(s, 0) < 20 THEN FOR l = 1 TO 8 ima = 0 FOR i = 1 TO linije(l, 0) IF linije(l, i) = s THEN ima = 1 NEXT i IF ima = 1 THEN FOR i = 1 TO linije(l, 0) IF putdo(linije(l, i), 0) > putdo(s, 0) + 2 THEN jos = 1 FOR ii = 1 TO putdo(s, 0) putdo(linije(l, i), ii) = putdo(s, ii) NEXT ii putdo(linije(l, i), 0) = putdo(s, 0) + 2 putdo(linije(l, i), putdo(s, 0) + 1) = l putdo(linije(l, i), putdo(s, 0) + 2) = linije(l, i) END IF NEXT i END IF NEXT l END IF NEXT sWEND

i = 1WHILE i + 2 <= putdo(kraj, 0) PRINT "LINIJA"; putdo(kraj, i + 1); ", ULAZAK NA STANICI "; putdo(kraj, i); ", IZLAZAK NA STANICI "; putdo(kraj, i + 2) i = i + 2WEND

ZADACI S DRŽAVNIH NATJECANJA U LOGO-uDANI MLADIH INFORMATIČARA HRVATSKE 1992.Labin-Rabac 13.-17. svibnja 1992.

1. Napišite program koji će nacrtati prikazanu sliku šest cvjetova rasporedenih u krug.2. Napišite program koji crta cvijet koji se sastoji od 12 rombova s duljinom stranica 30.3. Napišite program koji crta sljedeću sliku sastavljenu od 12 lukova raspore|enih u krug oko zajedničke točke.

RJEŠENJA ZADATAKA (LOGO 1):

1.

TO LUK REPEAT 18 ŠFD 4 LT 10]ENDTO CVIJET REPEAT 4 ŠLUK LT 90]END

TO CVJETOVI CS REPEAT 6 ŠPU FD 60 PD CVIJET LT 60]END

2.

TO ROMBREPEAT 2 ŠFD 30 LT 30 FD 30 LT 150]END

TO VRTI CS REPEAT 12 ŠROMB RT 30]END

3.

TO ZRAKA REPEAT 9 ŠFD 10 LT 10]END

TO SUNCE CS MAKE "KUT 0 REPEAT 12 ŠMAKE "KUT :KUT + 30 PU HOME PD LT :KUT ZRAKA]END

DANI MLADIH INFORMATIČARA HRVATSKE 1993.Stubičke Toplice, 27.travnja - 1.svibnja 1993.

1. Nacrtaj 12 europskih zvjezdica, koje su petokrake i pravilno rasporedene u krugu. Neka se veličina zvijezde odre|uje parametrom pri pozivu procedure, kao i udaljenost izmedu susjednih zvijezda.2. Napiši program koji će crtati piramidu sa slike. Pri pozivu programa parametri su veličina kvadrata i broj kvadrata u donjem redu.3. Napravi proceduru koja će slučajnim izborom odabirati jednu od devet životinja (npr. psi, mačke, žabe, krave, ovce, guske, svinje, kokoši, miševi, magarci) i svakoj pridružiti po jedno glasanje (laju, mijauču, krekeču, muču, bleje, gaču, rokću, kokodaču, cijuču, njaču), to ispisati u pet stihova, pričekati neko vrijeme, obrisati zaslon i ponavljati prethodni postupak.MAČKE ROK]U PSI CIJUČU MIŠEVI MEKE]U ŽABE MUČU MAGARCI NJAČU4. Učenici su dobili na izbor napraviti program (procedure) kojima će najbolje pokazati svoje znanje jezika i programerskog iskustva.

RJEŠENJA ZADATAKA (LOGO 1):

1.

TO EUROPA :S :K :DREPEAT 12 ŠZVIJEZDA :5 :K PU FD :D RT 30]END

TO ZVIJEZDA :S :N PD REPEAT :N ŠFD :S RT 180 - 180 / :N] END

2.

TO CIGLA :SREPEAT 4 ŠFD :S RT 90]END

TO ZID :N :SRED :N :S FD :S LT 90 FD :N * :S - :S/2 RT90

IF :N > 1 ŠZID :N - 1 :S]IF :N = 1 ŠGORNJA :S]END

TO RED :N :S REPEAT :N ŠCIGLA :S RT 90 FD :S LT 90]DIMENZIJA :S END

TO DIMENZIJA :S RT 60 FD :S LT 60 FD :S LT 90 FD :S/2 BK :S/2 LT 30 FD :S LT 60 FD :S RT 180 END

TO GORNJA :S LT 90 FD :S/2 RT 15O FD :S RT 30 FD :S/2 END

3.

TO VESELA.FARMA TS POSTAVA REPEAT 5 ŠPR SE (SLUCAJNI.IZBOR :ZIVOTINJE) (SLUCAJNI.IZBOR :GLASANJE )WAIT 80 CT VESELA.FARMA END

TO SLUCAJNI.IZBOR :SPISAK OP ITEM ( 1 + RANDOM COUNT :SPISAK) :SPISAK END

TO POSTAVA MAKE "ZIVOTINJE ŠPSI MAČKE ŽABE KRAVE OVCE GUSKE SVINJE KOKOŠI MIŠEVI MAGARCI]MAKE "GLASANJE ŠLAJU MIJAUČU KREKE]U MUČU BLEJE GAČU ROK]U KOKODAČU CIJUČU NJAČU]END

DANI MLADIH INFORMATIČARA HRVATSKE 1997.Zadar, 29. travnja - 3. svibnja 1997.

Prvi zadatak (1)

Napiši proceduru FAKT :N koja će izračunati faktorjel broja :N.

Faktorjel broja N je umnožak svih prirodnih brojeva od 1 do N gdje je Npozitivan cijeli broj. Faktorjel broja 1 je 1, a faktorjel broja 0 (nula)je tako|er 1.

Primjer: faktorjel od 4 = 1*2*3*4 = 24Procedura FAKT vraća faktorjel broja :N kao svoj izlaz.Program snimi pod imenom FAKT.LGO

Drugi zadatak (2)

Napiši proceduru BAZA20 :BROJ20 koja će pretvoriti broj zapisan u bazi dvadeset, naveden u listi :BROJ20, u dekadski broj. Taj dekadski brojprocedura BAZA20 vraća kao svoj izlaz.

Lista :BROJ20 ima sljedeći format:- sadrži neograničen broj riječi duljine jednog karaktera- svak riječ predstavlja jednu znamenku broja zapisanog u brojevnom sustavu s bazom 20 (dvadeset)- znamenke, odnosno riječi liste, mogu biti: brojevi od 0 do 9 ili slova od A do J

Pretvaranje broja iz baze 20 u dekadski sustav vrši se ovako:- svaka znamenka (broja zapisanog u bazi dvadeset) se množi sa i-tom potencijom broja dvadeset, gdje je i težina svake znamenke unutar broja, te se tako dobiveni umnošci zbroje.- i odnosno težine znamenki se odre|uju na sljedeći način:

- znamenka na krajnjem desnom mjestu ima težinu 0 (nula)- sljedeća znamenka lijevo do znamenke s težinom 0 ima težinu 1- sljedeća znamenka lijevo do znamenke s težinom 1 ima težinu 2- sljedeća znamenka lijevo do znamenke s težinom 2 ima težinu 3- i tako dalje dok ima znamenaka

- vrijednost znamenaka (s lijeve strane jednakosti su znamenke u bazi 20, a s desne strane znaka jednakosti je njihova vrijednostu dekadskom sustavu):

0 = 0 A = 101 = 1 B = 11 2 = 2 C = 12 3 = 3 D = 13 4 = 4 E = 14 5 = 5 F = 15 6 = 6 G = 16 7 = 7 H = 17 8 = 8 I = 18 9 = 9 J = 19

Primjer:Broj u bazi 20: 1H0AJ9

težine: 5 4 3 2 1 01 H 0 A J 9

umnošci: 3200000 + 2720000 + 0 + 4000 + 380 + 9 = 5924389

Broj u bazi 10: 5924387

Program snimite pod imenom BAZA20.LGO

Treći zadatak (3)

Napiši proceduru SORT :UCENICI koja će sortirati podatke iz liste :UCENICI.Sortirana lista je izlaz procedure SORT :UCENICI.

Lista :UCENICI ima sljedeći format:- sastoji se od riječi- sadrži podatke o učenicima: razred i ime učenika- na neparnim mjestima (1,3,5 ...) se nalaze oznake razreda koji odre|eni učenici poha|aju (oznaka razreda je jedna riječ)- na parnim mjestima (2,4,6 ...) se nalaze imena odre|enih učenika (ime je jedna riječ)- na primjer: imamo 4 učenika:

- Marek koji ide u 8A razred- Sandra koja ide u 6A razred- Diggy koji ide u 7A razred- Alan koji ide u 7A razred

Lista :UCENICI izgleda ovako: Š8A MAREK 6A SANDRA 7A DIGGY 7A ALAN]- riječi u listi nemaju nikakvo ograničenje (mogu biti samo slova ili samo brojke ili jedno i drugo)- može postojati više učenika s istim imenom, a da idu u različite razrede- u istom razredu može postojati više učenika s istim imenom- maksimalan broj učenika je neograničen

Sortiranje se vrši sljedećim redosljedom:1. prvo se članovi sortiraju po razredima od nižeg prema višem2. zatim se sortiraju unutar razreda po učenicima odnosno ako postoji više učenika u istom razredu tada dolazi prije onaj učenik čije je ime "manje" (ako su imena slovčana tada je prije onaj čije je ime prije po abecedi)

Izlazni podatak je lista koja sadrži sortirane podatke iz liste :UCENICI.Procedura SORT vraća tu listu kao svoj izlaz.

Primjer:? SORT Š8A MAREK 6A SANDRA 7A DIGGY 7A ALAN 1C MAREK 7A ALAN]Result: Š1C MAREK 6A SANDRA 7A ALAN 7A ALAN 7A DIGGY 8A MAREK]?program snimite pod imenom SORT.LGO

Četvrti zadatak (4)

Napiši proceduru POOL :A :B :KUT :JACINA koja će simulirati putanju biljarske kugle na biljarskom stolu. Kuglu će simulirati kornjača.

Simulacija se izvodi na sljedeći način:- nacrta se pravokutnik širine :A i visine :B koji predstavlja rubove martinele stola- sredina stola moara biti na sredini ekrana- kornjača kreće od sredine stola odnosno od sredine ekrana i za sobom ostavlja trag odnosno crta putanju kugle- kornjača kreće pod kutem :KUT gdje je :KUT otklon početnog smjera kornjače od okomice na gornju martinelu u smjeru kazaljke na satu- kada do|e na martinelu kornjača se odbija od martinele (ruba pravokutnika) zakonom koji kaže da je upadni kut jednak kutu odbijanja- duljina putanje kornjače je odre|ena parametrom :JACINA u pikselima- nakon što se putanja nacrta kornjača mora ostati na kraju traga, odnosno njena pozicija mora biti na mjestu gdje se kornjača, odnosno kugla, zaustavila.

RJEŠENJA ************************************************

1. zadatak (FAKT)

TO FAKT :NIF :N<0 THEN PRINT ŠPARAMETAR MORA BITI POZITIVAN CIJELI BROJ]TOPLEVELIF (OR (:N=1) (:N=0)) THEN OP 1OP :N * FAKT (:N-1)END

2. zadatak (BAZA20)

TO BAZA20 :BROJ20IF (LIST? :BROJ20)=:FALCSE THEN PRINT ŠULAZ MORA BITI LISTA] STOPIF (COUNT :BROJ20)<1 THEN PRINT ŠPRAZNA LISTA] STOPMAKE "MAXTEZINA (COUNT :BROJ20)-1MAKE "I :MAXTEZINAMAKE "BROJ10 0REPEAT (:MAXTEZINA+1) ŠMAKE "BROJ10 :BROJ10+(ZNAM (FIRST :BROJ20)) * POT20 :I MAKE "I :I -1 MAKE "BROJ20 BF :BROJ20]OP :BROJ10END

TO ZNAM :ZIF (AND (ASCII :Z)>47 (ASCII :Z)<58) THEN OP (ASCII :Z)-48IF (AND (ASCII :Z)>64 (ASCII :Z)<75) THEN OP (ASCII :Z)-55

PRINT ŠKRIVA ZNAMENKA] TOPLEVELEND

TO POT20 :PIF :P=0 THEN OP 1OP 20*POT(:P-1)END

3. zadatak (SORT)

IF (LIST? :UCENICI) = :FALSE PRINT ŠULAZNI PODATAK MORA BITI LISTA] STOPIF (EMPTY? :UCENICI) = :TRUE PRINT ŠPRAZNA LISTA] STOPIF NOT ((REMAINDER COUNT :UCENICI 2) = 0) PRINT ŠNEPARAN BROJ PODATAKA] STOPMAKE "BRUC (COUNT :UCENICI)/2MAKE "A ARRAY FPUT .BRUC Š2]FILLARRAY :A :UCENICISORTIRAJMAKE "SUCENICI Š]FOR "I 0 (:BRUC-1) Š MAKE "SUCENICI SE :SUCENICI AGET :A FPUT :I Š0] MAKE "SUCENICI SE :SUCENICI AGET :A FPUT :I Š1]]OP :SUCENICIEND

TO SORTIRAJMAKE "GRANICA :BRUC-2MAKE "GOTOVO :FALSEWHILE Š:GOTOVO = :FALSE] ŠMAKE "GOTOVO :TRUE FOR "I 0 :GRANICA ŠIF ZAMJENITI = :TRUE ZAMJENI] MAKE "GRANICA :GRANICA-1]END

TO ZAMJENITIIF (AGET :A FPUT :IŠ0]) = (AGET :A FPUT :I+1Š0]) THEN IF (AGET :A FPUT :IŠ1]) > (AGET :A FPUT :I+1Š1]) THEN OP :TRUEIF (AGET :A FPUT :IŠ0]) > (AGET :A FPUT :I+1Š0]) THEN OP :TRUEOP :FALSEEND

TO ZAMJENIMAKE "POM ARRAY 2ASET :POM 0 AGET :A FPUT :I Š0] ASET :POM 1 AGET :A FPUT :I Š1] ASET :A FPUT :I Š0] AGET :A FPUT :I+1 Š0] ASET :A FPUT :I Š1] AGET :A FPUT :I+1 Š1] ASET :A FPUT :I+1 Š0] AGET :POM 0 ASET :A FPUT :I+1 Š1] AGET :POM 1MAKE "GOTOVO :FALSE

END

4. zadatak (POOL)

TO POOL :X :Y :KUT :JACINAHOME CSPU FD :Y/2 LT 90 FD :X/2 RT 180 PDREPEAT 2 ŠFD :X RT 90 FD :Y RT 90]PU HOME PDSETH :KUTMAKE "JAKOST 1WHILE Š:JAKOST<=:JACINA] ŠMAKE "JAKOST :JAKOST+1 FD 1 TESTIRAJ]END

TO TESTIRAJIF YCOR=(:Y/2) THEN GORNJAIF YCOR=(-:Y/2) THEN DONJAIF XCOR=(-:X/2) THEN LIJEVAIF XCOR=(:X/2) THEN DESNAEND

TO GORNJART (180-2*HEADING)END

TO DONJALR (180-2*(180-HEADING))END

TO LIJEVART (180-2*(HEADING-270))END

TO DESNALT (180-2*(90-HEADING))END