158
2016 EDIN PAŠIĆ BIHAĆ Uvod u programski jezik

Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

2016

EDIN PAŠIĆ

BIHAĆ

Uvod u programski jezik

Page 2: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

Sallallâhu 'alâ sejjidin

Neka je salavat i selam na prvaka Muhammeda a.s.

i na njegovu porodicu

ii

sejjidinâ Muhammedin ve âlih

Neka je salavat i selam na prvaka Muhammeda a.s.

i na njegovu porodicu

lihî ve sellem

Neka je salavat i selam na prvaka Muhammeda a.s.

Page 3: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

iii

Predgovor

Ovo je drugo izdanje skripte. Skripta je dopunjena novim zadacima tako da sadrži preko 150

zadataka s primjerima, zadacima za samostalan rad i zadacima s takmičenja. Zadacima

predviđenim za samostalan rad dodali smo primjere za ulaz/izlaz, tako da se lakše može

provjeriti rješenje, jer početnici, kada napišu program, imaju problem da odrede s kojima ga

vrijednostima testirati. Ispravljene su pronađene greške u test primjerima zadataka s

takmičenja.

Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko

prethodno znanje ni o jednom programskom jeziku. Naravno, bilo kakvo predznanje o

programskim jezicima bi bilo od velikog značaja za bolje razumijevanje, ali nije neophodno.

Napisana je da služi kao interni udžbenik u OŠ "Kamenica" Bihać za pripremu učenika za

takmičenja iz programiranja u Unsko-sanskom kantonu.

Skripta se sastoji iz nekoliko dijelova. U prvom dijelu je objašnjena instalacija programskog

paketa Code Blocks. Također, u nekoliko narednih strana je opisan program i sve opcije koje

su nam potrebne za nesmetan rad. U drugom dijelu su opisane naredbe za ulaz i izlaz. Njih

treba dobro svladati i ne prelaziti u sljedeće poglavlje dok se dobro ne savladaju. U trećem

dijelu su opisane matematičke funkcije samo nama potrebne i načini ispisivanja decimalnih

brojeva. U četvrtom dijelu se bavimo naredbama od proste naredbe do ciklusa. Peti dio

obrađuje nizove i to samo jednodimenzionalni niz. Nizovi su nam potrebni više u šestom

poglavlju gdje string obrađujemo preko niza. Ostala poglavlja sadrže zadatke i pitanja s

općinskih i kantonalnih takmičenja u USK održanih posljednjih godina.

Svako poglavlje sadrži određen broj riješenih primjera koje treba dobro proučiti. U rješenju

svakog primjera se nalazi tekst koji opisuje kako se dolazi do rješenja, te kako program radi.

Na kraju svakog poglavlja se nalazi određen broj zadataka namijenjenih za samostalan rad.

Preporučuje se da se svi zadaci riješe prije nego li se pređe na naredno poglavlje, jer svaki od

njih donosi neko novo znanje, neki novi trik. Programiranje je u početku teško, pa nemojte

odmah odustajati. Imajte na umu da se programiranje uči na greškama.

Oni koji žele koristiti ovu skriptu u svom radu trebaju se javiti na e-mail. Kao i svaka, i ova

skripta sadrži greške, pa sve sugestije i primjedbe pošaljite na e-mail:

[email protected]

Page 4: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

iv

SADRŽAJ

1. RAZVOJNO OKRUŽENJE ................................................................................................... 1

1.1. Izgled programa ........................................................................................................... 4

1.2. Kreiranje datoteke ........................................................................................................ 5

1.3. Struktura programa ....................................................................................................... 8 1.4. Pokretanje programa .................................................................................................... 9

1.5. Greške ........................................................................................................................ 10 2. NAREDBE ZA IZLAZ I ULAZ .......................................................................................... 12

2.1. Početni program ......................................................................................................... 12

2.2. Naredba cout .............................................................................................................. 12

2.3. Varijacije naredbe cout .............................................................................................. 13

2.4. Osnovni tipovi podataka ............................................................................................ 16 2.5. Deklaracija varijabli ................................................................................................... 18

2.6. Operatori i izrazi ........................................................................................................ 20

2.6.1. Operator pridruživanja ........................................................................................ 20 2.6.2. Inicijalizacija varijabli ........................................................................................ 21 2.6.3. Aritmetički operatori .......................................................................................... 21

2.7. Naredba za ulaz .......................................................................................................... 24 2.8. Zadaci za samostalan rad ........................................................................................... 28

3. MATEMATIČKE FUNKCIJE ............................................................................................ 30

3.1. Decimalni brojevi ....................................................................................................... 31

3.1.1. Fixed ................................................................................................................... 31 3.1.2. Setprecision ........................................................................................................ 32

3.2. Ostali manipulatori ..................................................................................................... 33 3.3. Zadaci za samostalan rad ........................................................................................... 33

4. NAREDBE ........................................................................................................................... 34

4.1. Sekvenca ili blok ........................................................................................................ 34

4.2. Relacijski operatori .................................................................................................... 35 4.3. Selekcije ..................................................................................................................... 35

4.3.1. Naredba if ........................................................................................................... 35 4.3.2. Naredba if-else .................................................................................................... 37 4.3.3. Zadaci za samostalan rad .................................................................................... 41

4.4. Logički operatori ........................................................................................................ 42

4.4.1. Zadaci za samostalan rad .................................................................................... 47 4.5. Ciklusi ili petlje .......................................................................................................... 47

4.5.1. For petlja ............................................................................................................. 48 4.5.2. Zadaci za samostalan rad .................................................................................... 55 4.5.3. While petlja ........................................................................................................ 57 4.5.4. Do while petlja ................................................................................................... 60 4.5.5. Naredba break ..................................................................................................... 61 4.5.6. Naredba switch ................................................................................................... 61 4.5.7. Zadaci za samostalan rad .................................................................................... 63

5. NIZOVI (POLJA) ................................................................................................................ 64

Page 5: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

v

5.1. Jednodimenzionalni nizovi ......................................................................................... 65

5.2. Zadaci za samostalan rad ........................................................................................... 69

6. STRING ............................................................................................................................... 70

6.1. Deklaracija stringa ..................................................................................................... 70

6.2. Čitanje i ispisivanje znakova ...................................................................................... 71

6.3. Ispitivanje znakova ..................................................................................................... 72

6.4. Rad sa stringom (nizom znakova) .............................................................................. 76

6.5. Zadaci za samostalan rad ........................................................................................... 81

7. ZADACI S OPĆINSKIH TAKMIČENJA ........................................................................... 82

7.1. Zadaci 2010 ................................................................................................................ 82

7.2. Zadaci 2011 ................................................................................................................ 85

7.3. Zadaci 2012 ................................................................................................................ 88

7.4. Zadaci 2013 ................................................................................................................ 91 7.5. Zadaci 2014 ................................................................................................................ 94

7.6. Zadaci 2015 ................................................................................................................ 97

7.7. Zadaci 2016 .............................................................................................................. 100 7.8. Zadaci 2017 .............................................................................................................. 103

8. ZADACI S KANTONALNIH TAKMIČENJA ................................................................. 106

8.1. Zadaci 2011 .............................................................................................................. 106

8.2. Zadaci 2012 .............................................................................................................. 109

8.3. Zadaci 2013 .............................................................................................................. 112 8.4. Zadaci 2014 .............................................................................................................. 115

8.5. Zadaci 2015 .............................................................................................................. 119 8.6. Zadaci 2016 .............................................................................................................. 122 8.7. Zadaci 2017 .............................................................................................................. 125

9. TEORETSKI ZADACI S OPĆINSKIH TAKMIČENJA .................................................. 128

9.1. Zadaci 2010 .............................................................................................................. 128

9.2. Zadaci 2011 .............................................................................................................. 129

9.3. Zadaci 2012 .............................................................................................................. 130

9.4. Zadaci 2013 .............................................................................................................. 133 9.5. Zadaci 2014 .............................................................................................................. 136

9.6. Zadaci 2015 .............................................................................................................. 137

9.7. Zadaci 2016 .............................................................................................................. 138 9.8. Zadaci 2017 .............................................................................................................. 140

10. TEORETSKI ZADACI S KANTONALNIH TAKMIČENJA ........................................ 141

10.1. Zadaci 2011 ............................................................................................................ 141

10.2. Zadaci 2012 ............................................................................................................ 142

10.3. Zadaci 2013 ............................................................................................................ 146 10.4. Zadaci 2014 ............................................................................................................ 148

10.5. Zadaci 2015 ............................................................................................................ 149

10.6. Zadaci 2016 ............................................................................................................ 150 10.7. Zadaci 2017 ............................................................................................................ 152

Page 6: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

1

1. RAZVOJNO OKRUŽENJE

Programsko okruženje koje ćemo koristiti za pisanje naših programa naziva se Code Blocks.

Ovo sam okruženje odabrao jer je besplatno, ugodnog izgleda, lako se instalira i malih je

dimenzija. Posjeduje sve osobine koje su potrebne za učenje programiranja, a i više od toga.

Kako instalirati Code Blocks? Moramo imati instalacijski CD ili ako imamo internet, onda

treba otići na stranicu:

http://www.codeblocks.org/downloads/26#windows

Dobićemo sljedeći link (Slika 1) i odaberemo codeblocks-16.01mingw-setup.exe tj. kliknemo

na Sourceforge.net (može i na FossHub), gdje pokazuje crvena strelica, te sačekamo par

sekundi i preuzimanje će početi automatski.

Slika 1

Kad smo preuzeli instalacijsku datoteku, onda možemo krenuti s instalacijom programa. Inače

instalacija je jednostavna, samo Next, Next, Next, itd. Ali evo ipak malo detaljnijeg uputstva.

Kao i kod svake instalacije, kliknemo dva puta malo brže da bi pokrenuli instalaciju. Računar

će nas pitati želimo li zaista pokrenuti ovaj program na šta ćemo mi reći (kliknuti Run). Ako

imate Windows 7 operativni sistem, onda je preporučeno da instalaciju započnete kao

administrator (admin), tako što kliknete desnim dugmetom miša na instalacijsku datoteku

Code Blocks-a i odaberete Run as admin. Potom ćete dobiti čarobnjak koji će vas voditi kroz

instalaciju tj. odaberete Next. Zatim dobijete prozor o licenci, tu odaberemo I Agree. U

sljedećem prozoru ako nije, označimo sve i odaberemo Next, slika 2.

Page 7: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

2

A zatim odaberemo mjesto gdje će program biti instaliran (instalacijski program sam odabere

mjesto, ako vam ne odgovara možete promijeniti, najbolje ostaviti) i kliknuti na Install.

Slika 3 Odabir foldera

Sačekamo par minuta, pa kad se završi instalacija pojavit će se prozor u kojem vas računar

pita želite li pokrenuti Code Blocks, odaberemo Yes (Da). Nakon toga, će se pojaviti prozor:

Slika 2

Page 8: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

3

Slika 4 Lista otkrivenih kompajlera

Ovo predstavlja pronađene kompajlere na vašem računaru. Odaberete prvi tj. GNU GCC

Compiler i kliknete na OK. I to je to. Instalirali ste Code Blocks.

U slučaju da koristite operativni sistem Windows 7 može se dogoditi da vam kompajler ne

bude pronađen. Tada ga morate vi pronaći. Kako? Pa odmah nakon instalacije računar će vas

pitati želite li pokrenuti Code Blocks, odgovorite potvrdno. Nakon toga on će potražiti

kompajlere na vašem računaru. Dobit ćete sliku sličnu slici 4. No, ako ne pronađe GNU GCC

Compiler, tada će pisati Invalid. U tom slučaju, pokrenete program Code Blocks (slika 5)

odaberete

Settings → Compiler

Zatim, kliknuti na Toolchain executables kao na slici 5. A zatim na Auto-detect. Ako ni ovo

ne pomogne, onda otići u folder gdje je instaliran Code Blocks i vidjeti gdje se nalazi folder

kompajlera pod imenom MinGW. Zatim, taj put napisati ručno npr. kao što na ovoj slici piše

C:\Program Files\CodeBlocks\MinGW (obično je ovaj, ali zavisi gdje ste ga instalirali).

Page 9: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

4

Slika 5 Compiler settings (Podešavanje kompajlera)

1.1. Izgled programa

Pokrenemo Code Blocks. Nakon pokretanja programa, pojavit će se na početku mali prozor

koji sadrži kratke upute. Ako ne želimo da nam se pojavljuje pri sljedećem pokretanju

programa otkačimo kvačicu i kliknemo na OK. Izgled programa Code Blocks je:

Slika 6 Izgled programa Code Blocks

Page 10: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

5

1.2. Kreiranje datoteke

Sada ćemo naučiti kako kreirati datoteku u koju ćemo pisati naše kodove. Ima više načina

kako to uraditi.

Mi ćemo navesti jedan koji možda nije najkraći, ali za početnike je najbolji. Uradimo

sljedeće, kliknemo na:

File ⟶New ⟶File...

Slika 7 Kreiranje source datoteke

Dobivamo sljedeći prozor u kojem kliknemo na drugu sličicu ispod koje piše C/C++ source,

a zatim na Go.

Slika 8 Izbor datoteke

Page 11: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

6

U sljedećem koraku samo kliknemo na Next. Potom odaberemo C++ i kliknemo na Next.

Pazite da u ovom koraku ne odaberete jezik C, jer onda nećete moći raditi s nekim

naredbama.

Slika 9 Izbor jezika

Još malo i gotovi smo. U ovom prozoru trebamo odabrati mjesto na računaru gdje će se

nalaziti naša datoteka odnosno naš program. To činimo tako što kliknemo na sličicu gdje piše

File name with full path odnosno na tri tačke (...).

Slika 10 Izbor lokacije na disku

Page 12: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

7

Pojavit će se još jedan prozor, u kojem odaberemo:

1. gdje će biti program i

2. upišemo njegovo ime, te kliknemo na Spremi (Save), slika 11.

Slika 11 Izbor foldera (mape) gdje će biti program

Folder (mapu) gdje biti vaši programi napravite prije. U ovom slučaju to je folder

ZadaciC++.

U imenu foldera, gdje će biti vaši programi ne smije biti kvačica nad slovima, tj koristiti

engleski alfabet za ime datoteke programa.

Također, put do tog folder ne smije sadržavati nad slovima kvačice, jer se može vrlo lako

desiti da vam program neće raditi tj. neće ga moći kompajler naći.

Stoga je najbolje kreirati folder, gdje će biti programi, odmah čim otvorimo C particiju ili

neku drugu.

Na kraju kliknemo na Finish. Nova datoteka izvornog koda je stvorena.

Page 13: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

8

Slika 12 Izgled kreirane datoteke

1.3. Struktura programa

Za ljude koji tek uče programirati, najbolji način učenja je da napišu program. Pa ćemo i mi

krenuti tim putem. U prethodnom dijelu smo naučili kako napraviti source file (datoteku u

koju ćemo pisati naše naredbe - kodove).

Napišimo sljedeći kod na mjestu gdje piše "Tu pišemo naredbe!!!", slika 12.

Naredbe za prvi program:

#include<iostream>

using namespace std;

int main(){

cout<<"Moj prvi program";

return 0;

}

Page 14: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

9

Objasnimo ukratko značenje svake linije koda.

#include<iostream> → Linija počinje sa znakom Hach # (taraba). To je pretprocesorska

radnja koja računaru kaže da u naš program uključi iostream datoteku.

using namespace std; → Ovdje su using i namespace ključne riječi pomoću kojih

se aktivira određeno područje imena, u našem slučaju std, koji je naziv imenika u kojem su

obuhvaćene sve standardne funkcije, te funkcije iz iostream biblioteke.

int main()→ Svaki program u C++ mora da ima bar jednu main (glavnu) funkciju.

Deklaracija int ispred main znači da funkcija vraća cjelobrojnu vrijednost, pa se na samom

kraju programa mora staviti naredba return 0;. Umjesto tipa int mogli smo staviti void, pa

tada na kraju ne bi morali pisati return 0;.

cout<<"Moj prvi program";→ Ovo ispisuje poruku na ekran monitora tačno kako piše

u navodnicima. Inače, cout<< je naredba za ispis podataka na ekran monitora.

1.4. Pokretanje programa

Sada ćemo naučiti kako pokrenuti program. Dakle, kreirali smo datoteku i napisali (prepisali)

TAČNO prethodni kod. Kako pokrenuti program? Ima više načina. Najjednostavniji i najlakši

je da na tastaturi pritisnemo tipku

F9 Nakon toga računar će kompajlirati vaš kod i pokrenuti program, pod uslovom da ste sve

ispravno napisali. Ako je bilo tako dobit ćemo prozor crne boje s bijelim slovima, slika 13.

Slika 13 Izgled izvršenja programa

Page 15: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

10

Ako smo napravili neku sintaksičku (pravopisnu) grešku tj. zaboravili smo jedno slovo ili

tačku-zarez (;), onda nam se neće pojaviti ovakav crni prozor nego ćemo dobiti upute kako da

popravimo greške.

1.5. Greške

Greške su česte, naročito kod početnika. Zaboravljeno slovo, tačka-zarez, krivo napisana neka

naredba, zaboravljena zagrada itd. su samo neke od najčešćih grešaka. Ne brinite, one nisu

veliki problem, jer nam Code Blocks kaže gdje je i šta ne valja. A gdje se nalaze te važne

informacije? Na dnu prozora. Ako npr. u prethodnom kodu izostavimo ; koja se nalazi iza

navodnika, te pokrenimo program tipkom F9, dobićemo upozorenje o greškama, slika 14.

Analizirajmo na šta nas kompajler upozorava.

Prva linija: D:\Prvi program.. kaže da je to u funkciji int main() (jer može biti više funkcija,

mi za sada imamo jednu).

Druga linija: Čitamo samo ispod Message (poruka) šta piše, a piše sljedeće:

error: expected ' ; ' before 'return'

a znači:

greška: očekivano (vjerovatno) je problem u ' ; ' tačka-zarezu, GDJE?, prije naredbe return

Crveni kvadratić također ukazuje gdje se pogreška nalazi (imati na umu da NIJE u istoj liniji

gdje je kvadratić nego prije kvadratića tj. u liniji broj 6.)

Slika 14 Analiza napravljenih greški

Page 16: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

11

Također, ispod naziva Line stoji broj koji označava gdje je mogući problem. U našem slučaju

to je broj 7.

Ako se ovaj izvještaj ne vidi, onda ga uključimo (učinimo vidljivim) pritiskom na tipku

F2

Kad popravimo greške pritisnemo tipku F9 da bi ponovo kompajlirali i pokrenuli program.

Ako se opet pojave greške popravljamo dok nam na dnu ne bude pisalo 0 errors tj. dok ne

dobijemo crni prozor. U slučaju da ne vidimo brojeve linija, onda ih uključimo tako što kliknemo na

Settings → Editor

Dobivamo prozor, u kojem kliknemo na General settings → Other editor settings, i gdje piše

Show line numbers označimo kvačicom i kliknemo na OK, slika 15.

Slika 15 Brojevi linija (Line numbers) Kod treba biti lijepo napisan da bi bio pregledan, zbog kasnijih popravki. Da se mi ne bi

previše oko toga zamarali, kada pišemo kod (program), jednostavno kliknemo desnim

dugmetom miša i odaberemo Format use Astyle.

Page 17: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

12

2. NAREDBE ZA IZLAZ I ULAZ

2.1. Početni program

Kada dobijemo neki problem da riješimo tj. da napišemo odgovarajući program onda

slijedimo nekoliko koraka koji su potrebi u svakom programu.

Radimo sljedeće:

1. Kreiramo datoteku u koju ćemo pisati kod (to radimo na prethodno opisan način)

2. Napišemo sljedeći kod (ovaj kod ima svaki program i zato ga naučimo NAPAMET):

#include<iostream> using namespace std; int main() { return 0; }

3. Kompajliramo i pokrenemo program tipkom F9. Ako dobijemo crni prozor, onda je sve OK, ako ne popravljamo greške. Poslije toga

pristupamo rješavanju zadanog problema. Svaki zadatak treba na ovakav način rješavati da bi

se izbjegle nepotrebne greške, a koje je nekada teško otkriti.

2.2. Naredba cout

Naredbu cout smo već upoznali u našem prvom programu, a sada ćemo se s njom detaljnije

upoznati. Za izlaz (ispis) na ekran monitora koristimo identifikator cout<<.

Funkcija cout usmjerava podatke s izlaznog toka na ekran monitora. Ispis podataka se

ostvaruje operatorom ispisa (<<).

ZAPAMTITI: Tekst koji ispisujemo naredbom cout stavljamo u znake navoda

Page 18: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

13

Slika 16 Naredba cout

2.3. Varijacije naredbe cout

Jedna od najboljih metoda koje nam pomažu da bolje razumijemo funkcioniranje programa i

pojedinih naredbi jest da u program unesemo manje izmjene, a zatim opažamo kakve

posljedice će takve izmjene izazvati. Napisat ćemo nekoliko različitih varijanti jednog te istog

programa, te navesti njihova izvršavanja da bi mogli izvući određene zaključke.

Naš prvi program: Rezultat pokretanja programa:

#include<iostream> using namespace std; int main() { cout<<"Moj prvi program"; return 0; }

ZAKLJUČAK: Ništa se na izlazu (ekranu) ne mijenja pisali mi naredbe u jednom ili više

redova.

#include<iostream> using namespace std; int main() { cout<< "Moj prvi program"; return 0; }

ZAKLJUČAK: Ništa se ne mijenja, ako pišemo u više redova.

Page 19: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

14

#include<iostream> using namespace std; int main() { cout << "Moj prvi program"; return 0; }

Ili

#include<iostream> using namespace std; int main() { cout << "Moj prvi program"; return 0; }

ZAKLJUČAK: Ništa se ne mijenja. Pisali mi naredbe u jednom redu ili u više redova, pa čak

i razmak između naredbi, ništa se ne mijenja, ne utiče na rezultat programa.

#include<iostream> using namespace std; int main() { cout<<"Moj prvi program."<<"Ucim C++."; return 0; }

ZAKLJUČAK: Ove dvije rečenice su ispisane spojene. Ako želimo da poslije tačke imamo

razmak onda u prvoj rečenici poslije tačke napravimo jedan razmak ili u drugoj rečenici prije

riječi Ucim napravimo jedan razmak.

Ako ispisujemo više rečenica ili pak više varijabli pomoću jedne naredbe cout, tada samo

jednom napišemo cout, a za ispis koristimo identifikator <<.

Sada ćemo koristiti dvije cout naredbe.

Page 20: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

15

#include<iostream> using namespace std; int main() { cout<<"Moj prvi

program."; cout<<"Ucim C++."; return 0; }

ZAKLJUČAK: Rezultat isti, ništa se nije promijenilo. Možemo koristiti više naredbi cout

tako da je svaka u novom redu ili jednu. Ako koristimo jednu naredbu cout uočiti da nju

napišemo jednom a identifikator << pišemo za svaki ispis.

Kako da nam poslije tačke bude razmak? Odgovor je jednostavan. Trebamo samo ispisati

jedan prazan razmak u prvoj ili drugoj rečenici, isto je. Mi ćemo ispisati tri u prvoj da se

dobro vidi što se hoće reći.

#include<iostream> using namespace std; int main() { cout<<"Moj prvi program. "; cout<<"Ucim C++."; return 0; }

ZAKLJUČAK: Ako hoću da ispišem razmak, to uradim tako što u znacima navoda napravim

razmaka koliko mi treba.

Postavlja se pitanje, kako da druga rečenica bude u novom redu? Kako to uraditi?

Kada želimo dobiti JEDAN PRAZAN RED ili PRIJEĆI U NOVI RED onda koristimo

naredbu endl.

#include<iostream> using namespace std; int main() { cout<<"Moj prvi program."<<endl; cout<<"Ucim C++."; return 0; }

Page 21: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

16

Šta ako stavimo dvije endl naredbe?

#include<iostream> using namespace std; int main() { cout<<"Moj prvi program."<<endl<<endl; cout<<"Ucim C++."; return 0; }

ZAKLJUČAK: Dobili smo novi red i jedan prazan red.

Ispis četiri reda.

#include<iostream> using namespace std; int main() { cout<<"Moj prvi program."; cout<<endl<<endl; cout<<endl; cout<<endl; cout<<"Ucim C++."; return 0; }

ZAKLJUČAK: Uočimo da naredbu endl ne možemo koristiti ako prije nismo stavili naredbu cout. Zadatak 1. Napisati program koji će na ekranu (zaslonu) monitora ispisati tekst tačno ovako kako izgleda. Danas je lijep dan. Ucim C++. Idem u osnovnu skolu. Imam 10 godina. Sutra mi je rodjendan.

2.4. Osnovni tipovi podataka

Podatke možemo podijeliti na nepromjenjive (konstante) i promjenjive (varijable). Konstante

su podaci koji tokom izvršavanja programa ne mogu da promjene svoju vrijednost. Varijable

(promjenjive) su podaci koji tokom izvršavanja mogu da promjene svoju vrijednost.

Page 22: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

17

Identifikator predstavlja ime koje dodjeljujemo varijablama, funkcijama itd. Identifikator

(ime) može biti sastavljeno od slova engleskog alfabeta, prvi znak mora biti slovo ili znak

podvučeno „ _ “, brojeva i identifikator ne smije biti jednak nekoj od ključnih riječi.

Pri programiranju, pohranjujemo varijable u memoriji računara, ali računar mora znati kakve

podatke želimo pohraniti, jer ne zauzimaju svi podaci jednaku količinu memorije tj. moramo

reći računaru šta spremamo broj, slova, znakove, itd. Tako ako kažemo 13 to je podatak.

Kakav? Brojčani. Ako pak kažem Sunce. I ovo je podatak. Kakav? Znakovni. Zbog toga što

podaci mogu biti različiti po tipu (znakovni, brojčani) moramo računaru reći kakav tip

podatka unosimo i s kakvim će podacima on raditi.

Programski jezik C++ ima nekoliko osnovnih tipova podataka:

Tip podatka Oznaka tipa Broj bitova Opseg znakovni char 8 0 – 255 cjelobrojni int 16 -32768 – 32767 realni float 32 3.4E-38 – 3.4E+38 realni dvostruke preciznosti double 64 1.7E-308 – 1.E+38 ne sadrži vrijednosti void 0 bez vrijednosti

Prve dvije kolone tabele treba znati NAPAMET, šta znači i kako se piše. Tako pomoću tipa

char možemo spremati znakove (slova, brojeve, upitnik, uzvičnik, i ostalo), int nam govori

da se radi o cijelim brojevima, float o realnim brojevima, double je također realan broj

samo u njega može "stati" znatno veći broj. Nekada radimo samo npr. s pozitivnim brojevima,

pa su nam negativni nepotrebni, da ne bi gubili memoriju i da bi mogli spremiti što veći

pozitivan broj onda koristimo modifikator. Tako s modifikatorom unsigned tip int

zauzima opseg od 0 – 65534.

Osnovni tipovi podataka se mogu modificirati (promijeniti) koristeći jedan ili više

modifikatora:

• signed

• unsigned

• short

• long

Sljedeća tabela pokazuje kako se koriste modifikatori, koliko memorije imamo, kolika je

maksimalna i minimalna vrijednost koju možemo staviti u određenu varijablu.

Page 23: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

18

Tip Količina Raspon

char 1byte -127 to 127 or 0 to 255

unsigned char 1byte 0 to 255

signed char 1byte -127 to 127

int 4bytes -2147483648 to 2147483647

unsigned int 4bytes 0 to 4294967295

signed int 4bytes -2147483648 to 2147483647

short int 2bytes -32768 to 32767

unsigned short int 2bytes 0 to 65,535

signed short int 2bytes -32768 to 32767

long int 4bytes -2,147,483,647 to 2,147,483,647

signed long int 4bytes kao long int

unsigned long int 4bytes 0 to 4,294,967,295

float 4bytes +/- 3.4e +/- 38 (≈7 cifara)

double 8bytes +/- 1.7e +/- 308 (≈15 cifara)

long double 8bytes +/- 1.7e +/- 308 (≈15 cifara)

Međutim, ove vrijednosti ovise i od kompajlera koji koristimo, te i od računara na kojem

radimo.

2.5. Deklaracija varijabli

Kada smo naučili koje tipove podataka imamo, vrijeme je da se upoznamo detaljnije s

varijablama. Već smo rekli da su varijable podaci koji tokom izvršavanja programa mijenjaju

svoju vrijednost.

Sve varijable (promjenjive) koje se koriste u programu potrebno je deklarirati, odnosno dati im ime (ili identifikator) i odrediti tip.

Tip smo naučili prethodno šta je npr. int, char, double, itd, a ime predstavlja naziv te

varijable i dajete ga vi, onako kao želite. Najbolje je da to ime upućuje na ono na šta se

odnosi. Npr. ako računate obim kvadrata, onda je za ime varijable, u koju ćemo spremiti

Page 24: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

19

vrijednost, poželjno uzeti ime: Obim, ili obim, ili samo slovo O. Može i neko drugo ime npr.

Aligator, ali kad to vidimo u programu koji računa obim nećemo moći zaključiti po tom

imenu da se radi o obimu.

SVE VARIJABLE PRIJE UPOTREBE U PROGRAMU MORAMO DEKLARIRATI,

INAČE ĆE NAM KOMPAJLER JAVITI GREŠKU.

Deklaracija varijabli se obavlja naredbom oblika:

tip podatka ime varijable

Primjer 1.

int a;

int a, b, c;

float zbir;

double x, y, razlika;

long double x, y;

char ime;

Vrlo je važno da razumijete šta su varijable i kako se deklariraju. Ako vam nije jasno šta je to

onda pročitajte još jednom, pa još jednom i tako dok ne bude jasno, jer one su dio gotovo

svake linije u programu, s njima radimo, s njima se igramo.

Tako u prethodnom primjeru int a; znači da smo kreirali varijablu, čije ime je a, te u nju

možemo staviti samo cjelobrojnu vrijednost. Na ovaj način mi kažemo računaru da nam

obezbjedi prostor u memoriji koji će se zvati a i da ćemo u njega "skladištiti" tj. pohraniti

samo cjelobrojne vrijednosti (negativne i pozitivne cijele brojeve, te nulu). Ako u ovu

Page 25: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

20

varijablu a pokušamo pridružiti (spremiti, pohraniti) vrijednost odnosno broj 5.23 (decimalni

broj), onda će računar spremiti samo cijeli dio tj. broj 5 a ostalo 0.23 će odbaciti.

Programski jezik C++ razlikuje velika i mala slova, tako je dopušteno služiti se istim

imenom varijable, samo pisano malim, odnosno velikim slovima za dvije različite varijable.

Mjesto deklaracije varijable u programu određuje područje djelovanja određene varijable.

Prema području djelovanja varijable mobu biti globalne i lokalne:

- globalne varijable, su dostupne kako za čitanje, tako i za promjenu u bilo kojem dijelu

programa, deklariraju se izvan svih funkcija, naredbi, petlji itd.

- lokalne varijable se deklariraju na početku neke funkcije ili na početku nekog bloka

naredbi. Ove varijable vrijede samo unutar funkcije ili bloka naredbi, jer izlaskom iz

funkcije ili bloka naredbi ove varijable više ne postoje.

Mi ćemo za sada najčešće koristiti globalne varijable. Nemojte da vas ovo zbunjuje. Trenutno

vam nije bitno ako ne znate šta to znači.

Ključne riječi koje ne smijete koristiti za imena varijabli i konstanti su:

auto

long

char

short

default

static

double

switch

extern

unsigned

goto

while

int

case

return

continue

sizeof

struct

enum

union

continue

struct

enum

for

volatile

break

register

const

signed

do

else

typedef

float

void

if

2.6. Operatori i izrazi

Kombinacijom varijabli, konstanti i operatora nastaju izrazi. Izrazi su riječi ili simboli koji

određuju da se s varijablama u programu nešto učini. Mogu biti unarni, binarni, ternarni.

2.6.1. Operator pridruživanja

Operatorom pridruživanja ili operatorom za dodjelu vrijednosti se varijabli s njegove lijeve

strane pridružuje (sprema, pohranjuje) vrijednost izraza koja se nalazi na desnoj strani. Tip

vrijednosti izraza treba odgovarati tipu varijable.

Operator pridruživanja je znak jednako: =

Page 26: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

21

Operator pridruživanja se može koristiti zajedno i s još jednim operatorom.

Primjer 2.

a = 5; (znači da će varijabli a biti pridružena (spremita, skladištita u nju) vrijednost 5)

a = a + 5; (znači da će varijabli a biti pridružena vrijednost izraza a + 5)

Ovo se može i drukčije zapisati:

a += 5;

Dakle, znak = ne znači da je lijeva strana jednaka desnoj, nego on kaže računaru da ono što je

na desnoj strani znaka jednako pridruži (spremi, skladišti) u varijablu na lijevoj strani znaka

jednako.

2.6.2. Inicijalizacija varijabli

Pridruživanje vrijednosti varijabli prilikom definisanja naziva se inicijalizacija varijable.

Deklaracija i inicijalizacija varijable se može obaviti u istom redu koda.

Primjer 3.

int a = 3;

Ovdje smo deklarirali varijablu a tj. odredili smo kakav tip podatka će sadržavati, te smo je

inicijalizirali odnosno pridružili joj vrijednost 3.

Dakle, kada napišemo int a; ili double a, b; mi smo izvršili deklaraciju varijabli, a kad

napišemo int a = 3; ili double a = 5.03, b = 3.25; mi smo izvršili deklaraciju

varijabli i inicijalizaciju (pridruživanje vrijednosti) varijabli.

2.6.3. Aritmetički operatori

Simboli aritmetičkih operatora uglavnom odgovaraju standardnim matematičkim oznakama

aritmetičkih operacija.

C++ operator Operacija

+ sabiranje

– oduzimanje

* množenje

/ dijeljenje

% ostatak pri cjelobrojnom dijeljenju

Page 27: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

22

Prva tri operatora +, -, i * imaju iste osobine kao u matematici, pa ih ne treba posebno

objašnjavati. Operator dijeljenja / ima isto značenje kao u matematici samo što morate voditi

računa koje brojeve tj. varijable dijelite.

Tako npr. ako računamo koliko je 5/2 gdje su 5 i 2 cijeli brojevi rezultat će biti 2, a ne 2.5

kao što bi pokazao kalkulator. Jer su 5 i 2 cijeli brojevi pa i rezultat će biti cijeli broj tj.

računar će odbaciti 0.5.

Ako pak računate 5.0/2 ili 5/2.0 ili 5.0/2.0 gdje je jedan realan ili oba tada će rezultat

biti 2.5. Ovdje treba samo voditi s računa s kojim vrijednostima radimo i kakav rezultat

očekujemo cijeli ili realni broj tj. decimalni.

Zadnji operator % (čitamo modulo) daje kao rezultat ostatak pri CJELOBROJNOM

dijeljenju.

Primjer 4. Izračunajmo sljedeće izraze sa znanjem iz matematike koristeći operatore (oznake)

C++.

4/2 je jednako 2

15/3 je jednako 3

A koliko bi bilo onda 5/2? To je 5/2=2.5.

Koliko bi bilo 5%2? Operator modulo % daje ostatak pri cjelobrojnom dijeljenju. Možemo ga

koristiti samo ako su cijeli brojevi u pitanju.

Kako naći taj ostatak? Vrlo jednostavno, jer 5/2 možemo zapisati i ovako:

5/2 je jednako 2 jer je 2*2=4 (najbliže broju 5) plus 1 tj.

5/2=2*2+1

Ovo 1 je ostatak pri cjelobrojnom dijeljenju.

Dakle, 5%2=1, jer je 2*2=4 plus 1 jednako 5. Pogledajmo još nekoliko primjera da nam bude

jasan ovaj operator jer se on često koristi u programiranju.

7%2=1, jer je 7/2 najbliže 3 tj. 3*2=6 i do 7 nedostaje 1. Postavite sebi pitanje: Koji broj

pomnožen s brojem 2 daje broj 7 ili što bliže broju 7? Ono što nedostaje do broja 7 je

ostatak.

8%4=0, jer je 8/4 tačno 2, tj. 2*4=8.

11%3=2, jer je 11/3 najbliže 3 tj. 3*3=9 i do 11 fali 2.

15%4=3, jer je 15/4 najbliže 3 tj. 3*4=12 i do 15 fali 3.

Page 28: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

23

Ako se u izrazu nalazi više operatora, redoslijed izvršavanja ovisi o prioritetu operatora.

Nižeg prioriteta su sabiranje i oduzimanje, a višeg množenje, dijeljenje, cjelobrojno dijeljenje

s ostatkom. Redoslijed prioriteta se može promijeniti upotrebom zagrada ( ), jer one

imaju najviši prioritet tj. izvršava se prvo ono što je u njima, pri tome treba paziti da je broj

otvorenih i zatvorenih zagrada jednak.

Primjer 5.

int a=2;

int b=4;

int c=1;

int rezultat;

Izračunajmo sljedeće izraze.

a) rezultat = a – b * c

b) rezultat = (a – b) * c

c) rezultat = a * b + b * c

d) rezultat = ((a * c) – c) * b – a

Rješenje.

a) rezultat = - 2

b) rezultat = - 2

c) rezultat = 12

d) rezultat = 2

Programski jezik C++ ima još dva unarna operatora: uvećaj za jedan ++ (inkrement) i

umanji za jedan – – (dekrement).

Inkrement i dekrement operatori se primjenjuju samo na varijable i ne mogu se primijeniti na

izraze, niti na konstante.

Page 29: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

24

Ako se nalaze ispred varijable, onda se vrijednost te varijable prvo poveća ili umanji za jedan

i tako dobivena nova vrijednost se koristi pri izračunavanju izraza. Ako se operator nalazi iza

varijable, tada se prvo izračuna vrijednost izraza, a tek nakon toga se vrijednost varijable

poveća ili umanji za jedan.

Primjer 6.

int a=3; int b=2; int R;

U programu pišu sljedeće naredbe:

a++;

R=a–b;

Koliki bi bio rezultat? Rezultat je R=2, jer će računar prvo izračunati koliko je a++, a to znači

povećaj a za 1 odnosno a=a+1; pa je a sada 4 jer je 3+1=4, stoga je R=4–2=2.

Ako bi pak pisalo ovako:

R=a++ - b;

Onda bi izračunao izraz s upotrebom a=3 pa tek bi onda povećao a za 1 tj. R=3–2=1.

Ako bi napisali ovako:

R=++a – b;

Prvo bi povećao a za 1, pa bi onda računao s novom vrijednošću od a tj. R=4–2=2.

Na isti način se upotrebljava i dekrement -- koji smanjuje za 1.

2.7. Naredba za ulaz

Za unošenje podataka s tastature odnosno s ekrana monitora koristimo cin>>. Ovu naredbu

koristimo kada unosimo neke podatke s tastature (glavnog ulaza) u računar. Kako to ide,

pokazaćemo na nekoliko primjera. Upotreba je veoma jednostavna.

Primjer 7. Napisaćemo program koji unosi jedan cijeli broj s tastature u računar i ispisat ćemo

taj isti broj na ekran monitora.

Page 30: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

25

#include<iostream> using namespace std; int main() { int a; cin>>a; cout<<a<<endl; return 0; }

Unijeli smo npr. broj 3 i ispisali ga.

Primjer 8. Napišimo sada program koji unosi dva broja i ispisuje ih svaki u novom redu.

#include<iostream> using namespace std; int main() { int a, b; cin>>a; cin>>b; cout<<a<<endl; cout<<b<<endl; return 0; }

Brojeve možemo unijeti i u jednom redu s tim da između njih napravimo jedan prazan razmak

npr. 2 5. Također, možemo ispis napraviti i s jednom naredbom cout.

#include<iostream> using namespace std; int main() { int a, b; cin>>a>>b; cout<<a<<endl<<b<<endl; return 0; }

ZAKLJUČAK: Ako unosimo dva ili više brojeva svaki iz novog reda onda pišemo cin>> za

svaku varijablu, a ako ih unosimo u jednom redu onda pišemo

cin>> varijabla cin>> varijabla;

Page 31: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

26

tj. svaku varijablu odvajamo operatorom za unos >>, a na kraju obavezno dođe tačka-zarez

(;).

Sada kada smo naučili unositi podatke možemo prijeći na rješavanje konkretnih problema.

Zadatak 2. Napisati program koji će unijeti dva cijela broja s glavnog ulaza (tastature) i

ispisati njihov zbir.

Rješenje.

Kada rješavamo zadatak, prvo ga dobro pročitamo i uočimo šta su nam ulazni podaci, šta

izlazni, koliko ćemo varijabli trebati, kojeg će tipa biti itd. U našem slučaju imamo dva broja

tj. trebat ćemo dvije varijable kojima ćemo pridružiti (spremiti) ta dva broja. Kako im dati

ime? Ime birate sami. Treba da je što jednostavnije. Mi ćemo za prvi broj uzeti ime varijable

a, dok za drugi broj neka bude ime varijable b. Zbir kao rezultat treba isto spremiti u treću

varijablu. Pošto se radi o zbiru, neka njeno ime bude veliko Z. Unosimo dva CIJELA broja pa

će varijable a i b biti tipa int, a pošto je zbir dva cijela broja opet cijeli broj to će i varijabla

Z biti tipa int. U zadatku se ne kaže kako će te unijeti brojeve, u jednom ili više redova. To

sami birate po želji, kako vam je lakše. Također, se ne kaže treba li se ispisati prije unosa

kakva poruka. To opet birate sami, hoćete li ispisati nekakvu poruku ili ne. Na izlazu (ekranu)

se traži samo ispis zbira, nikakva poruka. Vi sami birate hoćete li ispisati neku poruku ili ne.

Mi ćemo ovdje navesti sve varijante bez poruka i s njima. U svakom slučaju program je tačan

jer radi ono što se od njega traži, sabira dva broja. Ostale poruke, načini ispisa su samo

šminka – da ljepše izgleda.

Prvi slučaj bez ikakvih poruka, unosimo npr. 2 i 3:

#include<iostream> using namespace std; int main() { int a, b, Z; cin>>a>>b; Z= a + b; cout<<Z<<endl; return 0; }

Drugi slučaj s porukama korisniku:

Page 32: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

27

#include<iostream> using namespace std; int main() { int a, b, Z; cout<<"Unesite prvi broj:"; cin>>a; cout<<"Unesite drugi broj:"; cin>>b; Z= a + b; cout<<"Zbir je "<<Z<<endl; return 0; }

Može i ovako:

#include<iostream> using namespace std; int main() { int a, b, Z; cout<<"Unesite dva broja:"; cin>>a>>b; Z= a + b; cout<<"Zbir je "<<Z<<endl; return 0; }

Ovo su neki načini. Vi možete ispisivati kako hoćete, unositi kako hoćete (ako to nije

naglašeno u zadatku), bitno je da program radi ono što se od njega traži.

Navest ćemo još jedan slučaj u kojem ne koristimo varijablu Z, već odmah sabiramo i

ispisujemo na ekran. Ovo je najkraće rješenje zadatka.

#include<iostream> using namespace std; int main() { int a, b; cin>>a>>b; cout<<a+b<<endl; return 0; }

Zadatak 3. Napisati program koji unosi dva cijela broja, te ispisuje njihov zbir, razliku,

proizvod, količnik i ostatak pri dijeljenju prvog s drugim.

Page 33: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

28

Rješenje. Unosimo npr. 5 i 2.

#include<iostream> using namespace std; int main() { int a, b, Z, R,P,K,O; cin>>a>>b; Z=a+b; R=a-b; P=a*b; K= a/b; O=a%b; cout<<"Zbir je "<<Z<<endl; cout<<"Razlika je "<<R<<endl; cout<<"Proizvod je "<<P<<endl; cout<<"Kolicnik je "<<K<<endl; cout<<"Ostatak je "<<O<<endl; return 0; }

Obratiti pažnju na količnik. Računar je napisao da je to 2, a ne 2.5. To je zbog toga što nam

su varijable a i b, te K tipa int. Da dobijemo 2.5 moramo koristiti tip double ili float.

No, nismo mogli navesti tip double jer onda bi nam javio grešku za ostatak. Međutim, to se

može izbjeći uvođenjem novih varijabli A, B,K koje će biti tipa double.

#include<iostream> using namespace std; int main() { int a, b, Z, R,P,O; cin>>a>>b; Z=a+b; R=a-b; P=a*b; O=a%b; double A, B, K; A=a; B=b; K= A/B; cout<<"Zbir je "<<Z<<endl; cout<<"Razlika je "<<R<<endl; cout<<"Proizvod je "<<P<<endl; cout<<"Kolicnik je "<<K<<endl; cout<<"Ostatak je "<<O<<endl; return 0; }

Varijable možete deklarirati bilo gdje u kodu a ne samo na početku, samo mora biti prije

njihove upotrebe. Imati na umu da se svaki program koji napišete mora testirati. To znači

Page 34: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

29

probati sve moguće kombinacije, pa ako za sve daje tačan rezultat, onda je program dobar

odnosno zadatak tačno riješen. Može se desiti da za neke brojeve program daje tačno rješenje,

a za ostale ne. To onda nije rješenje zadatka.

2.8. Zadaci za samostalan rad

Zadatak 4. Napisati program za računanje obima kvadrata (O=4a).

Ulaz: 2. Izlaz: 8.

Zadatak 5. Napisati program za računanje površine kvadrata (P=a2).

Ulaz: 3. Izlaz: 9.

Zadatak 6. Napisati program za računanje površine pravougaonika (P=ab).

Ulaz: 2, 3. Izlaz: 6.

Zadatak 7. Napisati program za računanje obima pravougaonika (O=2a+2b).

Ulaz: 2, 3. Izlaz: 10.

Zadatak 8. Napisati program koji sabira tri broja.

Ulaz: 1, 2, 3. Izlaz: 6.

Zadatak 9. Napisati program koji učitava tri broja i ispisuje njihov proizvod.

Ulaz: 2, 3, 4. Izlaz: 24.

Zadatak 10. Napisati program koji za četiri unijete ocjene iz Informatike računa prosječnu

ocjenu (zaključnu ocjenu). (Uputa: Koristiti tip double ili float za varijable)

Ulaz: 4, 4, 5, 5. Izlaz: 4.5.

Zadatak 11. Napisati program za računanje površine i zapremine kocke.

Ulaz: 2. Izlaz: P=24, V=8.

Zadatak 12. Napisati program koji unosi dužinu u centimetrima i ispisuje koliko je to u

metrima i kilometrima.

Ulaz: 124. Izlaz: m=1.24, km=0.00124.

Zadatak 13. Napisati program koji unosi dva ugla trougla i ispisuje veličinu trećeg ugla, npr.

Ulaz: 60, 80. Izlaz: 40.

Zadatak 14. Napisati program koji unosi temperaturu u °C (Celzijus) i ispisuje koliko je to °F

(Fahrenheit). (Uputa: Formula za konverziju iz °C u °F je °F = (°C * 9) / 5 + 32)).

Ulaz: 100. Izlaz: 212.

Zadatak 15. Napisati program koji unosi broj dana i ispisuje koliko je to godina, sedmica i

dana. Zanemariti prestupne godine.

Ulaz: 373. Izlaz: 1 godina, 1 sedmica i 1 dan.

Page 35: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

30

Zadatak 16. Napisati program koji za uneseno � ≠ 0 računa vrijednost funkcije

�� = �� + � − 1� − 2�� � + 3

Ulaz: 1. Izlaz: 2.

Zadatak 17. Na ulazu se unose dva broja. Na izlazu ispisati dvostruku vrijednost prvog broja

i trostruku vrijednost drugog broja.

Ulaz: 3, 2. Izlaz: 6, 6.

Zadatak 18. Napisati program koji će za uneseni poluprečnik kruga, izračunati njegov obim.

(Uputa: � = 2��, umjesto � pisati 3.14159, za r i O koristiti tip double ili float).

Ulaz: 3. Izlaz: 18.8496.

Zadatak 19. Napisati program koji unosi četverocifren broj i ispisuje cifre tog broja počev od

cifre najmanje mjesne vrijednosti (cifre jedinica).

Ulaz: 1253. Izlaz: 3, 5, 2, 1.

3. MATEMATIČKE FUNKCIJE

U C++ postoji mnogo ugrađenih funkcija. Šta to znači? Uzmimo npr. apsolutnu vrijednost

nekog broja. Pošto se to često koristi, pa da ne bi za svaki problem (zadatak) pisali kod

(program) koji računa aposolutnu vrijednost, onda su programeri napisali taj kod i ugradili ga

u jezik a naše je samo da ga upotrebimo kad nam treba.

Šta je funkcija u C++ trenutno nije bitno da znate, već samo kako se primjenjuje. Postoji

mnogo ugrađenih matematičkih funkcija, mi ćemo ovdje navesti samo one koje će nama

trebati i koje su vama poznate iz matematike.

Da bi koristili matematičke funkcije morate prije using namespace std; uključiti

matematičku biblioteku naredbom

#include<cmath>

Vrijednost svih sljedećih funkcija je tipa double. Tip argumenta x i y je double, a

argumenta n je int.

Kada upotrebite neku funkciju ona će vam vratiti izračunatu vrijednost koja će biti tipa

double.

Page 36: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

31

pow(x,y) Stepenovanje (Potenciranje). Vrijednost funkcije ��. Ako je � = 0, mora da bude � > 0. Ako je � < 0, � mora biti cijeli broj.

sqrt(x) Korjenovanje (drugi korijen). Vrijednost funkcije √�, � ≥ 0

abs(n) Apsolutna vrijednost

Primjer 9. Napisaćemo program koji demonstrira upotrebu ovih funkcija.

Rješenje.

#include <iostream> #include <cmath> using namespace std; int main() { int a=2, b=4, c=-5; cout<<pow(3,2)<<endl; cout<<pow(a,b)<<endl; cout<<pow(2.135,4)<<endl; cout<<sqrt(b)<<endl; cout<<sqrt(a+b)<<endl; cout<<sqrt(10.250)<<endl; cout<<abs(c)<<endl; cout<<abs(5)<<endl; cout<<abs(-15)<<endl; return 0; }

3.1. Decimalni brojevi

Naučit ćemo kako oblikovati tj. ispisivati decimalne brojeve. C++ pruža mogućnost da

manipuliramo izlaznim podacima. U tu svrhu koristimo razne manipulatore. Mi ćemo

spomenuti samo neke.

3.1.1. Fixed

fixed je manipulator koji se koristi kada ne želimo da nam broj bude prikazan u naučnom

zapisu (npr. umjesto 1.034292e+004 želimo da bude 10342.92)

Primjer 10. Napisaćemo program koji će zadane brojeve ispisati na ekran bez upotrebe

modulatora fixed i s upotrebom modulatora fixed.

Rješenje.

Page 37: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

32

#include <iostream> using namespace std; int main() { double a=3.14, b=0.051; double c=10.122445541; cout<<a<<endl; cout<<b<<endl; cout<<c<<endl; cout<<endl; cout<<fixed; cout<<a<<endl; cout<<b<<endl; cout<<c<<endl; return 0; }

ZAKLJUČAK: Modulator fixed je dovoljno napisati jednom ispred svih ispisa, te će on

djelovati na sve ispise. Svi ispisi će biti na šest decimala. Nije potrebno uključivati nikakvu

biblioteku.

3.1.2. Setprecision

setprecision(n) je funkcija koja se koristi za ispis decimalnog broja s određenim brojem

cifara, s tim da nulu ne broji, ako je ona na prvom mjestu. Dakle, ona samo govori koliko će

se brojeva prikazati prilikom ispisa decimalnog broja. Umjesto slova n pišemo cijeli broj.

Da bi koristili ovu funkciju moramo uključiti biblioteku

#include<iomanip>

Ona se može koristiti za tačno određen ispis decimala u decimalnom broju (zaokruživanje),

tako što se prije ove funkcije napiše naredba fixed.

Primjer 11. Prethodni primjer, gdje su prvo ispisani decimalni brojevi s naredbom

setprecision, a ispod odmah u kombinaciji s naredbom fixed.

Rješenje.

Page 38: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

33

#include <iostream> #include <iomanip> using namespace std; int main() { double a=3.14, b=0.051; double c=10.122445541; cout<<setprecision(3)<<a<<endl; cout<<setprecision(1)<<b<<endl; cout<<setprecision(3)<<c<<endl; cout<<endl<<fixed; cout<<setprecision(3)<<a<<endl; cout<<setprecision(3)<<b<<endl; cout<<setprecision(3)<<c<<endl; return 0; }

3.2. Ostali manipilatori

dec – čita ili ispisuje decimalni broj.

oct – čita ili ispisuje oktalni broj.

hex – čita ili ispisuje heksadecimalni broj.

Primjer 12. Ispisat ćemo cijeli broj 15 i 25 u ova tri brojna sistema. Rješenje.

#include <iostream> using namespace std; int main() { int n=15, m=25; cout<<"Ispis broja 15:"<<endl; cout<<dec<<n<<endl; cout<<oct<<n<<endl; cout<<hex<<n<<endl; cout<<"Ispis broja 25:"<<endl; cout<<dec<<m<<endl; cout<<oct<<m<<endl; cout<<hex<<m<<endl; return 0; }

3.3. Zadaci za samostalan rad

Zadatak 20. Napisati program koji unosi dva broja x i y i ispisuje koliko je ��.

Ulaz: 2, 3. Izlaz: 8.

Zadatak 21. Napisati program koji unosi prirodan broj i ispisuje kvadratni korijen tog broja.

Ulaz: 2. Izlaz: 1,41. Rezultat zaokruži na dvije decimale.

Page 39: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

34

Zadatak 22. Napisati program koji unosi katete pravouglog trougla i ispisuje hipotenuzu.

Ulaz: 4, 3. Izlaz: 5.00. Rezultat zaokruži na dvije decimale.

4. NAREDBE

Naredba je osnovna jedinica obrade u programima. Mogu se podijeliti na proste, složene i

upravljačke. Upravljačke naredbe ne vrše nikakvu obradu već prenose tok upravljanja na

neko mjesto u programu. To spadaju razne naredbe skokova.

Proste naredbe predstavljaju elementarne obrade koje se ne mogu da podjele na manje

dijelove koji bi i sami bili naredbe, npr.: int a; ili a=5; ili cout<<a;. Izvršavanje proste

naredbe sastoji se u izračunavanju izraza. Njen opšti oblik je:

izraz ;

ZAPAMTITI: SVAKA NAREDBA SE ZAVRŠAVA SA TAČKA-ZAREZ (;)

Ako stavimo samo ; tada imamo praznu naredbu koja ne radi ništa.

Složene naredbe predstavljaju strukture naredbi kojima se određuje redoslijed izvršavanja

naredbi sadržanih u strukturi (u kodu tj. programu). Mogu biti: sekvenca, selekcije i ciklusi ili

petlje.

4.1. Sekvenca ili blok: { }

Sekvenca je niz naredbi koje se izvršavaju jedna za drugom. Sekvenca se u jeziku C++ piše

unutar velikih (vitičastih) zagrada: { }. U jednom redu može da bude više naredbi ili pak u

svakom redu po jedna. Osnovni kriterij je preglednost.

Načini pisanja naredbi za sekvencu:

1) { naredba1; naredba2; ... naredba n;}

2) {

naredba1; naredba2; ... naredba n;

}

Pošto se ispred naredbe1 može da stavi i nekoliko deklarativnih naredbi, zbog toga se

sekvence nazivaju i blokovi.

Page 40: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

35

Doseg (oblast važenja) identifikatora u programiranju označava dio programa u kome se

identifikator koristi. Pa tako ako je na početku bloka definisan neki identifikator, tada je

njegov doseg samo od početka pa do kraja bloka, tj. neće vrijediti izvan bloka odnosno

vitičastih zagrada.

Dakle, ako imamo dvije ili više naredbi za koje želimo da se izvrše zajedno jedna iza druge

onda ih stavljamo u vitičaste zagrade tj. u blok. Prije nego li naučimo šta su sekcije,

upoznajmo još jednu vrstu operatora. To su relacijski operatori.

4.2. Relacijski operatori

Relacijskim operatorima se utvrđuje povezanost dviju varijabli, funkcija ili izraza. Računari u

svom radu upotrebljavaju jednostavnu logiku sa dvije vrijednosti: ako je uslov (uvjet) istinit

(true), vrijednost je 1; ako je lažan (false), vrijednost je 0. Relacijski operatori su prikazani u

sljedećoj tablici:

C++ operator Značenje Primjer

> veće od 5>4

>= veće od ili jednako 5>=x

< manje od 4<5

<= manje od ili jednako x<=5

== jednako 5==5

!= različito (nije jednak) 5!=4

4.3. Selekcije

Selekcije su upravljačke strukture koje omogućuju uslovno izvršavanje naredbi. To znači ako

je neki uslov (uvjet) tačan nešto će se desiti (neke naredbe će se izvršiti).

4.3.1. Naredba if

if (uslov) naredba1;

Ovo je jednostavna naredba if. Funkcionira na sljedeći način: Naredba if ispita da li je

uslov tačan (istinit). Ako je tačan onda se izvrši naredba1. Ako nije tačan, tada se

naredba1 neće izvršiti, nego se nastavlja sa izvršavanjem naredbe koja je sljedeća u

programu.

Page 41: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

36

Uslov (uvjet) mora bit takav da za njega računar može utvrditi da li je tačan ili netačan.

Primjer 13.

IZRAZ USLOV OBJAŠNJENJE

5 = = 5 DA Jer možemo utvrditi da li je izraz tačan ili netačan.

a>b DA Jer možemo utvrditi da li je izraz tačan ili netačan za određene vrijednosti a i b.

a+b NE Jer ne možemo utvrditi da li je izraz tačan ili netačan za određene vrijednosti a i b.

(a+b)*c<0 DA Jer možemo utvrditi da li je izraz tačan ili netačan za određene vrijednosti a,b i c.

5-2 NE Jer ne možemo utvrditi da li je izraz tačan ili netačan.

NAPOMENA: Ako kao uslov stoji broj 1 ili 0, tada je to ispravan uslov tj. broj 1 za računar

predstavlja tačno, a broj 0 netačno, npr. if(1)naredba1;.

Primjer 14. Napisati program koji će komentarisati uneseni cijeli broj a tj. ako je a veće od

nule ispisat će se poruka "Broj je pozitivan", ako je jednak nuli "Broj je jednak nuli", te ako je

manji od nule "Broj je negativan".

Rješenje.

Unosimo jedan broj s tastature i to cijeli broj, pa će deklaracija biti int a. Pošto u zadatku

imao uslov (da je veći od nule, jednak nuli, manji od nule) onda koristimo if naredbu.

#include<iostream> using namespace std; int main() { int a; cin>>a; if(a>0) cout<<"Broj je pozitivan"<<endl; if(a==0) cout<<"Broj je jednak nuli"<<endl; if(a<0) cout<<"Broj je negativan"<<endl; return 0; }

Za unos 5

Kako program radi? Nakon što vi unesete broj s tastature (to je naredba cin>>a;), računar ide

na sljedeću naredbu

if(a>0) cout<<"Broj je pozitivan"<<endl;

Page 42: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

37

i prvo se provjerava uslov a>0 uvrštava se uneseni broj (npr. u ovom slučaju 5) tj. 5>0 da li je

ovo tačno, postavi si pitanje računar. DA, tačno je. Onda se izvrši naredba koja stoji poslije

okruglih zagrada

cout<<"Broj je pozitivan"<<endl;

Ispiše se tekst: "Broj je pozitivan" te se poslije ispiše jedan prazan red tj. pređe se u novi

red naredbom endl;

Nakon toga računar ide dalje s izvršavanjem koda na liniju ispod

if(a==0) cout<<"Broj je jednak nuli"<<endl;

Provjerava da li je uslov a==0 tačan tj. uvrsti broj 5 mjesto a tj. 5==0 i pita se da li je ovo

tačno. NE, nije, pa dio

cout<<"Broj je jednak nuli"<<endl;

koji stoji poslije uslova neće izvršiti, preskočiće ga, jer uslov nije tačan. Zatim, ide na sljedeću

naredbu (liniju koda)

if(a<0) cout<<"Broj je negativan"<<endl;

Ponovo, ispitiva da li je uslov tačan uvrštavajući uneseni broj umjesto varijable a. U našem

slučaju broj 5. Kako 5<0 nije tačno, računar preskače dio iza if naredbe i prelazi na sljedeću

naredbu

return 0;

i time završava program. Dakle, samo je bio tačan uslov u prvoj naredbi if za uneseni broj 5

pa se jedino i ona izvršila. Ovo smo napisali malo detaljnije kako program radi, jer je vrlo

važno da razumijete if naredbu, da bi s njom mogli lakše manipulirati.

NAPOMENA: U prethodnom primjeru smo iza naredbe if imali jednu naredbu i to cout.

Šta ako želimo da se izvrše dvije, tri ili pak više naredbi, ako je neki uslov tačan?

Tada koristimo blok tj. te naredbe stavljamo u vitičastu zagradu.

if (uslov) {naredba1; naredba2; naredba3; itd}

Imati na umu da iza svake naredbe dođe tačka-zarez (;), a da se poslije vitičastih zagrada NE

PIŠE tačka-zarez.

4.3.2. Naredba if – else

Ova naredba je slična naredbi if, pa sve rečeno za naredbu if vrijedi i za naredbu if –

else. Naredba ima jedan dodatak else koji znači inače. Naredba se piše na sljedeći način:

Page 43: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

38

if (uslov) naredba1; else naredba2;

Naredba if – else radi na sljedeći način: Kao i kod naredbe if prvo se provjerava da li je

uslov tačan (istinit). Ako je uslov tačan, onda se izvršava naredba1, dok se naredba2 ne

izvršava (preskače). Ako je pak uslov netačan, onda se naredba1 ne izvršava (preskače),

ali se izvršava naredba2. Dakle, ako je uslov tačan izvršava se samo naredba1, ako nije

tačan izvršava se samo naredba2.

Načini pisanja naredbe if – else:

1) if ( uslov ) naredba1; else naredba2;

2) if ( uslov )

naredba1; else

naredba2;

3) if ( uslov ) {

naredba11; naredba12; ... naredba 1n;

} else {

naredba21; naredba22; ... naredba 2m;

}

4) if ( uslov) {

naredba11; naredba12; ... naredba 1n;

} else { naredba21; naredba22; ... naredba 2m;

}

Ovo su neki najčešći, najpregledniji načini pisanja naredbe if – else, mada ih se vi ne

morate pridržavati tj. pišete u koliko redova hoćete, s kojim razmakom hoćete, bitno je samo

da naredba sadrži svoj osnovni oblik, koji možete lijepo srediti samo s dva klika, tako što

kliknete desnim dugmetom miša i odaberete Format use Astyle, slika 17.

Page 44: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

39

Slika 17 Oblikovanje koda

Primjer 15. Napisati program koji unosi dva cijela broja, te ako je njihov zbir veći od nule,

ispisuje njihov proizvod, inače njihovu razliku.

Rješenje.

Trebamo unijeti dva cijela broja, pa odmah znamo da su tipa int, a imena neka budu a i b.

Dakle, int a,b; . Imamo uslov, da je njihov zbir veći od nule tj. a+b>0. Ako je to tačno

(za unesene brojeve), onda će se ispisati njihov proizvod tj. a*b. To je naša naredba1 u if-

else naredbi. Dio inače njihovu razliku, znači, ako je uslov netačan, onda ispiši njihovu

razliku tj. a-b, a ovo je naša naredba2 u if-else naredbi.

#include<iostream> using namespace std; int main() { int a, b; cin>>a>>b; if(a+b>0) cout<<a*b<<endl; else cout<<a-b<<endl; return 0; }

Za unos 2 i 3

Za unos -2 i 1

Primjer 16. Napisati program koji unosi tri cijela broja i ispisuje najvećeg od njih.

Rješenje.

Iz zadatka vidimo da moramo deklarirati tri varijable tipa int (jer su cijeli brojevi). Dajmo

im imena a, b, c tj. int a, b, c; . Odmah iz zadatka se ne vidi da ćemo koristiti if

naredbu. Kao to u zadatku prepoznati? Čim se u vašem govoru javi riječ AKO je nešto tako

ONDA će biti ovo itd. Znamo da relacijski operatori (>, <, ==, itd) mogu uzeti (uporediti)

Page 45: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

40

samo dva broja. Pa ćemo mi uzeti npr. brojeve a i b, te ih uporediti, da vidimo koji je veći

(postaviti uslov a>b). Šta ako je uslov tačan? To znači da je broj a veći od broja b. Šta onda

da uradimo? A šta ako je netačan? To znači da je onda broj b veći od broja a, šta da onda

uradimo? Upravo zbog ovog " šta da onda uradimo", moramo uvesti novu varijablu kojoj

ćemo dati ime max i njoj pridružiti (spremiti, u nju skladištiti) broj koji od njih dvojce (od a

ili b) bude veći.

if(a>b) max=a; else max=b;

Ostaje još da usporedimo max i c, pa ko od njih bude veći, taj je onda najveći broj.

#include<iostream> using namespace std; int main() { int a, b, c, max; cin>>a>>b>>c; if(a>b) max=a; else max=b; if(max>c) cout<<"Najveci je "<<max<<endl; else cout<<"Najveci je "<<c<<endl; return 0; }

Za unos 1, 2 i 3

Za unos 1, 3 i 2

Za unos 3, 2 i 1

Program testirate sa što manjim brojevima tj. za koje znate kakav treba rezultat biti i sve

moguće slučajeve, prije nego li ga proglasite tačnim. U ovom primjeru smo imali tri broja, pa

smo u testiranju morali na sva ti mjesta staviti najveći broj da vidimo hoće li ga program

ispravno naći.

Može li se zadatak riješiti bez uvođenja nove varijable? Da, može, upotrebom proširene if-

else-if-else naredbe:

if(uslov1) naredba1; else if(uslov2) naredba2; else if(uslov3) naredba3; else naredba4;

ili

if(uslov1) if(uslov2) naredba2; else if(uslov3) naredba3; else naredba4;

Ovdje smo stali na naredba4, mada možete ići dokle vam je volja. Dakle, ako je uslov1

tačan, onda izvrši naredba1, inače (ako nije tako), provjeri da li je uslov2 tačan, pa ako

Page 46: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

41

jeste izvrši naredba2, inače (ako nije tačan), provjeri je li uslov3 tačan, pa ako jeste izvrši

naredba3, inače izvrši naredba4.

#include<iostream> using namespace std; int main() { int a, b, c; cin>>a>>b>>c; if(a>b) if(a>c) cout<<"Najveci je "<<a<<endl; else cout<<"Najveci je "<<c<<endl; if(a<b) if(b>c) cout<<"Najveci je "<<b<<endl; else cout<<"Najveci je "<<c<<endl; return 0; }

4.3.3. Zadaci za samostalan rad

Zadatak 23. Napisati program koji unosi dva broja i ispisuje onog koji je veći.

Ulaz: 1, 5. Izlaz: 5. Ulaz: 5, 1. Izlaz: 5.

Zadatak 24. Napisati program koji unosi prirodan broj i ispisuje poruku "PARAN", ako je

broj paran, inače poruku "NEPARAN".

Ulaz: 2. Izlaz: PARAN. Ulaz: 3. Izlaz: NEPARAN.

Zadatak 25. Napisati program koji unosi broj dana u sedmici (1-7) i ispisuje koji je to dan.

Ulaz: 2. Izlaz: Utorak.

Zadatak 26. Napisati program koji unosi tri ugla i provjerava da li ti uglovi čine trougao.

Ulaz: 30, 60, 90. Izlaz: DA. Ulaz: 60, 60, 90. Izlaz: NE.

Zadatak 27. Napisati program koji unosi dva cijela broja. Ako je prvi veći od nule ispisuje

njihov proizvod, inače njihov zbir.

Ulaz: 4, 3. Izlaz: 12. Ulaz: -4, 3. Izlaz: -1.

Zadatak 28. Unijeti dva cijela broja. Ako je kvadrat prvog veći od kvadrata drugog broja,

ispisati njihov zbir, a ako nije njihovu razliku.

Ulaz: 4, 3. Izlaz: 7. Ulaz: 2, 3. Izlaz: -1.

Zadatak 29. Napisati program koji će provjeriti jesu li dva broja a i b jednaka ili ne.

Ulaz: 5, 5. Izlaz: DA. Ulaz: 6, -6. Izlaz: NE.

Zadatak 30. Napisati program koji će provjeriti da li je cijeli broj unesen s tastature veći od 3.

Ulaz: 8. Izlaz: DA. Ulaz: 1. Izlaz: NE.

Page 47: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

42

Zadatak 31. Napisati program koji učitava dva broja x, y te ispisuje poruku da li je x<y ili

x>y ili x=y.

Ulaz: 1, 4. Izlaz: 1 je manje od 4.

Ulaz: 1, 0. Izlaz: 1 je vece od 0.

Ulaz: 5, 5. Izlaz: 5 je jednako 5.

Zadatak 32. Napisati program koji učitava dužine tri stranice trougla i ispisuje poruku da li je

trougao pravougli.

Ulaz: 3, 4, 5. Izlaz: Pravougli. Ulaz: 4, 6, 8. Izlaz: Nije pravougli.

Zadatak 33. Napisati program koji učitava tri prirodna broja i ispitiva da li su ti brojevi

stranice trougla. (Uputa: Zbir dvije stranice mora biti veći od treće, da bi imali trougao).

Ulaz: 3, 4, 5. Izlaz: Da. Ulaz: 1, 2, 3. Izlaz: Ne.

Zadatak 34. Napisati program koji za uneseni prirodan broj provjerava da li neparan broj.

Ulaz: 3. Izlaz: DA. Ulaz: 6. Izlaz: NE.

Zadatak 35. Napisati program koji će za uneseni cijeli broj ispitati da li je djeljiv s 5.

Ulaz: 10. Izlaz: DA. Ulaz: 13. Izlaz: NE.

Zadatak 36. Napisati program koji od tri unesena cijela broja ispisuje najmanjeg.

Ulaz: 1, 2, 3. Izlaz: 1. Ulaz: 2, 1, 3. Izlaz: 1. Ulaz: 2, 3, 1. Izlaz: 1.

Zadatak 37. Napisati program koji će učitati trocifreni prirodan broj. Ispremještati mu cifre

tako da se dobije najveći mogući broj sastavljen od te tri cifre.

Ulaz: 476. Izlaz: 764.

Zadatak 38. Napisati program koji za tri unijeta cijela broja a, b i c ispituje da li je broj a

jednak zbiru brojeva b i c. Ako jeste ispisuje poruku npr. "Broj a je jednak zbiru brojeva b i

c", ako nije poruku "Ne". Umjesto a, b i c koristiti konkretne brojeve.

Ulaz: 6, 4, 2. Izlaz: Broj 6 je jednak zbiru brojeva 4 i 2.

Ulaz: 5, 6, 1. Izlaz: NE.

Zadatak 39. Napisati program koji unosi dva prirodna broja a i b, i ispisuje poruku, ako je

broj a djeljiv brojem b: "Broj a je djeljiv brojem b", a ako nije poruku "Broj a nije djeljiv

brojem b". Umjesto a i b u poruci koristiti konkretne vrijednosti.

Ulaz: 4, 2. Izlaz: Broj 4 je djeljiv brojem 2.

Ulaz: 5, 2. Izlaz: Broj 5 nije djeljiv brojem 2.

Page 48: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

43

4.4. Logički operatori

Do sada smo u uslovu kod if naredbe koristili relacijske operatore (<, >, ==, itd) i to

samo jedan operator u izrazu. Postavlja se pitanje možemo li kako koristiti više relacijskih

operatora? Jer kad bi mogli koristiti više njih u jednom uslovu, tada bi mogli graditi složenije

uslove. Odgovor je potvrdan. To nam omogućuju logički operatori, koji služe za povezivanje

dva ili više jednostavnih uslova - izraza (sa samo jednim relacijskim operatorom).

Logički operatori u C++ su:

Logički operator C++ operator

negacija NE !

logički I &&

logički ILI ∣∣

Logički operator negacija "ne" je unarni operator, označava se sa ! i zapisuje se ispred

elementa i mijenja njegovu logičku vrijednost iz tačno u netačno ili iz netačno u tačno. U

C++ se tačno označava s brojem 1, a netačno s brojem 0.

Logički operator "I" u oznaci && je tačan (ima vrijednost 1) ako i samo ako su oba operanda

tačna (imaju vrijednost 1), inače je netačan (ima vrijednost 0 u svim ostalim slučajevima).

Označimo jedan operand (izraz) s A, a drugi s B, npr. (5+c)<0 je izraz (operand). Budući da

operator I, binarni operator tj. povezuje samo dva operanda, to onda imamo samo četiri

moguća slučaja:

A B A && B 0 0 0 0 1 0 1 0 0 1 1 1

Logički operator "ILI" u oznaci || je tačan (ima vrijednost 1) ako je bar jedan operand

(izraz) tačan tj. netačan je (ima vrijednost 0) samo ako su oba operanda netačna.

A B A || B 0 0 0 0 1 1 1 0 1 1 1 1

Page 49: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

44

Primjer 17. Izračunati (utvrditi) da li su sljedeći izrazi (uslovi) tačni ili netačni.

1. # = 5, $ = 1 a) # + 1 > 0&&# − $ > 0b) # >= 5&&$ <= 5c) # + $ + 3 − # − $ > 0&&#/$– 5 < 0

2. # = 1, $ = 3, ( = −1

a) # > 0||$ > 0b) # − $ < 0||( − $ <= 0c) # + ( − $ < #||$ − ( > #

3. # = 1, $ = 2, ( = 4

a) # >= 1&&$ > 0&&( < 0b) # < $&&( > 0&&# + 1 > 0&&( == 0c) # < 0||$ > 0||( <= 0d) # + 5 < 1||$ − 5 > #||( + 5 <= $e) #! = 5f) # > 0||$ < 0&&( > 0g) # == 0&&$ < 0||# < $&&( > 0

Rješenje.

1) a) Sada umjesto varijabi # i $ uvrstimo konkretne vrijednosti, te ispitamo da li je prvi

izraz tačan ili netačan, isto tako za drugi, pa onda primjenimo operator &&, a umjesto

tačno kao što smo rekli pišemo 1, a za netačno 0:

(5+1)>0 && (5-1)>0

6>0 && 4>0

1 && 1

1

Dakle, ovaj uslov je tačan.

b) 1

c) 0

2) a) Opet umjesto varijabli uvrstimo vrijednosti.

a>0 || b>0

1>0 || 3>0

Page 50: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

45

1 || 1

1

Dakle, tačno.

b) 1

c) 1

3) a) Sada na isti način samo što gledmo prva dva, pa tako dobiven rezultat s sljedećim.

a>=1 && b>0 && c<0

1>=1 && 2>0 && 4<0

1 && 1 && 0

1 && 0

0

Dakle, netačno

b) 1

c) 0

d) 1

e) 1

f) 1

Pošto smo se upoznali s logičkim operatorima možemo raditi mnogo složenije zadatke.

Primjer 18. Napisati program koji učitava dva cijela broja, te ako je jedan od brojeva

negativan ispisuje njihov proizvod, a ako su pozitivni ispisuje njihovu razliku.

Rješenje.

U zadatku se traži da unesemo dva cijela broja, koja ćemo označiti s a i b tj. int a, b; .

Uslov je da se ispiše njihov proizvod, ako je jedan od brojeva negativan. To znači, da će se

ispisati proizvod ovih brojeva, ako je

negativan a, b pozitivan

a pozitivan, b negativan

negativan a, negativan b

odnosno zapisano simbolima

a<0, b>0

a>0, b<0

a<0, b<0

Page 51: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

46

KOJI logički operator upotrebiti? Prethodna tri slučaja moraju biti tačna, a moramo to zapisati

što kraće tj. jednostavnije – kao jedan slučaj. Tu dolaze do izražaja logički operatori. Pomoću

njih ćemo povezati dva izraza (elementarna uslova):

a<0 || b<0

Dovoljno je da je jedan a ili b, nije važno koji, negativan, da bi sve bilo tačno tj. da bi se

ispisao njihov proizvod. A ako nije tako, onda su očito oba pozitivna.

#include <iostream> using namespace std; int main(){ int a, b; cout<<"Unesite dva broja:"; cin>>a>>b; if (a < 0 || b <0)

cout<<a*b<<endl; else cout <<a-b<<endl; return 0; }

Za unos -2 i 3

Primjer 19. Napisati program koji unosi cijeli broj a, te provjerava da li se broj a nalazi

između brojeva 1 i 10.

Rješenje.

Unosimo jedan cijeli broj a tj. int a. Uslov je da se broj nalazi između brojeva 1 i 10. To

znači, da broj a mora biti veći od 1 i manji od 10. Koji logički operator koristiti? Sama

prethodna rečenica vam je dala odgovor. To je logičko I tj. &&. Jer da bi broj a bio između

brojeva 1 i 10, on mora biti istovremeno veći od 1 i manji od 10 tj. oba izraza moraju biti

istovremeno tačna, da bi sve ukupno bilo tačno, a to nam daje logičko I.

#include <iostream> using namespace std; int main(){ int a; cout<<"Unesite broj:"<<endl; cin>>a; if (a >1 && a <10) cout<<"DA"<<endl; else cout <<"NE"<<endl; return 0; }

Page 52: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

47

4.4.1. Zadaci za samostalan rad

Zadatak 40. Napisati program koji unosi cijeli broj i ispisuje poruku "DA" ako je broj veći od

100 ili manji od nule, ako nije poruku "NE".

Ulaz: 105. Izlaz: DA. Ulaz: -5. Izlaz: DA. Ulaz: 56. Izlaz: NE.

Zadatak 41. Napisati program koji unosi prirodan broj N. Ako je broj N djeljiv s 5 i paran

broj, ispisuje poruku "Broj N je djeljiv s 5 i paran je broj", u suprotnom poruku "NE". U

poruci N treba biti konkretna vrijednost.

Ulaz: 10. Izlaz: Broj 10 je djeljiv s 5 i paran je broj.

Ulaz: 25. Izlaz: NE. Ulaz: 12. Izlaz: NE.

Zadatak 42. Napisati program koji učitava cijeli broj i ispitiva da li je taj broj djeljiv s 5 i 7.

Ulaz: 35. Izlaz: DA. Ulaz: 25. Izlaz: NE. Ulaz: 14. Izlaz: NE.

Zadatak 43. Napisati program koji će ispisati da li je uneseni broj prihvaćen. Broj je

prihvaćen ako je zadovoljio sljedeće nabrojane uslove:

• pozitivan

• neparan (da nije djeljiv s 2)

• da nije trocifren (da nije u rasponu od 100 do 999)

• da nije djeljiv sa 7

Ulaz: 3. Izlaz: PRIHVACEN. Ulaz: -5. Izlaz: NIJE PRIHVACEN.

Ulaz: 20. Izlaz: NIJE PRIHVACEN. Ulaz: 101. Izlaz: NIJE PRIHVACEN.

Ulaz: 1645. Izlaz: NIJE PRIHVACEN.

Zadatak 44. Napisati program koji unosi dva cijela broja A i B i koji ispisuje broj A, ako je

zbir i razlika brojeva A i B veća od nule, inače ispisuje broj B.

Ulaz: 5, 2. Izlaz: 5. Ulaz: 3, 6. Izlaz: 6. Ulaz: -2, -6. Izlaz: -6.

Zadatak 45. Napisati program koji učitava četiri cijela broja a, b, c i d. Ako je prvi pozitivan i

zbir drugog i četvrtog veći od nule i zbir prvog i trećeg manji od nule ispisuje, proizvod

a*b*c, inače ispisuje koliko je a-b-c.

Ulaz: 1, 2, -2, 4. Izlaz: -4. Ulaz: 1, 2, 3, 4. Izlaz: -4.

4.5. Ciklusi ili petlje

Ciklusi ili petlje su upravljačke strukture koje omogućuju ponovljeno izvršavanje neke

naredbe.

Prema zadavanju uslova dokle treba da se petlja ponavlja, mogu da postoje:

Page 53: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

48

• petlje koje traju dok je neki uslov ispunjen

• petlje koje traju dok neki uslov nije ispunjen

• brojačke petlje

4.5.1. For petlja

Jedna od najvažnijih petlji je for petlja. Njena upotreba u programima je neizostavna, zbog

toga je vrlo važno razumjeti kako ona funkcionira. Kada ćemo koristiti for petlju?

AKO JE BROJ PONAVLJANJA POZNAT, TADA KORISTIMO FOR PETLJU.

Opći oblik for petlje je:

for (izraz1; uslov; izraz2) naredba;

Izraz1 predstavlja pripremu za ulazak u petlju i njegova vrijednost se samo iskoristi prvi

put.

Uslov je logički izraz koji predstavlja uslov za nastavljanje petlje. Dok je tačan petlja se

izvodi, čim postane netačan petlja se prekida.

Izraz2 predstavlja promjenu vrijednosti izraza1 na kraju svakog prolaska kroz petlju.

Načini pisanja for petlje:

1) for(izraz1; uslov; izraz2) naredba;

2) for(izraz1; uslov; izraz2) naredba;

for(izraz1; uslov; izraz2) { naredba1;

naredba2; � Dvije ili više naredbi, koje pripadaju for petlji se moraju staviti u vitičaste zagrade!!! ... naredba n;

}

3) for(izraz1; uslov; izraz2) { naredba1 naredba2 ... naredba n

}

Page 54: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

49

Primjer 20. Napisati program koji ispisuje poruku "C++" 10 puta.

Rješenje. Prema znanju koje imamo (bez znanja for petlje) mi bi ovaj zadatak riješili tako što

bi poruku "C++" napisali 10 puta:

cout<<"C++ C++ C++ C++ C++ C++ C++ C++ C++ C++";

Pa i nije neki zamor. No, šta da svaka poruka mora biti u novom redu? Onda bi bilo malo više

posla, ali i to se da. Što će nam onda for petlja? Recimo da smo u zadatku umjesto 10 puta

napisali 1000 ili možda milion puta. Koliko bi nam samo vremena trebalo da to napišemo na

prethodni način? Tu dolazi do izražava moć for petlje. Mi napišemo jednom, a ono se ispiše

koliko puta želimo.

Vratimo se sada rješenju našeg zadatka pomoću for petlje. Iz zadatka znamo da se poruka

"C++" treba ispisati 10 puta. To je naš uslov iz definicije for petlje. Izraz1 u definiciji

petlje označava odakle petlja kreće tj. pretstavlja njenu početnu vrijednost. U našem slučaju

će krenuti od broja 1. Izraz2 u definiciji for petlje označava za koliko će se izraz1 –

početna vrijednost povećati nakon što prgram dođe do kraja for petlje. To je zapravo korak,

koji diktira način ponavljanja. U našem slučaju, izraz2 mora povećati izraz1 svaki put za

1. Jer trebamo ispisati "C++" 10 puta, pošto krećemo od 1, a trebamo doći do 10. Kako

napisati tj. zapisati izraz1? Najčešće se u tom slučaju koristi varijabla i, može i neko drugo

ime. Ali varijablu i moramo deklarirati na početku, te je tipa int. Kako napisati uslov?

Uslov obično sadrži varijablu iz izraza1 i mora biti logički uslov. U našem slučaju je

i<=10. Kako napisati izraz2? Već smo rekli da on povećava izraz1 tj. početnu vrijednost

(može i smanjivati, ali u našem slučaju povećava). Obično se piše i++, ako povećava za 1.

Mogli smo napisati i ovako i=i+1. To je isto.

Page 55: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

50

Konačno rješenje zadatka.

#include <iostream> using namespace std; int main(){ int i; for(i=1; i<=10; i++) cout<<"C++"<<endl; return 0; }

Primjer 21. Napisati program koji će ispisati brojeve od 10 do 1.

Rješenje. Zadatak od nas traži da ispišemo brojeve 10, 9, 8, ... , 1. Dakle, opet imamo

ponavljanje, pa ćemo koristiti for petlju. Sada je početna vrijednost 10, a krajnja 1, pa nam

izraz2 mora biti takav da smanjuje početnu vrijednost. Uslov, petlja mora da se vrti –

ponavlja do 1, pa mora biti oblika i>=1 ili i>0.

#include <iostream> using namespace std; int main(){ int i; for(i=10; i>=1; i--) cout<<i<<endl; return 0; }

Primjer 22. Napisati program koji ispisuje sve parne brojeve između 1 i 15.

Rješenje. Početna vrijednost-izraz1 će nam biti sada i=2 jer je 2 prvi parni broj koji se

nalazi u zadanom intervalu. Uslov će biti i<15, a izraz2 tj. korak će biti i=i+2. Sljedeći

parni broj poslije 2 je 4, pa 6, 8, itd. Da bi dobili 4 moramo na 2 tj. početnu vrijednost dodati

2. Isto tako da bi dobili 6 od 4, moramo na 4 dodati 2, itd., zbog toga mora biti oblika i=i+2.

Pojasnimo malo ovaj izraz. On znači da onu vrijednost koju ima i povećamo za 2, pa novu

vrijednost pridružimo varijabli i. Stara vrijednost se obriše, a nova upiše.

Page 56: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

51

#include <iostream> using namespace std; int main(){ int i; for(i=2; i<15; i=i+2) cout<<i<<endl; return 0; }

Primjer 23. Napisati program koji ispisuje sve brojeve od 1 do 100 koji su djeljivi sa 7.

Rješenje. Ovakav zadatak na prvi pogled se može učiniti teškim. No, vidjet ćemo da nije tako.

Kako trebamo za svaki broj od 1 do 100 provjeriti je li djeljiv sa 7, to nam odmah sugerira da

trebamo koristiti for petlju, jer za svaki broj trebamo uraditi isto. To isto je provjeriti je li

djeljiv sa 7 odnosno provjeriti da li je ostatak pri dijeljenju tog broja sa 7 jednak nuli.

Dakle, izraz1 u petlji će nam biti i=1 (mada smo mogli i staviti i=7, ali neka ostane i=1

jer još uvijek smo početnici). Uslov će biti i<=100. Izraz2-korak će biti 1 odnosno i++.

Ostaje još da odredimo šta će biti u petlji tj. koje će se to naredbe ponavljati. Za svaki broj

moramo naći ostatak i ispitati da li je jednak nuli. Ako jeste ispisati ga. Dakle, to je uslov za

if (ako) naredbu.

#include <iostream> using namespace std; int main(){ int i; for(i=1; i<=100; i++) if(i%7==0)cout<<i<<endl; return 0; }

Primjer 24. Napisati program koji će sabrati sve prirodne brojeve od 1 do 100.

Rješenje. Od anegdota o poznatim matematičarima možda je najčešće prepričavana ona o

velikom matematičaru Karlu Friedrichu Gaussu, iz doba njegova djetinjstva: Jednom zgodom

učitelj đacima dade u zadatak neka izračunaju zbir prvih stotinu prirodnih brojeva. Očekivao

je kako će ga djeca, zadubljena u rješavanje, neko duže vrijeme ostaviti na miru, no nemalo se

iznenadio kada je već nakon nekoliko trenutaka mali Gauss javio tačan rezultat.

Page 57: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

52

Zadatak ćemo riješiti upotrebom for petlje, jer trebamo sabrati brojeve 1, 2, 3, ... , 100.

Dakle, imamo ponavljanje. Početna vrijednost (izraz1) će biti i=1. Uslov i<=100. Izraz2

(korak) i++. Ovo je za sada bilo lahko. Ostaje još da odredimo, šta će to biti u for petlji tj. da

napišemo izraz (formulu) koja će sabirati te brojeve. Prvo ćemo uzeti i deklarirati još jednu

varijablu kojoj ćemo dati ime zbir. Pošto sabiramo samo prirodne brojeve, ona će biti tipa

int. U ovoj varijabli ćemo čuvati naš rezultat (zbir). Varijablu zbir ćemo odmah i

inicijalizirati tj. pridružiti (spremiti, skladištiti) joj broj 0. Ovo činimo zbog toga što varijabla

ima neku vrijednost, obično broj u memoriji, pa bi dobili pogrešan rezultat. Naredba koja će

sabirati brojeve i ujedno čuvati rezultat je

zbir=zbir+i;

#include <iostream> using namespace std; int main(){ int i, zbir=0; for(i=1; i<=100; i++) zbir=zbir+i; cout<<zbir<<endl; return 0; }

Razmotrimo sada rješenje korak po korak da vidimo kako to funkcionira. Računar dolazi do

for petlje. Početna vrijednost je i=1. Potom provjerava da li je uslov zadovoljen (tačan) tj.

računa i<=100 kad uvrsti i=1 je 1<=100 tačno. Zatim ulazi u for petlju i izvršava

naredbu zbir=zbir+i; tj. kad uvrstimo zbir=0+1 odnosno zbir=1. Pošto u for petlji

nema više naredbi osim prethodne, tada se izvršava izraz2 tj. i++ odnosno i=i+1 tj.

i=1+1=2.

Ovo je bio prvi korak u for petlji. Sada ide drugi. Provjerava se uslov: i<=100. Sada je i=2,

a ne 1. Pa je 2<=100 tačno. Ulazi se u for petlju i izvršava naredba zbir=zbir+i=1+2=3.

Pazite, varijabla zbir je u prvom koraku promijenila svoju vrijednost iz 0 u 1. Sada se opet

izvrši izraz2 tj. i postaje i=i+1=2+1=3.

Sada bi išao korak 3, pa 4, 5, itd do 100. Vidimo da naredba zbir=zbir+i zapravo znači:

1 + 2 + 3+. . . +100

Na kraju moramo još ispisati rezultat tj. vrijednost varijable zbir.

Page 58: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

53

Primjer 25. Napisati program koji će izračunati (prebrojiti) koliko ima prirodnih brojeva

između 1 i 1000, a koji su djeljivi sa 19.

Rješenje. Ovo je sličan zadatku koji smo prije uradili a tražilo se da ispišemo sve brojeve

djeljive sa 7 između 1 i 100. Brojeve nećemo ispisivati već ćemo izbrojati koliko ih ima.

Kako ćemo to uraditi? Tako što ćemo deklarirati i incijalizirati varijablu s imenom brojac

(može naravno i neko drugo ime) tj. int brojac=0;. Odmah varijablu brojac stavljamo

na vrijednost 0, jer kad nađemo prvog koji je djeljiv s 19, odnosno kad uslov u naredbi if

bude tačan, varijablu povećamo za 1. Pa kad nađemo drugog opet varijablu povećamo za 1.

Tu radnju možemo jednostavno zapisati sa brojac++; ili brojac=brojac+1;. Na kraju

ostaje još samo da ispišemo koliko ih ima.

#include <iostream> using namespace std; int main(){ int i, brojac=0; for(i=1; i<=1000; i++) if(i%19==0) brojac++; cout<<brojac<<endl; return 0; }

Primjer 26. Napisati program koji učitava prirodan broj i ispisuje poruku da li je taj broj

savršen. (Broj je savršen ako je jednak zbiru svih svojih djelitelja manjih od njega samog, npr.

djelitelji od broja 6 su 1, 2, i 3 te vrijedi 1 + 2 + 3 = 6 ili za 28 = 1 + 2 + 4 + 7 + 14).

Rješenje. Ovo je malo teži primjer, jer zahtjeva od nas da kombiniramo prethodne primjere. U

zadatku se od nas traži da provjerimo da li je uneseni prirodan broj savršen. Dajmo ime tom

broju n tj. int n;. Iz definicije savršenog broja slijedi da trebamo naći sve djelitelje

unesenog broja manje od njega samog (to znamo iz prethodnih primjera) i kako kojeg nađemo

ujedno ih sabiramo (to također znamo iz primjera gdje je trebalo sabrati prvih 100 prirodnih

brojeva). Kako će sada izgledati for petlja. Znamo da je izraz1 jednak i=1. Uslov:

dijelimo sve do unesenog broja tj. i<n. Izraz2 je i++. Ostaje još samo da vidimo da li je taj

zbir jednak unesenom broju, ako jeste broj je savršen, inače nije.

Page 59: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

54

#include <iostream> using namespace std; int main(){ int i, n, zbir=0; cout<<"Unesite prirodan broj: "; cin>>n; for(i=1; i<n; i++) if(n%i==0) zbir=zbir+i; if(n==zbir) cout<<"Broj je savrsen."<<endl; else cout<<"Broj nije savrsen."<<endl; return 0; }

Primjer 27. Napisati program koji ispisuje sve savršene brojeve koji se nalaze između 1 i

1000.

Rješenje. Ovaj primjer ćemo iskoristiti da demonstriramo kako se koristi petlja u petlji. Jer i u

for petlji može biti jedna ili više for petlji. Također, isto može biti i unutar tih petlji. Iz

prethodnog primjera znamo kako se traži (provjerava) da li je broj savršen. Sada to moramo

uraditi za svaki broj od 1 do 1000. Dakle, trebaće nam for petlja koja ima početnu vrijednost

izraz1 n=1. Uslov: n<=1000, a izraz2 je n++. Unutar ove petlje će biti for petlja iz

prethodnog primjera. Prije nje ćemo morati staviti da je zbir=0; tj. moramo za svaki broj na

ovaj način prije ulaska u drugu petlju resetirati varijablu zbir odnosno njenu vrijednost.

Unutar te petlje će biti i provjera da li je zbir jednak n tj. ako jeste ispisujemo broj n, jer je

on tada savršen broj. Pošto ćemo u toj vanjskoj petlji imati tri naredbe: zbir=0; for petlju

iz prethodnog primjera i provjeru je li zbir jednak n, to ćemo ih morati staviti u vitičaste

zagrade.

#include <iostream> using namespace std; int main() { int i, n, zbir; for(n=1; n<=1000; n++){ zbir=0; for(i=1; i<n; i++) if(n%i==0) zbir=zbir+i; if(n==zbir) cout<<n<<endl; } return 0; }

Page 60: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

55

Primjer 28. Napisati program za ispis prirodnih brojeva od 1 do n.

Rješenje.

#include <iostream> using namespace std; int main() { int i, n; cin>>n; for(i=1; i<=n;i++) cout<<i<<endl; return 0; }

Za unos 5

4.5.2. Zadaci za samostalan rad

Zadatak 46. Napisati program koji će ispisati sve neparne brojeve od 1 do 20.

Izlaz: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19.

Zadatak 47. Napisati program koji će ispisati brojeve 10, 20, 30, ... , 100.

Izlaz: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100.

Zadatak 48. Napisati program koji ispisuje prirodne brojeve od 5 do 20 unazad.

Izlaz: 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5.

Zadatak 49. Napisati program koji ispisuje sve brojeve između 1 i 100, koji su djeljivi s 11.

Izlaz: 11, 22, 33, 44, 55, 66, 77, 88, 99.

Zadatak 50. Napisati program za ispis zbira prvih 50 prirodnih brojeva.

Izlaz: 1275.

Zadatak 51. Napisati program koji će sabrati sve parne brojeve od 1 do 200.

Izlaz: 10100.

Zadatak 52. Napisati program koji unosi prirodan broj i ispisuje sve njegove pozitivne

faktore.

Ulaz: 6. Izlaz: 1, 2, 3, 6.

Zadatak 53. Napisati program koji unosi dva prirodna broja i ispisuje NZD tih brojeva, npr.

Ulaz: 12, 30. Izlaz: NZD(12,30) = 6.

Zadatak 54. Napisati program koji će ispisati tri višekratnika (sadržioca) broja 15 uz uslov da

su veći od 50. (Višekratnici ili sadržioci prirodnog broja su svi brojevi koji su djeljivi s tim

brojem).

Izlaz: 60, 75, 90.

Page 61: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

56

Zadatak 55. Napisati program za ispis zbira prirodnih brojeva manjih od 500, a djeljivih sa 3

i ispisati koliko takvih brojeva ima.

Izlaz: Njihov zbir je 41583, a ima ih 166.

Zadatak 56. Napisati program koji će ispisati višekratnike (sadržioce) unijetog broja n. Broj n

mora biti veći od 5 i manji od 20. Ispisuju se samo dvocifreni višekratnici.

Ulaz: 19. Izlaz: 19, 38, 57, 76, 95.

Ulaz: 7. Izlaz: 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98.

Zadatak 57. Napisati program koji ispisuje sve parne brojeve koji se nalaze između brojeva

A i B. Svaki parni broj se ispisuje u novom redu. Brojevi A i B se unose.

Ulaz: 1, 10. Izlaz: 2, 4, 6, 8.

Zadatak 58. Napisati program koji sabira sve višekratnike broja 7 koji se nalaze između

zadanih prirodnih brojeva A i B. Ako između zadanih brojeva nema višekratnika broja 7,

ispišite poruku „Nema trazenih visekratnika“.

Ulaz: 1, 30. Izlaz: 7, 14, 21, 28.

Ulaz: 1, 6. Izlaz: Nema trazenih visekratnika.

Zadatak 59. Napisati program koji provjerava da li je uneseni broj prost broj. (Broj . > 1 je

prost ako je djeljiv samo s 1 i sa samim sobom)

Ulaz: 7. Izlaz: DA. Ulaz: 4. Izlaz: NE. Ulaz: 1. Izlaz: NE.

Zadatak 60. Napisati program koji će ispisati zbir kvadrata brojeva od 1 do n.

Ulaz: 4. Izlaz: Zbir je 30.

Zadatak 61. Napisati program koji će ispisati sumu (zbir) prirodnih brojeva u intervalu od 1

do n koji su djeljivi s 3 i sa 7.

Ulaz: 1, 50. Izlaz: Zbir je 63.

Ulaz: 1, 20. Izlaz: Nema ih.

Zadatak 62. Napisati program koji će ispisati zbir prirodnih brojeva u intervalu od 1 do n čija

je cifra jedinica 8.

Ulaz: 1, 50. Izlaz: Zbir je 140.

Ulaz: 1, 7. Izlaz: Nema ih.

Zadatak 63. Napisati program za ispis tablice množenja od 1 do 5 unesenim brojem n.

Ulaz: 3. Izlaz: 1*3= 3, 2*3= 6, 3*3= 9, 4*3= 12, 5*3= 15.

Zadatak 64. Napisati program za ispis aritmetičke sredine parnih prirodnih brojeva do n.

Ulaz: 10. Izlaz: 6.5.

Zadatak 65. Napisati program koji će izračunati zbir dvocifrenih brojeva kod kojih je zbir

cifara manji od 7.

Page 62: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

57

Izlaz: 520.

Zadatak 66. Napisati program koji će ispisati sve dvocifrene brojeve s cifrom jedinica većom

od 6.

Izlaz: 17, 18, 19, 27, 28, 29, 37, 38, 39, 47, 48, 49, ... , 97, 98, 99.

Zadatak 67. Napisati program koji će ispisati dvocifrene brojeve kod kojih je pri djeljenju s 3

je ostatak 2.

Izlaz: 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, ... , 92, 95, 98.

4.5.3. While petlja

Petlja while se koristi za ponavljanje dijela koda programa kod kojeg broj ponavljanja nije

unaprijed poznat. Dakle, kada ne znamo da li će se pri svakom pokretanju programa ili

petlje while ona izvršiti jednom, dva puta ili deset puta ili pak nijednom. While petlju

možemo koristiti i kada je broj ponavljanja poznat.

Opći oblik while naredbe je:

while (uslov) naredba;

Kada računar dođe do while petlje on prvo se provjerava uslov. Ako je uslov (koji mora

biti logički izraz) tačan, izvršava se naredba. Potom se opet provjerava uslov, pa ako je

tačan, izvršava se naredba. Ciklus tj. petlja se završava kada vrijednost uslova postane logička

neistina tj. netačan. Dakle, naredba while se izvršava sve dok je uslov tačan. Treba uočiti

da se može desiti da naredba ne bude nijednom izvršena, ako pri prvoj provjeri uslov, bude

netačan.

Kao i kod for petlje, ako imamo dvije ili više naredbi koje pripadaju while naredbi, onda se

one pišu u vitičastim zagradama tj. u bloku. Rijedak je slučaj kada ćemo koristiti načine

pisanja 1 i 2, većinom 3 ili 4.

Načini pisanja while naredbe:

1) while ( uslov ) naredba; 2) while ( uslov ) naredba;

3) while ( uslov ) {

naredba1; naredba2; ... naredba n;

}

4) while ( uslov ){ naredba1; naredba2; ... naredba n;

}

Page 63: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

58

Primjer 29. Napisati program koji će ispisati brojeve od 1 do 10.

Rješenje. Uzeli smo ovaj lagan zadatak da demonstriramo kako to radi while petlja. Prvo što

trebamo je odrediti je uslov. On treba biti tačan sve dok se ne ispišu svi brojevi. Pošto je

zadnji 10, onda će biti i<=10, gdje smo uzeli varijablu i, te joj odmah pri deklaraciji dali

vrijednost 1, jer je 1 prvi broj koji će se ispisati. Brojeve će ispisivati naredba cout koja će

biti u while petlji. Ostaje još da definiramo šta će nam biti brojač tj. naredbu koja će

mijenjati vrijednost varijable i, da bi uslov nakon ispisa broja 10 bio netačan tj. da bi se

while petlja završila. Kako se brojevi trebaju ispisivati po redu 1, 2, 3, itd to ćemo očito i

povećavati za 1. Pa će brojač biti oblika i=i+1 ili i++.

#include <iostream> using namespace std; int main() { int i=1; while(i<=10) { cout<<i<<endl; i++; } return 0; }

Primjer 30. Napisati program koji učitava prirodan broj i ispisuje mu cifre počevši od cifre

najmanje mjesne vrijednost (cifre jedinica) i to svaku u novom redu.

Rješenje. Trebamo unijeti jedan prirodan broj i ispisati mu cifre, svaku u novom redu, počevši

od cifre jedinica. Pošto, ne znamo, koji će broj korisnik unijeti tj. da li će to biti jednocifren,

dvocifren ili pak petocifren broj, koristimo while petlju. Da lakše odredimo šta će biti uslov

i koje će se naredbe nalaziti u while petlji, posmatrajmo jedan konkretan broj npr. 629. Kako

sada dobiti zadnju cifru od broja 629? Tako što ćemo koristiti operator modulo – ostatak pri

cjelobrojnom dijeljenju (%). Pa će biti 629%M=9, gdje je M, koji broj? Kako ga odrediti?

Pošto je 9 ostatak, to će očito biti 620 + 9, sada se jasno vidi da je 620=62*10

629 = 620 * 10 + 9

Dakle, M je broj 10. Pa će nam 629%10 dati cifru 9. Kako dobiti drugu cifru? Kada bi imali

broj 62, onda bi bilo lahko. Opet bi napisali 62%10, a to je 2, i dobili bi drugu cifru. Možemo

li kako od broja 629 dobiti broj 62? Imajte na umu da mi radimo s cijelim brojevima i da

ćemo koristiti tip int. Podijelimo broj 629 s 10. To će dati 62,9. Kako već rekoh, mi ćemo

koristiti tip int, za broj koji bude unosio korisnik, pa će računar odbaciti dio poslije zareza, pa

će ostati samo 62. Sada primijenimo modulo tj. 62%10=2. Kako dobiti treću cifru? Pa na isti

Page 64: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

59

način kao i drugu. Podijelimo 62 i 10. Dobićemo 6,2. Računar će odbaciti dio poslije zareza,

jer radimo s cijelim brojevima i ostaje broj 6. Konačno, 6%10=6 i tako smo dobili sve tri

cifre. Ako podijelimo još broj 6 s 10 dobit ćemo 6/10=0,6 tj. 0 jer će računar odbaciti dio

poslije zareza. Dakle, podijelimo li s 10 još i zadnju cifru (onu koja je ostala zadnja pri

prethodno opisanom načinu ispisivanja cifri broja), uvijek ćemo dobiti broj 0. Stoga će se

petlja ponavljati sve dok je uslov različit od nule.

Šta se je u prethodnom objašnjenju ponavljalo?

• tražili smo modulo 10

• dijelili smo s 10

Dakle, označimo s n prirodan broj kojeg unosi korisnik tj. int n;. Naredbe koje će biti u

while petlji su:

cout<<n%10<<endl;

n=n/10;

Uslov je oblika n!=0 jer kad zadnji broj (u našem primjeru broj 6) podijelimo s 10 dobijemo 0, pa dok je god n različito od 0 (nije nula), izvršavat će se while petlja.

#include <iostream> using namespace std; int main() { int n; cin>>n; while(n!=0) { cout<<n%10<<endl; n=n/10; } return 0; }

Za unos 629

Testirati program i za jednocifren i dvocifren broj, jer se može desiti da recimo za sve brojeve

daje ispravan rezultat, osim za jednocifrene.

Primjer 31. Napisati program za sabiranje brojeva. Brojevi se unose s tastature. Kada korisnik

unese broj 0, program se završava.

Rješenje.

Page 65: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

60

#include <iostream> using namespace std; int main(){ int i, zbir = 0; cout<< "Unesite broj: "; cin >> i; while(i!=0){ zbir=zbir+i; cout<<"Unesite broj: "; cin>>i; } cout<<"Zbir je "<<zbir<<endl; return 0; }

4.5.4. Petlja do while

Naredba do while se također koristi kada nam nije poznat broj ponavljanja, ali za razliku od

for i while petlje ovdje se naredba izvrši bar jednom.

Pošto, se kod ove petlje prvo izvrši naredba, pa se onda provjeri uslov, a kod for i while

petlje se prvo provjeri uslov, pa se izvršavaju naredbe.

Opći oblik do while naredbe je:

do naredba; while (uslov);

ZAPAMTITI: Na kraju obavezno staviti ;

Načini pisanja do while naredbe:

1) do naredba; while(uslov); 2) do naredba;

while(uslov);

3) do

{ naredba1; naredba2; ... naredba n;

} while(uslov);

4) do { naredba1; naredba2; ... naredba n;

} while( uslov);

Page 66: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

61

4.5.5. Naredba break

Iskakanje iz upravljačke strukture se postiže naredbom:

break;

Time se postiže završetak ciklusa (petlje): for, while, do while, skakanjem na prvu

naredbu neposredno iza petlje. Nekad ćete doći u situaciju da želite izađi iz petlje prije nego

se završi tada obično koristite naredbu break.

4.5.6. Naredba Switch

Naredba switch omogućava da selektiramo kod koji će se izvršiti na osnovu nekog uslova,

tj. provjerava da li izraz odgovara nekoj od konstantnih cjelobrojnih vrijednosti (ili

karaktera).

Opći oblik naredbe switch je:

switch (izraz) { case konstanta_1: blok naredbi_1; break; case konstanta_2: blok naredbi_2; break; . . . case konstanta_n-1: blok naredbi_n-1; break; default: blok naredbi_n; break; }

U slučaju da izraz ima vrijednost konstanta_1, tada se izvršavaju blok naredbi_1, u

slučaju da ima vrijednost konstanta_2 tada se izvršavaju blok naredbi_2, a u slučaju da

nema nijednu od ponuđenih vrijednosti tada se izvršava default odnosno blok

naredbi_n.

Page 67: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

62

Ako dobivena vrijednost nije jednaka niti jednoj od navedenih konstanti, izvršit će se blok

naredbi pridružen opciji default. Izvršavanje bloka naredbi prekida se naredbom break.

Ako se blok naredbi u case ne završi s break, nastavlja se izvršavati blok naredbi sljedećeg

case. Opcija default može se i izostaviti, ako za njom ne postoji potreba!

Primjer 32. Napisati program koji učitava ocjenu i ispisuje tu ocjenu riječima.

Rješenje.

#include<iostream> using namespace std; int main() { int ocjena; cout<<"Unesite ocjenu:"<<endl; cin>>ocjena; switch (ocjena) { case 1: cout<<"Nedovoljan"<<endl; break; case 2: cout<<"Dovoljan"<<endl; break; case 3: cout<<"Dobar"<<endl; break; case 4: cout<<"Vrlo dobar"<<endl; break; case 5: cout<<"Odlican"<<endl; break; default: cout<<"Nepostoji takva ocjena"<<endl; } return 0; }

Page 68: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

63

4.5.7. Zadaci za samostalan rad

Zadatke rješavati while petljom.

Zadatak 68. Napisati program za ispis kvadrata prirodnih brojeva od 1 do 5.

Izlaz: 1, 4, 9, 16, 25.

Zadatak 69. Napisati program za ispis prirodnih brojeve od 5 do 20 unazad.

Izlaz: 20, 19, 18, ... , 7, 6, 5.

Zadatak 70. Napisati program za ispis kvadratnog korijena prirodnih brojeva do 10.

Izlaz: 1.00, 1.41, 1.73, 2.00, ... , 3.00, 3.16. Rezultat zaokružiti na dvije decimale.

Zadatak 71. Napisati program za ispis prirodnih brojeva od 1 do n.

Ulaz: 5. Izlaz: 1, 2, 3, 4, 5.

Zadatak 72. Napisati program za ispis parnih prirodnih brojeva od 1 do n.

Ulaz: 9. Izlaz: 2, 4, 6, 8.

Zadatak 73. Napisati program za ispis zbira brojeva od 1 do n koji su djeljivi sa 7.

Ulaz: 20. Izlaz: 21. Ulaz: 7. Izlaz: 7. Ulaz: 5. Izlaz: 0.

Zadatak 74. Napisati program za brojanje brojeva djeljivih s 3, za prirodne brojeve od 1 do n.

Ulaz: 7. Izlaz: 2.

Zadatak 75. Napisati program koji za uneseni prirodni broj ispisuje njegovu prvu i zadnju

cifru.

Ulaz: 8. Izlaz: 8. Ulaz: 12. Izlaz: 1, 2. Ulaz: 456. Izlaz: 4, 6. Ulaz: 78931. Izlaz: 7, 1.

Zadatak 76. Napisati program koji unosi prirodan broj i ispisuje zbir njegovih cifara.

Ulaz: 2. Izlaz: 2. Ulaz: 11. Izlaz: 2. Ulaz: 125. Izlaz: 8. Ulaz: 8346. Izlaz: 21.

Zadatak 77. Napisati program koji unosi prirodan broj i ispisuje proizvod njegovih cifara.

Ulaz: 2. Izlaz: 2. Ulaz: 11. Izlaz: 1. Ulaz: 125. Izlaz: 10. Ulaz: 8346. Izlaz: 576.

Zadatak 78. Napisati program koji unosi prirodan broj i ispisuje ga obrnuto.

Ulaz: 1234. Izlaz: 4321.

Zadatak 79. Napisati program koji unosi prirodan broj i provjerava da li je učitani broj

palindrom.

Ulaz: 121. Izlaz: DA; Ulaz: 123, Izlaz: NE.

Zadatak 80. Napisati program koji unosi prirodan broj i ispisuje mu cifre riječima.

Ulaz: 123. Izlaz: Jedan Dva Tri.

Zadatak 81. Napisati program koji unosi dva prirodna broja i ispisuje njihov NZS.

Ulaz: 12, 30. Izlaz: NZS(12,30) = 60.

Page 69: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

64

Zadatak 82. Napisati program koji unosi trocifren prirodan broj i ispitiva da li je uneseni broj

Armstrongov (Broj je Armstrongov ako je jednak sumi svojih cifara podignutih na stepen

dužine broja. U našem slučaju, broj je Armstrongov ako je jednak zbiru kubova svojih cifara).

Ulaz: 371. Izlaz: DA (33 + 73 + 13 = 371). Ulaz: 121. Izlaz: NE (13+23+13= 11).

Zadatak 83. Napisati program koji unosi prirodan broj n i ispisuje sve Armstrongove brojeve

u intervalu od 1 do n.

Ulaz: 1000. Izlaz: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407.

5. NIZOVI (POLJA)

Pretpostavimo da trebamo riješiti zadatak u kojem se od nas traži da unesemo npr. 100-tinu

cijelih brojeva. Tada bi za svaki broj trebali po jednu varijablu. Ako bismo uzeli imena slova

abecede a, b, c, itd brzo bi ih potrošili. Mogli bi pisati a1, a2, a3, itd. No, ni ovo nije prikladno

rješenje, jer ne zaboravimo da treba napisati 100-inu varijabli prilikom deklaracije, pa onda i

kad ih budemo unosili. Postavlja se pitanje, ima li lakšeg i jednostavnijeg načina? Ima,

upotrebom nizova ili polja. Šta je to niz?

Niz ili polje je konačni niz podataka istog tipa koji predstavljaju cjelinu.

Primjer 33. Sljedeći brojevi predstavljalju niz:

1, 2, 3, 4, 5, 6, 7, 8 , 9 10

1, 3, 5, -1, 3, 1, 8, 9, 7, 0

1, 1, 1, 1, 1, 1, 1, 1, 1, 1

Svi su istog tipa tj. int odnosno cijeli brojevi.

Također, niz može biti sastavljen i od znakova:

a, b, c, d, e, f

a1, a2, a3, a4

arif, elma, murat, omer

Dakle, niz se sastoji od podataka istog tipa. Podaci u nizu se nazivaju elementi (članovi)

niza. Naprimjer u nizu a, b, c, d, e, f elementi (članovi) niza su slova i to slovo a je jedan

element, drugi element je slovo b itd.

Elementi niza se identifikuju pomoću rednog broja unutar niza tj. položaj (mjesto) u nizu je

određeno pomoću rednog broja. Ti redni brojevi nazivaju se indeksi elementa niza.

Prvi element niza u C++ ima obavezno indeks 0, drugi 1, treći 2, itd.

Page 70: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

65

Tako npr. u nizu

a, b, c, d, e, f

slovo a se nalazi na mjestu 0 odnosno ima indeks 0, slovo b indeks 1, c indeks 2, d indeks 3, e

indeks 4 i f indeks 5.

Nizovi mogu biti:

• jednodimenzionalni

• višedimenzionalni.

Mi ćemo u našoj skripti raditi samo jednodimenzionalne nizove. To su nizovi navedeni u

prethodnom primjeru.

5.1. Jednodimenzionalni nizovi

Sve prethodno što smo rekli vrijedi za jednodimenzionalni niz. Kada kažemo niz, u daljem

tekstu mislimo na jednodimenzionalni niz, da ne bi stalno pisali riječ jednodimenzionalni.

U C++ niz definiramo na sljedeći način:

tip_elementa ime_niza [dužina niza];

Prvo navodimo tip elemenata niza. Pišemo int, ako će elementi biti cijeli brojevi, double

ako će elementi biti realni brojevi, char ako će elementi biti znakovi, itd, isto kao i za

varijable.

Drugo pišemo ime niza. Kao i kod varijabli, ime vi dajte i sami birate naziv.

Obavezno idu srednje zagrade [], koje se dobiju pritiskom tipki Alt Gr + F i Alt Gr + G.

Unutar srednjih zagrada se navodi broj, koji označava dužinu niza tj. govori koliko će niz

imati elemenata.

Primjer 34.

int dan[5];

Na ovaj način smo definisali (deklarirali) niz čije ime je dan, a koji ima pet elemenata tipa

int. Imati na umu da indeksi (mjesta) elemenata niza idu od 0 tj. indeksi su 0, 1, 2, 3, 4.

double A[10];

Na ovaj način smo definisali niz čije je ime A i koji ima deset elemenata tipa double.

char slova[30];

Page 71: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

66

Na ovaj način smo definisali niz čije je ime slova, a ima 30 elemenata tipa char.

Elementima (članovima) deklariranog niza mogu se pridružiti vrijednosti. Pridruživanje

vrijednosti elementu niza:

ime_niza [indeks elementa] = vrijednost;

Primjer 35.

niz [3] = 1;

Na ovaj način smo elementu niza čiji je indeks 3 (pozicija ili mjesto u nizu 3) pridružili

vrijednost 1.

Možemo odmah prilikom deklaracije izvršiti inicijalizaciju niza. Vrijednosti se navode unutar

para vitičastih zagrada, odvojene zarezom.

Primjer 36.

int a[5] = {9, 5, 4, -1, 1};

Sada smo svakom elementu niza pridružili određenu vrijednost.

Kako dobiti npr. broj 4 iz niza? Dobićemo ga tako što napišemo ime niza i u srednjim

zagradama indeks (poziciju, mjesto) gdje se broj 4 nalazi tj.:

a[2]

Pogledajmo kako to u tabeli izgleda za svaki element prethodnog niza:

9 5 4 -1 1 a[0] a[1] a[2] a[3] a[4]

Elemente niza najčešće unosimo for petljom ili while petljom.

Page 72: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

67

Oprez!

U radu s nizovima treba biti oprezan, jer jezik C++ ne provjerava granice niza prilikom

pristupa elementima (članovima) niza. Ako se navede prevelik ili negativan indeks,

prevoditelj neće javiti pogrešku i pri izvršavanju programa pristupit će se memorijskoj adresi

koja nije u području rezerviranom za niz. To će prouzročiti neispravan rad programa. Ako se

izdvaja (dohvaća) element (član) s nedozvoljenim indeksom, rezultat je slučajni broj. Ako se

vrijednost pridružuje članu s nedozvoljenim indeksom, vrijednost će se pohraniti u memoriju

na mjesto predviđeno za druge sadržaje što će vjerojatno prouzročiti pogrešan rad programa.

Primjer 37. Brojeve 1, 5, -1, 4, 5 spremiti u niz broj, te ih ispisati na ekran svaki u novom

redu.

Rješenje.

#include <iostream> using namespace std; int main() { int a[5]={1, 5, -1, 4, 5}; cout<<a[0]<<endl; cout<<a[1]<<endl; cout<<a[2]<<endl; cout<<a[3]<<endl; cout<<a[4]<<endl; return 0; }

Ovakav način ispisa elemenata niza se koristi samo ako elemenata niza ima malo. Većinom se

koristi for petlja. Jer kako vidimo iz rješenja zadatka dio cout<<a[]<<endl; se ponavlja

dok se samo broj u srednjoj zagradi mijenja.

Prethodni primjer s for petljom:

#include <iostream> using namespace std; int main() { int i, a[5]={1, 5, -1, 4, 5}; for(i=0;i<5;i++) cout<<a[i]<<endl; return 0; }

Obratiti pažnju na početnu vrijednost, da je i=0 (element s indeksom 0, prvi u nizu), uslov

i<5 mada se je moglo napisati i<=4, ali je prvi način bolji.

Page 73: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

68

Primjer 38. Napisati program koji unosi 10 cijelih brojeva, i ispisuje ih obrnutim

redoslijedom u jednom redu s praznim razmakom.

Rješenje. Deklariramo niz tipa int, imena a, dužine 10. Koristimo for petlju za unos

brojeva. Drugu for petlju koristimo za ispis brojeva, s tim da je onda početna vrijednost

najveći indeks.

#include <iostream> using namespace std; int main() { int i, a[10]; for(i=0;i<10;i++) cin>>a[i]; for(i=9;i>=0;i--) cout<<a[i]<<" "; return 0; }

NAPOMENA: Sasvim je svejedno da li ćete prvo napisati sve brojeve koje unosite s

razmakom obavezno, pa pritisnuti tipku Enter ili ćete napisati prvi broj, pa Enter, drugi broj

pa Enter, itd.

Primjer 39. Napisati program koji će učitati elemente (članove) niza i sortirati ih po rastućem

redoslijedu. (5 članova niza)

Rješenje.

#include <iostream> using namespace std; int main() { int i,j,m; int a[5]; for(i=0; i<5; i++) cin>>a[i]; for(i=0; i<4; i++) for(j=i+1; j<5; j++) if(a[i]>a[j]) { m=a[i]; a[i]=a[j]; a[j]=m; } for(i=0; i<5; i++) cout<<a[i]<<" "; return 0; }

Page 74: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

69

Razmotrimo rješenje ovog zadatka, da bi shvatili kako sortiranje funkcionira. Kao što vidite

potrebna nam je jedna petlja za unos i jedna za ispis niza. Za rješenje traženog problema

trebaju nam dvije for petlje i to jedna u drugoj. Pojasnimo to na primjeru niza 2, 1, 3, 0, 4.

Prva for petlja

for(i=0; i<4; i++)

uzme prvi element 2 i pomoću druge petlje

for(j=i+1; j<5; j++)

uspoređuje ga s ostalim elementima niza. Tako druga petlja prvo uporedi 2 i naredni element

(j = i + 1), a to je 1. To radi dio

if(a[i]>a[j])

Ako je to tačno, što u našem slučaju jeste, jer je 2>1, onda ovaj dio u if naredbi

m=a[i]; a[i]=a[j]; a[j]=m;

napravi zamjenu. Broj dva stavi u varijablu m, a na njegovo mjesto stavi broj 1. Zatim, na

mjesto broja 1 stavi broj 2. Varijabla m nam treba da se ne bi broj 2 obrisao kad se na njegovo

mjesto stavlja broj 1. S varijablom m mi broj 2 privremeno premjestimo s tog mjesta da bi ga

sačuvali. Nakon toga niz izgleda ovako 1, 2, 3, 0, 4. Druga petlja, ide dalje pa uzima sljedeći

broj 3 i sad uspoređuje s a[i], to je a[0], a to je sad 1. Pošto 1>3, nije tačno, ide na sljedeći

broj, a to je 0. Kako je 1>0, tačno, opet na isti način pravi zamjenu, pa niz izgleda ovako 0, 2,

3, 1, 4. Sad upoređuje a[0]tj. 0 sa 4. Pošto 0>4 nije tačno, ništa se neće desiti. Prva for petlja

je imala vrijednost i=0 i ona se je izvršila samo jednom, a druga se je izvršila do kraja.

Rezultat toga je da na prvom mjestu u nizu imamo najmanji broj. Sada se prva pomjera za 1 tj

i postaje 1, pa a[i] tj. a[1]uzima drugo mjesto i poredi ga sa ostalim elementima u nizu.

Ponavlja se čitav prethodni postupak. Kad se izvrši druga petlja, na drugom će mjestu biti

najmanji broj od preostalih elemenata niza. I tako će niz biti sortiran. U prvoj petlji uslov je

i<4, jer onaj koji zadnji ostane je i najveći, ali ne bi pogriješili kad bi stavili i<5, samo bi

računar imao malo više posla.

5.2. Zadaci za samostalan rad

Zadatak 84. Napisati program koji će učitati niz od 7 cijelih brojeva i sortirati ih od najvećeg

ka najmanjem tj. sortirati ih po opadajućem redoslijedu.

Ulaz: 2, -1, 3, 1, 5, 0, 7. Izlaz: 7, 5, 3, 2, 1, 0, -1.

Page 75: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

70

Zadatak 85. Napisati program koji će učitati niz od 10 cijelih brojeva i ispisati koliko ima

učitanih negativnih brojeva.

Ulaz: 5, -2, 0, -8, 1, 3, -3, -5, 7, 12. Izlaz: 4

Zadatak 86. Napisati program koji će učitati niz od 10 prirodnih brojeva i ispisati njihovu

aritmetičku sredinu.

Ulaz: 2, 3, 4, 1, 5, 6, 10, 8, 9, 13. Izlaz: 6.10.

Zadatak 87. Napisati program koji će učitati niz od 10 cijelih brojeva i ispitati da li zbir tih

brojeva djeljiv s 11.

Ulaz: 2, 3, 4, 1, 5, 6, 10, 8, 9, 7. Izlaz: DA. Ulaz: 2, 3, 4, 1, 5, 6, 10, 8, 9, 13. Izlaz: NE.

6. STRING

Niz znakova, string, zauzima u memoriji jedan ili više bajtova koji su kontinuirano smješteni.

String u C++ možemo posmatrati kao niz (polje) tipa char. Oznaka kraja stringa, odnosno

posljednji znak svakog stringa je nul znak \0. Prema tome, za string od n znakova potrebno je

n+1 memorijsko mjesto. U niz dužine n znakova možemo pohraniti string maksimalne dužine

od n-1 znaka.

Primjer 40.

Neka je s="Jezik C++". Prikaz stringa s u memoriji bit će:

J e z i k C + + \0

s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9]

Pojedinom znaku stringa s moguće je pristupiti i navođenjem njegove pozicije – indeksa u

stringu. Tako je npr. s[4]=k.

6.1. Deklaracija stringa

String (niz znakova) deklariramo isto kao i niz s tim da je obavezno tipa char:

char ime [maks_broj_znakova];

ili

char ime[] = inicijalan_sadržaj_stringa;

Primjer 41.

char A[80]; ili char tekst[]="Jezik C++"

Page 76: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

71

NAPOMENA: Niz znakova je tipa char, ime mu dajemo po želji, a u srednjim zagradama

navodimo koliko ćemo znakova unijeti s tim da moramo voditi računa da na zadnjem mjestu

uvijek dođe nul znak \0 kao oznaka kraja. Računar stavlja nul znak \0, ne vi.

Primjer 42. Napišimo program koji će unositi jednu riječ i ispisivati je, te ispisati prvo slovo

je riječi.

Rješenje.

#include <iostream> using namespace std; int main() { char rijec[20]; cin>>rijec; cout<<rijec<<endl; cout<<rijec[0]<<endl; return 0; }

Za unos dan

Za unos dan je lijep

ZAKLJUČAK: Naredbom cin možemo unijeti samo jednu riječ tj. znakove do prvog

razmaka.

6.2. Čitanje i ispisivanje znakova

Sljedeće funkcije koje ćemo navesti su iz programskog jezika C, no možemo ih koristiti i u

C++, obzirom da je njihova upotreba za početnika jednostavnija. Moramo uključiti biblioteku

#include<cstdio>

getchar()

Ova funkcija čita jedan znak, uključujući i bijele znakove, sa glavnog

ulaza(tastature). Vrijednost funkcije je kod pročitanog znaka ili simbolička konstanta EOF (end of line) ukoliko je pročitan signal za kraj datoteke kao i u slučaju greške tokom čitanja. Rezultat je tipa int.

putchar(c) Ova funkcija ispisuje znak c (jedan znak) na glavni izlaz (ekran). Tip argumenta je int.

gets(s)

Ova funkcija učitava jedan red teksta (do znaka za prelazak u novi red

\n) sa glavnog ulaza (tastature) i smješta ga u s (tipa char[], odnosno char*). Umjesto znaka \n u niz s stavlja prazan znak \0.

puts(s)

Ova funkcija ispisuje sadržaj niza s (tipa char[], odnosno char*)do završnog znaka \0 kao red teksta na glavnom izlazu, dodajući znak za prelazak u novi red \n. Ako tekst sadrži više znakova \n, rezultat će biti više ispisanih redova. Vrijednost funkcije je tipa int t, nenegativan broj.

Page 77: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

72

Primjer 43. Napišimo program koji će učitati jedan red teksta (jednu rečenicu ili riječ) i

ispisati ga na ekran monitora. Kao i u prethodnom primjeru ispisat ćemo prvo slovo.

Rješenje.

#include <iostream> #include <cstdio> using namespace std; int main() { char rijec[20]; gets(rijec); putchar(rijec[0]); cout<<endl; puts(rijec); return 0; }

Za unos dan je lijep

6.3. Ispitivanje znakova

Funkcije za ispitivanje znakova određuju u koju kategoriju znakova (slovo, cifra, itd) spada

dati znak. Vrijednost svih sljedećih funkcija je tipa logical, a tip argumenta je int (vrijednost

treba da je kod nekog znaka).

Za logičku istinu daju neku nenultu vrijednost, a ne obavezno vrijednost 1, kao što daju

relacijski i logički operatori. Da biste koristili sljedeće funkcije morate napisati u zaglavlju

#include<cctype>

isalnum(c) Da li je c slovo ili broj (cifra) ?

isalpha(c) Da li je c slovo?

islower(c) Da li je c malo slovo?

isupper(c) Da li je c veliko slovo?

isdigit(c) Da li je c cifra?

isspace(c) Da li je c bijeli znak?

Page 78: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

73

Pretvaranje velikih slova u mala i obratno

tolower(c) Ako je c veliko slovo, vijednost funkcije je kod odgovarajućeg malog slova.

toupper(c) Ako je c malo slovo, vijednost funkcije je kod odgovarajućeg velikog slova.

Obavezno naučiti one koje su označene sivom podlogom. Sada ćemo navesti primjer za svaku

funkciju kako se upotrebljava.

Primjer 44. Napisaćemo program koji broji koliko je brojeva u rečenici..

Rješenje.

#include <iostream> #include <cstring> using namespace std; int main() { char rijec[]="Dan 15, mjesec 6, godina 2014"; int i=0; while(isalnum(rijec[i])) i++; cout<<"Brojeva ima ukupno "<<i<<endl; return 0; }

Primjer 45. Napisaćemo program koji ispitiva da li je neki znak slovo ili nije.

Rješenje.

#include <iostream> #include <cstring> using namespace std; int main() { char rijec[]="C++"; int i=0; while(rijec[i]){ if(isalpha(rijec[i])) cout<<"Znak "<<rijec[i]<<" je slovo"<<endl; else cout<<"Znak "<<rijec[i]<<" nije

slovo"<<endl; i++; } return 0; }

Page 79: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

74

ZAKLJUČAK: U programu dio while(rijec[i]) će se završiti kada rijec[i] postane

netačno, a to će se desiti poslije drugog znaka +, jer smo rekli da je zadnji znak nul znak \0

(NULL) u svakom nizu, a što znači netačno.

Primjer 46. Napisaćemo program koji ispitiva koliko u nizu znakova ima malih, a koliko

velikih slova.

Rješenje.

#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { char rijec[]="KaMeNicA"; int i=0, m=0, v=0; while(rijec[i]) { if(islower(rijec[i])) m++; if(isupper(rijec[i])) v++; i++; } cout<<"Malih slova je "<<m<<endl; cout<<"Velikih slova je "<<v<<endl; return 0; }

Primjer 47. Napisaćemo program koji ispitiva koliko u nizu znakova ima cifara.

Rješenje.

#include <iostream> #include <cstring> using namespace std; int main() { char rijec[]="2014 godina"; int i=0, c=0; while(rijec[i]) { if(isdigit(rijec[i])) C++; i++; } cout<<"Cifara ima "<<c<<endl; return 0; }

Page 80: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

75

Primjer 48. Napisaćemo program koji ispitiva koliko u nizu znakova ima bijelih znakova tj.

koliko ima razmaka.

Rješenje.

#include <iostream> #include <cstring> using namespace std; int main() { char rijec[]="To je to"; int i=0, bz=0; while(rijec[i]) { if(isspace(rijec[i])) bz++; i++; } cout<<"Bijelih znakova ima "<<bz<<endl; return 0; }

Primjer 49. Napisaćemo program koji pretvara mala u velika i velika u mala slova.

Rješenje.

#include <iostream> #include <cctype> #include<cstdio> using namespace std; int main() { char a[]="Grad Bihac"; char b[]="SARAJEVO"; int i=0; while(a[i]!=NULL) { a[i]=toupper(a[i]); i++; } i=0; while(b[i]!=NULL) { b[i]=tolower(b[i]); i++; } puts(a); puts(b); return 0; }

Page 81: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

76

NAPOMENA: Funkcije toupper i tolower uzimaju samo po jedan znak, zbog toga

moramo koristiti neku od petlji, te to slovo kojeg one vrate mora biti nekom pridruženo

(spremljeno).

6.4. Rad sa stringom (nizom znakova)

U prethodnom dijelu smo upoznali funkcije koje uzimaju samo jedan znak (karakter), a sada

ćemo upoznati funkcije - naredbe koje uzimaju string tj. niz znakova. U jeziku C/C++ ne

postoji nijedan operator za obradu stringa. Zato, za sve uobičajene operacije postoji

odgovarajuća bibliotečka funkcija.

Da bi koristili sljedeće funkcije morate uključiti biblioteku

#include<cstring>

Kod svih sljedećih funkcija argumenti t, u, i s su tipa string, argument n tipa int, a

argument c tipa int (treba da sadrži kod nekog znaka). Nijedna od ovih funkcija ne mijenja

sadržaj argumenta s i u, a sve mijenjaju sadržaj argumenta t. Ovdje je navedeno dosta

funkcija, obavezno naučiti one koje su označene sivom podlogom.

strcpy(t,s) Ova funkcija kopira string s u string t, kopirajući i sve znakove uključujući i \0.

strncpy(t,s,n) Ova funkcija kopira najviše n znakova iz stringa s u string t. Ako string s nema znakova, rezultat se dopunjuje znakovima \0 do dužine n.

strcat(t,s) Ova funkcija dopisuje string s na kraj stringa t.

strchar(u,c) Traži prvu pojavu znaka u stringu

strrev(s) Okreće string (ovi → ivo)

strlen(s)

Vrijednost funkcije je broj znakova (tipa int) u znakovnom nizu s. Završni znak \0 se ne ubraja. Broji koliko riječ ili tekst ima slova tj. znakova.

Page 82: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

77

strupr(s) Sva mala slova engleske abacede, pretvara u velika, a ostale znakve ne mijenja

strlwr(s) Sva velika slova engleske abacede, pretvara u mala, a ostale znakve ne mijenja

Primjer 50. Napisati program koji unosi niz znakova (string) i ispisuje ga u obrnutom

redosljedu.

Rješenje.

#include <iostream> #include<cstdio> #include<cstring> using namespace std; int main() { char a[256]; gets(a); puts(strrev(a)); return 0; }

Primjer 51. Napisati program koji unosi niz znakova (string) i ispisuje kolika je dužina niza tj.

koliko je unijeto znakova i razmaka zajedno.

Rješenje.

#include <iostream> #include<cstdio> #include<cstring> using namespace std; int main() { char a[256]; int b; gets(a); b=strlen(a); cout<<b<<endl; return 0; }

Page 83: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

78

NAPOMENA: Kada koristimo funkciju strlen, onda moramo vrijednost koju ona vrati (a

to je broj), pridružiti (spremiti) nekoj varijabli tipa int. Ne možemo je koristiti, kao što je u

prethodnom primjeru upotrebljena funkcija strrev.

Primjer 52. Napisaćemo program koji pretvara mala u velika i velika u mala slova.

Rješenje. Ovaj primjer smo već imali, ali tad smo morali pretvarati znak po znak. Sada je to

mnogo lakše i jednostavnije.

#include <iostream> #include<cstdio> #include<cstring> using namespace std; int main() { char a[]="Grad Bihac"; char b[]="SARAJEVO"; puts(strupr(a)); puts(strlwr(b)); return 0; }

Primjer 53. Napisati program koji će učitati niz znakova (riječ ili rečenicu) maksimalne

dužine 256 znakova, te ispisati koliko se puta u rečenici pojavljuje samoglasnik a (brojati i

velika i mala slova). Ako u datom nizu nema samoglasnika a, onda ispisati poruku "Nema

samoglasnika A".

Rješenje.

Postavljeni zadatak ćemo riješiti na dva načina. U prvom načinu ćemo koristiti while petlju,

obzirom da ne znamo koliko će znakova korisnik unijeti, ali znamo da je sigurno zadnji znak

u nizu nul znak \0 (tj. NULL).

Pošto moramo za svaki znak provjeriti da li je jednak a ili A, to će biti i=0, varijablu

brsamog ćemo koristiti da brojimo samoglasnik A, i odmah je postavljamo na vrijednost 0,

jer se može desiti da nema samoglasnika A.

Kad se petlja završi, ona će izbrojati sva pojavljivanja a ili A, a zatim izvan petlje

provjeravamo da li je varijabla brsamog promijenila svoju vrijednost. Ako nije, tj. ako je

ostala nula, onda nema samoglasnika A, a ako je neka druga vrijednost tj. broj, onda ih ima.

Page 84: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

79

#include <iostream> #include<cstdio> using namespace std; int main() { char slova[256]; int i=0, brsamog=0; gets(slova); while(slova[i]!=NULL){ if(slova[i]=='a' || slova[i]=='A') brsamog++; i++; } if(brsamog==0) cout<<"Nema samoglasnika A"<<endl; else cout<<"Samoglasnika A ima "<<brsamog<<endl; return 0; }

U drugom načinu ćemo umjesto while petlje koristiti for petlju. Kod for petlje broj

ponavljanja je unaprijed poznat, zbog toga uvodimo varijablu n, i pomoću funkcije strlen u

nju spremamo (pridruživamo) broj učitanih znakova (ako ima razmaka i oni se broje). Ostalo

ostaje isto. Da li smo umjesto uslova i<n u for petlji, mogli staviti isti uslov kao u while

petlji? Da, mogli smo.

#include <iostream> #include<cstdio> #include<cstring> using namespace std; int main() { char slova[256]; int i, n, brsamog=0; gets(slova); n=strlen(slova); for(i=0;i<n;i++) if(slova[i]=='a' || slova[i]=='A') brsamog++; if(brsamog==0) cout<<"Nema samoglasnika A"<<endl; else cout<<"Samoglasnika A ima "<<brsamog<<endl; return 0; }

Primjer 54. Napisati program koji će učitati riječ. Ako je učitana riječ palindrom, ispisaće

poruka "DA", ako nije poruku "NE". Palindrom je igra riječi u kojoj se čitanjem jedne riječi

ili čitave rečenice obrnutim redom dobiva isto značenje kao i pravilnim čitanjem, npr. oko,

Ana, kuk.

Page 85: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

80

Rješenje. Da bismo riješili ovaj zadatak moramo definisati dva znakovna niza. Jedan koji će

se zvati slova i drugi kopijaslova. Nakon što učitamo riječ u niz slova, koristimo funkciju

strlwr da bi sve znakove tj. slova u nizu pretvorili u mala slova, jer se može desiti da

korisnik unese npr. ime Ana. Zatim koristimo funkciju strcpy i kopiramo sve iz niza slova u

niz kopijaslova. Potom, okrećemo niz kopijaslova tj. slova u njemu, u obrnutom redoslijedu

(npr. ivo postaje ovi) naredbom strrev. Sada pomoću while petlje (može i for petljom,

prethodni primjer) ispitivamo da li se prvo slovo u nizu slova podudara s prvim slovom u nizu

kopijaslova, pa drugo, i tako redom. Ako se neka slova ne podudaraju, tada varijabla k

promijeni svoju vrijednost s broja 0, a što će značiti da unesena riječ nije palindrom. Ako pak

varijabla k ne promijeni svoju vrijednost tj. ostane broj 0, tada će to značiti da je učitana riječ

palindrom.

#include <iostream> #include<cstdio> #include<cstring> using namespace std; int main() { char slova[256]; char kopijaslova[256]; int i=0, k=0; gets(slova); strlwr(slova); strcpy(kopijaslova,slova); strrev(kopijaslova); while(slova[i]!=NULL){ if(slova[i]!=kopijaslova[i]) k++; i++; } if(k==0) cout<<"DA"<<endl; else cout<<"NE"<<endl; return 0; }

Page 86: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

81

6.5. Zadaci za samostalan rad

Zadatak 88. Napisati program koji će zadani string „ZDRAVO SVIJETE“ ispisati malim

slovima.

Izlaz: zdravo svijete

Zadatak 89. Napisati program koji će učitati string (maksimalno 256 znakova), te ispisati

dužinu stringa (koliko ste znakova unijeli).

Ulaz: Kamion. Izlaz: 6.

Zadatak 90. Napisati program koji će prebrojiti koliko se u učitanom stringu pojavilo

suglasnika R i S. (Brojati mala i velika slova).

Ulaz: Ris. Izlaz: 2. Ulaz: Med. Izlaz: Nema ih.

Zadatak 91. Napisati program koji će prebrojiti koliko riječi ima učitani string.

Ulaz: Danas je lijep dan. Izlaz: 4.

Zadatak 92. Napisati program koji će učitanu rečenicu ispisati je s desna na lijevo.

Ulaz: Izlazak sunca.. Izlaz: acnus kazalzI.

Zadatak 93. Napisati program koji će prebrojati broj velikih slova u učitanom stringu.

Ulaz: DeLL. Izlaz: 3. Ulaz: dan. Izlaz: Nema ih.

Page 87: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

82

7. ZADACI S OPĆINSKIH TAKMIČENJA

7.1. Zadaci 2010

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

29.04.2010.

1. zadatak DIJELI

Za prirodan broj # kažemo da je djeljiv s prirodnim brojem $ ako postoji prirodan broj

/ takav da je # = / ∙ $.

Treba napisati program koji će za dva prirodna broja učitana s tastature ispitati da li je

prvi djeljiv s drugim. Ukoliko jeste, treba na ekranu ispisati njihov količnik, a ukoliko nije

treba ispisati poruku da nije.

Program snimiti pod imenom DIJELI.

Ulazni podaci

Sa tastature u prvom redu učitavamo prvi prirodan broj, a u drugom drugi prirodan

broj.

Izlazni podaci

Na ekranu se u slučaju da je prvi broj djeljiv s drugim ispisuje njihov količnik, a u

slučaju da nije djeljiv, ispisuje se poruka kao u navedenom primjeru.

Primjeri

Tastatura (ulaz) 100 5

Tastatura (ulaz) 4 8

Tastatura (ulaz) 18 5

Ekran (izlaz) 20

Ekran (izlaz) 4 nije djeljivo s 8

Ekran (izlaz) 18 nije djeljivo s 5

Page 88: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

83

2. zadatak SLOVA

Treba napisati program koji će učitati riječ s tastature i ispisati tu riječ bez

samoglasnika..

Program snimiti pod imenom SLOVA.

Ulazni podaci

Sa tastature u jednom redu učitavamo riječ napisanu velikim slovima.

Izlazni podaci

Na ekranu se velikim slovima ispisuje učitana riječ ali bez samoglasnika. Ukoliko je

učitana riječ bila sastavljena samo od samoglasnika, na ekranu treba ispisati riječ BOSNA.

Primjeri

Tastatura (ulaz) INFORMATIKA

Tastatura (ulaz) BRK

Tastatura (ulaz) EEOA

Ekran (izlaz) NFRMTK

Ekran (izlaz) BRK

Ekran (izlaz) BOSNA

Page 89: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

84

3. zadatak TROUGAO

Treba napisati program koji će za tri prirodna broja učitana sa tastature ispitati da li

oni predstavljaju stranice jednakokrakog trougla.

Program snimiti pod imenom TROUGAO.

Ulazni podaci

Sa tastature u tri reda učitavamo tri prirodna broja.

Izlazni podaci

Na ekranu se ispisuje poruka da li je učitani trougao jednakokraki ili nije, ili uopće nije

trougao.

Primjeri

Tastatura (ulaz) 7 5 5

Tastatura (ulaz) 4 4 4

Tastatura (ulaz) 9 8 9

Tastatura (ulaz) 4 3 5

Tastatura (ulaz) 5 7 20

Ekran (izlaz) Jeste jednakokraki

Ekran (izlaz) Nije jednakokraki

Ekran (izlaz) Jeste jednakokraki

Ekran (izlaz) Nije jednakokraki

Ekran (izlaz) Nije trougao

Page 90: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

85

7.2. Zadaci 2011

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

April 2011.

1. zadatak RECENICA

Treba napisati program koji će za rečenicu učitanu uz pomoć tastature na ekranu

ispisati da li je izjavna, upitna ili uzvična.

Program snimiti pod imenom RECENICA.

Ulazni podaci

Sa tastature u jednom redu učitavamo rečenicu sa odgovarajućim znakom

interpunkcije na kraju (. Ili ? ili !).

Izlazni podaci

Na ekranu se ispisuje jedna od tri moguće poruke: "Recenica je izjavna." ili "Recenica

je upitna." ili "Recenica je uzvicna."

Primjeri

Tastatura (ulaz) Kako si?

Tastatura (ulaz) Danas je utorak.

Tastatura (ulaz) Pazi, auto!

Ekran (izlaz) Recenica je upitna.

Ekran (izlaz) Recenica je izjavna.

Ekran (izlaz) Recenica je uzvicna.

Page 91: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

86

2. zadatak BROJEVI

Treba napisati program koji će učitati dva broja s tastature, pa na ekranu prikazati veći.

Ako se unesu dva ista broja, na ekranu se treba pojaviti poruka "Brojevi su jednaki."

Program snimiti pod imenom BROJEVI.

Ulazni podaci

Sa tastature u prvom redu učitavamo prvi broj, a u drugom redu drugi broj.

Izlazni podaci

Na ekranu se ispisuje veći broj. U slučaju da su jednaki, na ekranu se ispisuje poruka

"Brojevi su jednaki."

Primjeri

Tastatura (ulaz) 1 5

Tastatura (ulaz) 8 3

Tastatura (ulaz) 7 7

Ekran (izlaz) Broj 5 je veci.

Ekran (izlaz) Broj 8 je veci.

Ekran (izlaz) Brojevi su jednaki.

Page 92: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

87

3. zadatak KVADRAT

Treba napisati program koji će s tastature učitati stranicu kvadrata (u centimetrima),

izračunati njegovo obim i površinu, te rezultate prikazati na ekranu.

Program snimiti pod imenom KVADRAT.

Ulazni podaci

Sa tastature u jednom redu učitavamo broj koji predstavlja stranicu kvadrata.

Izlazni podaci

Na ekranu se ispisuje obim i površina kvadrata.

Primjeri

Tastatura (ulaz) 5

Tastatura (ulaz) 2

Tastatura (ulaz) 7

Ekran (izlaz) Obim je 20. Povrsina je 25.

Ekran (izlaz) Obim je 8. Povrsina je 4.

Ekran (izlaz) Obim je 28. Povrsina je 49.

Page 93: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

88

7.3. Zadaci 2012

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

27.03. 2012.

1. zadatak KOCKA

Vrši se popločavanje puta određene dužine (D) i širine (S) sa dvije vrste betonskih

kocki. Dužine ivica kocki su: jedne vrste kocki K1, a druge vrste kocki K2. Napisati program

koji će ispisati broj kocki potrebnih za popločavanje puta, uz poštovanje određenih pravila.

Naime, kod popločavanja puta kockama ne smije biti praznina niti viška kocki, a kocke se

uklapaju na način da se koriste one kojih ide manje.

Ukoliko se niti jednom vrstom kocki ne može popločati put, program treba da ispiše

poruku "NE MOŽE". Vrijednosti D, S, K1 i K2 su pozitivne vrijednosti veće od nule.

Program snimiti pod imenom KOCKA.

Ulazni podaci

Sa tastature se unose ulazni podaci D, S, K1 i K2, gdje su D i S dužina i širina puta, a

K1 ivica jedne vrste kocki, a K2 ivica druge vrste kocki.

Izlazni podaci

Na ekranu se ispisuje broj kocki koliko je potrebno za popločavanje ili poruka "NE

MOŽE" u slučaju da kocki ima viška ili manjka.

Primjeri

Tastatura (ulaz) 12 54 2 3

Tastatura (ulaz) 75 150 30 15

Tastatura (ulaz) 12 55 5 4

Ekran (izlaz) 72

Ekran (izlaz) 50

Ekran (izlaz) NE MOŽE

Page 94: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

89

2. zadatak PRESTUPNA GODINA

Prestupne godine su sve djeljive sa 4, ako nisu djeljive sa 100, kojima se dodaju one

koje su djeljive sa 400. Napišite program koji na osnovu unešene godine računa da li je

godina prestupna. Ako jeste program će napisati "GODINA xxxx JE PRESTUPNA" a ako

nije ispisaće "GODINA xxxx NIJE PRESTUPNA". xxxx označava godinu koja je unešena na

ulazu.

Program snimiti pod imenom PRESTUPNA_GODINA.

Ulazni podaci

Sa tastature se unosi određena godina – npr. 2012 i program provjerava da li je godina

prestupna.

Izlazni podaci

Na ekranu se u slučaju da je godina prestupna ispisuje tekst "GODINA xxxx JE

PRESTUPNA" a ako nije ispisaće se "GODINA xxxx NIJE PRESTUPNA", gdje xxxx

varijabla gdine koju smo unijeli za prvovjeru-kao u navedenom primjeru.

Primjeri

Tastatura (ulaz) 2012

Tastatura (ulaz) 2000

Tastatura (ulaz) 1970

Ekran (izlaz) GODINA 2012 JE PRESTUPNA

Ekran (izlaz) GODINA 2000 JE PRESTUPNA

Ekran (izlaz) GODINA 1970 NIJE PRESTUPNA

Page 95: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

90

3. zadatak KVADRATNI KORIJEN

Napisati program koji na osnovu unesenog broja X računa kvadratni korijen brojeva

X, X+1, X+2 i X+3 i ispisuje ih na ekran. Broj X je pozitivan broj.

Program snimiti pod imenom KVADRATNI_KORIJEN.

Ulazni podaci

Sa tastature učitavamo prirodan broj X.

Izlazni podaci

Na ekranu se ispisuje broj X i njegov kvadratni korijen, zatim u novom redu X+1 i

njegov kvadratni korijen, ispod njega X+2 i njegov kvadratni korijen i na kraju u novom redu

X+3 i njegov kvadratni korijen – kao u navedenom primjeru.

Primjeri

Tastatura (ulaz) 5

Tastatura (ulaz) 9

Tastatura (ulaz) 25

Ekran (izlaz) BROJ 5 KVADRATNI KORIJEN 2.23 BROJ 6 KVADRATNI KORIJEN 2.44 BROJ 7 KVADRATNI KORIJEN 2.64 BROJ 8 KVADRATNI KORIJEN 2.82

Ekran (izlaz) BROJ 9 KVADRATNI KORIJEN 3 BROJ 10 KVADRATNI KORIJEN 3.16 BROJ 11 KVADRATNI KORIJEN 3.31 BROJ 12 KVADRATNI KORIJEN 3.46

Ekran (izlaz) BROJ 25 KVADRATNI KORIJEN 5 BROJ 6 KVADRATNI KORIJEN 5.09 BROJ 7 KVADRATNI KORIJEN 5.19 BROJ 8 KVADRATNI KORIJEN 5.29

Page 96: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

91

7.4. Zadaci 2013

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

19.03.2013.

1. zadatak BINARNI

Tradicionalni brojni sistem, koji se izučava u školi i koji se koristi u svakodnevnom

životu se naziva dekadni brojni sistem. To je sistem čija je baza broj 10, a svaki broj u tom

sistemu se zapisuje pomoću 10 cifara: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Ako imamo broj 25047 u

dekadnom brojnom sistemu, to znači da je

25047 = 2·104 + 5·103 + 0·102 + 4·10 + 7

Slično dekadnom brojnom sistemu, postoje i drugi brojni sistemi, od kojih je

najpoznatiji binarni brojni sistem. To je brojni sistem kojem je baza broj 2 a u kojem se

brojevi zapisuju pomoću cifara 0 i 1.

Treba napisati program koji s tastature učitava dva prirodna broja B i N, za koje vrijedi

2 ≤ 2 ≤ 9,3 ≤ 100000, te na ekran ispsuje broj N zapisan u brojnom sistemu s bazom B.

Program snimiti pod imenom BINARNI.

Ulazni podaci

Sa tastature se unose prirodni brojevi B i N

Izlazni podaci

Na ekranu se ispisuje broj N zapisan u brojnom sistemu s bazom B.

Primjeri

Tastatura (ulaz) 2 21

Tastatura (ulaz) 5 59

Tastatura (ulaz) 8 571

Ekran (izlaz) 10101

Ekran (izlaz) 214

Ekran (izlaz) 1073

Page 97: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

92

2. zadatak TROUGAO

Tri prirodna broja predstavljaju dužine stranica trougla ako je zbir bilo koja dva veći

od trećeg.

Treba napisati program koji će s tastature učitati 3 prirodna broja A, B i C i na ekranu

(na način kako je prikazano u primjerima) ispisati poruke o tome da li su učitani brojevi

predstavljaju stranice jednakokrakog, jednakostraničnog ili pravouglog trougla. Ako tri

učitana broja ne predstavljaju dužine stranica trougla treba ispisati odgovarajuću poruku (kao

u primjeru).

Program snimiti pod imenom TROUGAO.

Ulazni podaci

Sa tastature se unose prirodni brojevi A, B i C.

Izlazni podaci

Na ekranu se, u slučaju da učitani brojevi ne predstavljaju dužine stranica trougla.

Ispisuje poruka "NIJE TORUGAO", dok se u slučaju da učitani brojevi predstavljaju stranice

trougla ispisuje jedna od sljedeće četiri poruke: "JEDNAKOKARKI TROUGAO" (ako je

riječ o jednakokrakom trouglu), "JEDNAKOSTRANICNI" (ako je riječ o jednakostraničnom

trouglu), "PRAVOUGLI" (ako je riječ o pravouglom trouglu) i "TROUGAO" ako nije među

nabrojanim slučajevima. Poruke se ispisuju na način kako je prikazano u primjerima.

Primjeri

Tastatura (ulaz) 3 3 8

Tastatura (ulaz) 3 5 4

Tastatura (ulaz) 7 2 6

Ekran (izlaz) NIJE TROUGAO

Ekran (izlaz) PRAVOUGLI

Ekran (izlaz) TROUGAO

Page 98: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

93

3. zadatak SAMOGLASNIK

S tastature se učitava jedna riječ (niz velikih i malih slova). Na ekranu treba ispisati

broj samoglasnika u učitanoj riječi i riječ u kojoj su u učitanoj riječi umjesto samoglasnika

koji su napisani malim slovom ispisana slova X, a umjesto samoglasnika koji su napisani

velikim slovom ispisana slova x.

Program snimiti pod imenom SAMOGLASNIK.

Ulazni podaci

Sa tastature se unosi riječ (niz znakova koji ne mora predstavljati riječ koja ima

smisla).

Izlazni podaci

Na ekranu se u prvi red ispisuje broj samoglasnika u učitanoj riječi, a u drugom redu

učitana riječ promijenjena na opisan način.

Primjeri

Tastatura (ulaz) BoSAnsKa

Tastatura (ulaz) edFGUeakXWAa

Tastatura (ulaz) QtZxRVy

Ekran (izlaz) 3 BXSxnsKX

Ekran (izlaz) 6 XdFGxXXkXWxX

Ekran (izlaz) 0 QtZxRVy

Page 99: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

94

7.5. Zadaci 2014

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

18.03.2014.

1. zadatak BRAZIL

Dječak Nermin je učenik prvog razreda devetogodišnje škole i skuplja sličice za

SP2014 u Brazilu. Mama i tata su mu rekli da će mu davati novac za sličice ako on zna

izračunati koliko mu je novca potrebno. Međutim, matematika mu je problem jer još nisu učili

množenje a ni sabiranje brojeva većih od 10. Nermin ima računar ali ne zna programirati.

Zbog toga mu je potrebna tvoja pomoć.

Treba napisati program koji će za uneseni broj paketića sličica i cijenu jednog paketića

izračunati i ispisati na ekran koliko je novaca Nerminu potrebno da obavi tu kupovinu.

Program snimiti pod imenom BRAZIL.

Ulazni podaci

Sa tastature se u jednom redu učitava prirodan broj 3 (1 ≤ 3 ≤ 100kojipredstavljabrojpaketićasličicakojeNerminželikupiti,audrugomreduseučitavaprirodanbrojK1 ≤ K ≤ 100kojipredstavljacijenujednogpaketićasličica.

Izlazni podaci

Na ekranu je potrebno samo ispisati prirodan broj L koji predstavlja ukupan iznos

novca koji je potreban Nerminu da obavi kupovinu.

Primjeri

Tastatura (ulaz) 2 7

Tastatura (ulaz) 50 3

Ekran (izlaz) 14

Ekran (izlaz) 150

Objašnjenje Kako je cijena jednog paketića sličica 7KM, to je Nerminu za kupovinu 2 paketića potrebno 14KM

Objašnjenje Kako je cijena jednog paketića sličica 3KM, to je Nerminu za kupovinu 50 paketića potrebno 150KM.

Page 100: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

95

2. zadatak KUPOVINA

Dječak Nermin će uskoro slaviti rođendan. Poznato mu je da će od drugara dobiti

razne poklone, ali isto tako zna da će od odraslih rođaka, a naročito od dida i majke, dobiti i

novac. Mama i tata su mu rekli da će za taj novac moći kupovati omiljene sličice nogometaša

ako bude znao izračunati koliko najviše paketića može kupiti za dobijeni novac a koliko će

mu ostati kusura. Njegovi problemi s matematikom su ti poznati i zbog toga mu je potrebna

tvoja pomoć..

Treba napisati program koji će za unesenu količinu novca i cijenu jednog paketića

izračunati i ispisati na ekran koliko najviše paketića sličica Nermin može kupiti te koliko će

mu novca nakon toga ostati.

Program snimiti pod imenom KUPOVINA.

Ulazni podaci

S tastature se u jednom redu učitava prirodan broj 3 (1 ≤ 3 ≤ 10000) koji

predstavlja iznos novca koji je Nermin dobio, a u drugom redu se učitava prirodan broj K

(1 ≤ K ≤ 100) koji predstavlja cijenu jednog paketića sličica.

Izlazni podaci

Na ekranu je potrebno samo ispisati u jednom redu broj L koji predstavlja najveći broj

paketića koje Nermin može kupiti za iznos novca kojim raspolaže, a u drugom redu ispisati

broj M koji predstavlja kusur koji će Nerminu ostati nakon što kupi L paketića sličica.

Primjeri

Tastatura (ulaz) 13 5

Tastatura (ulaz) 150 10

Ekran (izlaz) 2 3

Ekran (izlaz) 15 0

Objašnjenje Za 13KM Nermin može kupiti najviše 2 paketića sličica po cijeni od 5KM (2 ∗ 5 = 10) i ostanu mu još 3KM (13 − 10 = 3).

Objašnjenje Za 150KM Nermin može kupiti najviše 215 paketića sličica po cijeni od 10KM (15 ∗ 10 = 150) i ostanu mu još 0KM (150 − 150 = 0).

Page 101: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

96

3. zadatak STEDNJA

Nerminova sestra Amila je učenica šestog razreda i matematika joj nije veliki

problem. Međutim, Amila voli više šetati nego računati. Za razliku od Nermina, Amila ne

kupuje sličice ali voli štedjeti novac. Odlučila je štedjeti i to tako što će prvi dan u kasicu

ubaciti nekoliko konvertibilnih maraka, drugi dan će ubaciti dvostruko više nego prvi dan,

treći dan će ubaciti dvostruko više nego drugi dan i sve tako redom. Npr. ako prvi dan ubaci

4KM, dugi će dan ubaciti 8KM, treći dan 16KM, četvrti 32KM, itd. Amilu interesuje koliko

će novca imati u kasici nakon nekoliko dana. Amila kao ni Nermin ne zna programirati, ali

zato kao i Nermin vjeruje u tvoju pomoć.

Treba napisati program koji će za uneseni iznos konvertibilnih maraka koji je Amila

ubacila u kasicu prvi dan i broj dana koliko će Amila štedjeti, izračunati i na ekran ispisati

iznos novca koji će Amila tada imati ušteđen.

Program snimiti pod imenom STEDNJA.

Ulazni podaci

S tastature se u jednom redu učitava prirodan broj M (1 ≤ M ≤ 1000) koji predstavlja

iznos novca koji je Amila stavila u kasicu prvi dan, a u drugom redu se učitava prirodan broj

3 (1 ≤ 3 ≤ 20) koji predstavlja broj dana koje je Amila stavljala novac u kasicu.

Izlazni podaci

Na ekranu je potrebno samo ispisati prirodan broj O koji predstavlja iznos koji će

Amila imati u kasici nakon 3 dana štednje.

Primjeri

Tastatura (ulaz) 1 10

Tastatura (ulaz) 7 2

Ekran (izlaz) 1023

Ekran (izlaz) 21

Objašnjenje Amila je u kasicu stavljala redom po danima:1, 2, 4, 8, 32, 64, 128, 256, 512KM. Ukupno je stavila: 1 + 2 + 4 + 8 + 16 +32 + 64 + 128 + 256 + 512 = 1023KM

Objašnjenje Amila je u kasicu stavljala prvi dan 7 a drugi dan 14KM pa je ukupno uštedila 7 + 14 =21KM.

Page 102: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

97

7.6. Zadaci 2015

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

17.03.2015.

1. zadatak UNA

Treba napisati program koji će s tastature učitati jedan prirodan broj manji od 15. Ako

je taj broj jednocifren onda treba toliko puta ispisati riječ UNA, a ako je dvocifren, onda riječ

UNA treba ispisati onoliko puta koliko iznosi razlika broja 19 i učitanog broja. Ispis napraviti

u takvom obliku da se prvo napiše redni broj ispisa s tačkom, a zatim riječ UNA. Riječ UNA

svaki put ispisati u novom redu.

Program snimiti pod imenom UNA.

Ulazni podaci

S tastature u jednom redu učitavamo prirodan broj manji od 15.

Izlazni podaci

Na ekranu ispisati redni broj ispisa s tačkom i iza toga riječ UNA. Svaki put u novom

redu.

Primjeri

Tastatura (ulaz) 3

Tastatura (ulaz) 1. UNA 2. UNA 3. UNA

Objašnjenje Broj 3 je jednocifren i ispisujemo 3 puta riječ UNA

Ekran (izlaz) 14

Ekran (izlaz) 1. UNA 2. UNA 3. UNA 4. UNA 5. UNA

Objašnjenje Broj 14 je dvocifren i ispiujemo riječ UNA

19 − 14 = 5puta

Page 103: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

98

2. zadatak DIJELI

Za prirodan broj # kažemo da je djeljiv s prirodnim brojem $ ako postoji prirodan broj

/ takav da je # = / ∙ $.

Treba napisati program koji će za dva prirodna broja učitana s tastature ispitati da li je

prvi djeljiv s drugim. Ukoliko jeste, treba na ekranu ispisati njihov količnik, a ukoliko nije

treba ispisati poruku da nije.

Program snimiti pod imenom DIJELI.

Ulazni podaci

S tastature u prvom redu učitavamo prvi prirodan broj, a u drugom drugi prirodan broj.

Izlazni podaci

Na ekranu se u slučaju da je prvi broj djeljiv s drugim ispisuje njihov količnik, a u

slučaju da nije djeljiv, ispisuje se poruka kao u navedenom primjeru.

Primjeri

Tastatura (ulaz) 100 5

Tastatura (ulaz) 4 8

Tastatura (ulaz) 18 5

Ekran (izlaz) 20

Ekran (izlaz) 4 nije djeljivo s 8

Ekran (izlaz) 18 nije djeljivo s 5

Page 104: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

99

3. zadatak SLOVA

Treba napisati program koji broji (prebrojava) suglasnike u rečenici koja se unosi s

tastature i njihov broj ispisuje na ekran. Složeno slovo LJ se broji kao jedno slovo, ako i slovo

NJ. U primjerima neće biti slova Č, Ć, DŽ, Đ, Š i Ž. Rečenica završava tačkom.

Program snimiti pod imenom SLOVA.

Ulazni podaci

S tastature se u jednom redu učitava prirodan broj 3 (3 ≤ 100) koji predstavlja broj

slova u rečenici, a u drugom redu se učitava rečenica.

Izlazni podaci

Na ekranu se ispisuje broj suglasnika u rečenici.

Primjeri

Tastatura (ulaz) 15 Danas je lijep dan.

Tastatura (ulaz) 25 Djeci je potrebna ljubav i njega.

Ekran (izlaz) 9

Ekran (izlaz) 14

Objašnjenje Suglasnici su: D, N, S, J, L, J, P, D, N i ima ih ukupno 9.

Objašnjenje Suglasnici su: D, J, C, J, P, T, R, B, N, LJ, B, V, NJ, G i ima ih ukupno 14.

Page 105: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

100

7.7. Zadaci 2016

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

17.03.2016.

1. zadatak GODINA

Vremenski period od 100 godina se naziva stoljeće ili vijek. Prvo stoljeće je počelo 1.

januara 1. godine i trajalo je do 31. decembra 100. godine. Drugo stoljeće je počelo 1. januara

101. godine i trajalo je do 31. decembra 200. godine. Trenutno smo u 21. stoljeću, koje je

počelo 1. januara 2001. godine. Treba napisati program koji će za učitanu godinu ispisati

kojem stoljeću pripada ta godina.

Program snimiti pod imenom GODINA.

Ulazni podaci

S tastature u jednom redu učitavamo prirodan broj manji od 2100.

Izlazni podaci

Na ekranu ispisati prirodan broj koji predstavlja traženo stoljeće.

Primjeri

Tastatura (ulaz) 2016

Ekran (izlaz) 21

Objašnjenje 2016. godina je u 21. stoljeću.

Tastatura (ulaz) 2000

Ekran (izlaz) 20

Objašnjenje 2000. godina je u 20. stoljeću.

Tastatura (ulaz) 16

Ekran (izlaz) 1

Objašnjenje 16. godina je u 1. stoljeću.

Page 106: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

101

2. zadatak ZBIR

Treba napisati program koji će za učitani prirodan broj 5 < 3 < 100 napisati na

koliko se on načina može prikazati u obliku 3 = � + � + P, gdje je � < � < P, tj. na koliko

se načina broj 3 može rastaviti na zbir tri različita prirodna broja �, � i P, takva da je � < � <P.

Program snimiti pod imenom ZBIR.

Ulazni podaci

S tastature u prvom redu učitavamo prvi prirodan broj 3 < 100.

Izlazni podaci

Na ekranu se ispisuje prirodan broj koji predstavlja broj mogućih rastava broja 3 na

traženi zbir.

Primjeri

Tastatura (ulaz) 10

Ekran (izlaz) 4

Objašnjenje

10 = 1 + 2 + 710 = 1 + 3 + 610 = 1 + 4 + 510 = 2 + 3 + 5

Tastatura (ulaz) 12

Ekran (izlaz) 7

Objašnjenje

12 = 1 + 2 + 912 = 1 + 3 + 812 = 1 + 4 + 712 = 1 + 5 + 6 12 = 2 + 3 + 7 12 = 2 + 4 + 6 12 = 3 + 4 + 5

Page 107: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

102

3. zadatak ŠETNJA

Djevojčica Amila se nalazi negdje u koordinatnom sistemu (na mjestu s koordinatama

(x,y) ) i kreće u šetnju. Svakim korakom se pomjeri za jedno mjesto i to: L (lijevo – u mjesto

(x-1,y)), D (desno – u mjesto (x+1,y)), V (gore – u mjesto (x,y+1)) ili N (dolje – u mjesto

(x,y-1)). Njena udaljenost od koordinatnog početka je jednaka dužini najkraćeg puta, kojim

Amila može doći do mjesta na kojem se nalazi do koordinatnog početka.

Treba napisati program koji će za učitanu Amilinu početnu poziciju i njen plan šetnje

kao rezultat vratiti poziciju u kojoj se nalazi na kraju, te njene udaljenosti od koordinatnog

početka na početku i na kraju šetnje.

Program snimiti pod imenom SETNJA.

Ulazni podaci

S tastature se u prvom redu učitavaju dva cijela broja x i y (-100<x,y<100), odvojeni

razmakom, koji predstavljaju Amilinu početnu poziciju. U drugom redu se učitava niz koji

predstavlja plan šetnje.

Izlazni podaci

Na ekranu se u prvom redu ispisuje Amilina krajnja pozicija, u drugom redu

udaljenost od koordinatnog početka na početku šetnje, a u trećem redu se ispisuje ta

udaljenost na kraju šetnje. Ispis se vrši u obliku kako je dano u primjeru.

Primjeri

Tastatura (ulaz) -1 -1 NDDDVLVVD

Ekran (izlaz) 2 1 2 3

Objašnjenje Amilin put je bio: (-1,-1), (-1,-2), (0,-2), (1,-2), (2,-2), (2,-1), (1,-1), (1,0), (1,1), (2,1). Udaljenost od tačke (-1,-1) do koordinatnog početka je 2, jer Amili trebaju 2 koraka da pređe taj put, dok je udaljenost tačke (2,1) od koordinatnog početka jednaka 3. Tastatura (ulaz) 3 2 NLLVLLNLNNDN

Ekran (izlaz) -1 -2 5 3

Page 108: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

103

7.8. Zadaci 2017

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

14.03.2017.

1. zadatak BOSNA

Treba napisati program koji će s tastature učitati jedan prirodan broj manji od 20. Ako

je taj broj jednocifren onda treba toliko puta ispisati riječ BOSNA, a ako je dvocifren, onda

riječ BOSNA treba ispisati onoliko puta koliko iznosi razlika broja 25 i učitanog broja. Ispis

napraviti u takvom obliku da se prvo napiše redni broj ispisa s tačkom, a zatim riječ BOSNA

svaki put ispisati u novom redu.

Program snimiti pod imenom BOSNA.

Ulazni podaci

S tastature u jednom redu učitavamo prirodan broj manji od 20.

Izlazni podaci

Na ekranu ispisati ispisati s tačkom i iza toga riječ BOSNA. Svaki put u novom redu.

Primjeri

Tastatura (ulaz) 3

Ekran (izlaz) 1. BOSNA 2. BOSNA 3. BOSNA

Objašnjenje Broj 3 je jednocifren i ispisujemo 3 puta riječ BOSNA.

Tastatura (ulaz) 19

Ekran (izlaz) 1. BOSNA 2. BOSNA 3. BOSNA 4. BOSNA 5. BOSNA 6. BOSNA

Objašnjenje Broj 19 je dvocifren i ispisujemo riječ BOSNA

25 – 19 = 6 puta.

Page 109: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

104

2. zadatak RIJEC

Treba napisati program koji će učitati riječ s tastature i ispisati samo suglasnike iz te

riječi (u poretku kako su i učiati)

Program snimiti pod imenom RIJEC.

Ulazni podaci

S tastature u prvom u jednom redu učitavamo riječ napisanu velikim slovima (ne dužu

od 20 slova).

Izlazni podaci

Na ekranu se vrlikim slovima ispisuju samo suglasnici iz učitane riječi, i to u poretku

kako su i učitani. Ukoliko je učitana riječ sastavljena samo od samoglasnika, na ekranu treba

ispisati riječ BOSNA.

Primjeri

Tastatura (ulaz) USISAVANJE

Tastatura (ulaz) BRK

Tastatura (ulaz) EEOA

Ekran (izlaz) SSVNJ

Ekran (izlaz) BRK

Ekran (izlaz) BOSNA

Page 110: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

105

3. zadatak BROJ

Za prirodan broj kažemo da je savršen ako je jednak sumi svojih pravih djelitelja

(prirodnih brojeva koji ga dijele a manji su od njega). Pravi djelitelji broja 28 su 1, 2, 4, 7, 14.

Kako je broj 28 jednak sumi svojih pravih djelitelja, to je on savršen (28 = 1+2+4+7+14).

Treba napisati program koji će ispisati sve savršene brojeve iz danog intervala.

Program snimiti pod imenom BROJ.

Ulazni podaci

S tastature se u jedom redu učitavaju dva prirodna broja (0<a<b<100000).

Izlazni podaci

Na ekranu se ispisuju svi savršeni brojevi iz intervala [a,b]. Ukoliko u danom intervalu

nema savršenih brojeva, treba ispisati odgovarajuću poruku.

Primjeri

Tastatura (ulaz) 6 51

Ekran (izlaz) 6 28

Objašnjenje Jedini savršeni brojevi iz danog intervala su 6 i 28 (6=1+2+3, 28=1+2+4+7+14).

Tastatura (ulaz) 10 20

Ekran (izlaz) Nema savrsenih brojeva

Objašnjenje U danom intervalu nema savršenih brojeva.

Page 111: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

106

8. ZADACI S KANTONALNIH TAKMIČENJA

8.1. Zadaci 2011

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

10.04. 2011.

1. zadatak SUMACIF

Emir je naučio programirati. Prvi "ozbiljniji" program koji je napisao izračunava sumu

cifara prirodnog dvocifrenog broja koji se unosi putem tastature. Međutim, ukoliko broj koji

se unosi nije dvocifren nastaju problemi.

Pomozi Emiru i napiši program koji će izračunati i prikazati sumu cifara ako se unese

dvocifren broj. Inače će se na ekranu prikazati poruka da broj nije dvocifren.

Program snimiti pod imenom SUMACIF.

Ulazni podaci

Sa tastature učitavamo jedan prirodan broj.

Izlazni podaci

Na ekranu se ispisuje suma njegovih cifara (ako je dvocifren) ili poruka (ako nije

dvocifren).

Primjeri

Tastatura (ulaz) 41

Tastatura (ulaz) 6

Tastatura (ulaz) 142

Ekran (izlaz) 5

Ekran (izlaz) Broj nije dvocifren!

Ekran (izlaz) Broj nije dvocifren!

Page 112: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

107

2. zadatak SLOVAR

Emirova sestra teško izgovara slovo r. On joj je, stoga, odlučio napisati rečenice u

kojima se ovo slovo što više pojavljuje. Pomozi Emiru da napiše program koji će mu izbrojati

koliko puta se slovo r (malo ili veliko) pojavilo u rečenici koju unese putem tastature. One

rečenice s kojima bude zadovoljan Emir će prepisati na papir i zamoliti malu sestru da ih

naglas pročita više puta kako bi izvježbala izgovor

Program snimiti pod imenom SLOVAR.

Ulazni podaci

Sa tastature učitati rečenicu.

Izlazni podaci

Na ekranu se ispisuje poruka o broju pojavljivanja slova r (malo ili veliko) u učitanoj

rečenici.

Primjeri

Tastatura (ulaz) Riba ribi grize rep

Tastatura (ulaz) Irma i Romi idu u prvi razred.

Tastatura (ulaz) Vracaju se rode.

Ekran (izlaz) Broj pojavljivanja: 4

Ekran (izlaz) Broj pojavljivanja: 5

Ekran (izlaz) Broj pojavljivanja: 2

Page 113: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

108

3. zadatak SLIKE

Emir bi trebao slike sa svih ekskurzija sa svoga računara spržiti na CD-ove kako bi ih

podijelio prijateljima iz razreda. Emir ima N slika i one su veličine K megabajta. Svaki CD

ima tačno 700MB prostora.

Pomozi Emiru izračunati koliko najmanje CD-ova mora kupiti svaki od njegovi

prijatelja kako bi na njih mogao snimiti željene slike. Niti jedna slike se ne smije dijelom

snimiti na jedan CD, a dijelom na drugi!

Program snimiti pod imenom SLIKE.

Ulazni podaci

Sa tastature u dva reda učitavamo dva prirodna broja, i to:

- prirodan broj N (1 ≤ 3 ≤ 1000), broj slika koje Emir želi snimiti na CD-ove,

- prirodan broj K (1 ≤ M ≤ 10), veličina slike u MB.

Izlazni podaci

Na ekranu se ispisuje prirodan broj X koji predstavlja najmanji broj CD-ova potreban

Emiru da snimi sve slike.

Primjeri

Tastatura (ulaz) 400 5

Tastatura (ulaz) 100 4

Tastatura (ulaz) 101 7

Ekran (izlaz) 3

Ekran (izlaz) 1

Ekran (izlaz) 2

Objašnjenje Damiru treba prebaciti 400 slika veličine 5MB. Za to mu trebaju 3 CD-a, jer na 3 CD-a stane 700*3=2100MB.

Objašnjenje Almi treba prebaciti 100 slika veličine 4MB. Za to u treba 1 CD, jer na 1 CD stane 700*1=700MB.

Objašnjenje Ivanu treba prebaciti 101 sliku veličine 7MB. Za to mu trebaju 2 CD-a, jer na 2 CD-a stane 700*2=1400MB.

Page 114: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

109

8.2. Zadaci 2012

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

10.05.2012.

1. zadatak TECAJ

Enesova obitelj vrši pripreme za odlazak na more. Enes je dobio određenu svotu

novaca od majke u KM-a (konvertibilne marke). Enes planira sakupiti još novca u KM nakon

završetka školske godine (dobijanja knjižica), a nada se de će dobiti nešto od tetke iz

Njemačke gdje se koriste Euri (Eur). Na odmoru (Hrvatska) se troše isključivo Kune (Kn).

Pomozimo Enesu da napiše program koji pretvara valutu iz KM-a i Eur-a u Kune kako

bi se Enes lakše snašao na moru.

Program snimiti pod imenom TECAJ.

Ulazni podaci

Sa tastature se unosi vrijednost tečaja Kune (Kn) za Eur, tečaja Kune (Kn) za KM.

Zatim se unosi iznos ušteđenih i dobivenih KM i Eura posebno a koje će Enes razmjenjivati

za Kune. Za 1 KM Enes može dobiti 3,75 Kn, a za 1 Eur se može dobiti 7,5 Kn.

Izlazni podaci

Na ekranu se ispisuje sljedeća poruka:

"Za iznos od ___KM i ___Eur Enes može dobiti ____Kuna."

Primjeri

Tastatura (ulaz) 7.5 3.75 100 100

Tastatura (ulaz) 7.5 3.75 75 50

Tastatura (ulaz) 7.5 3.75 150 35

Ekran (izlaz) Za iznos od 100 KM i 100 Eur, Enes može dobiti 1125.00 Kn

Ekran (izlaz) Za iznos od 75 KM i 50 Eur, Enes može dobiti 656.25 Kn

Ekran (izlaz) Za iznos od 150 KM i 35 Eur, Enes može dobiti 825.00 Kn

Page 115: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

110

2. zadatak DJELJIVOST

Potrebno je napisati programski kod za rješenje sljedećeg problema:

Sa tastature se unosi broj, za koji program provjerava da li je djeljiv sa tri. Ukoliko jeste

djeljiv sa 3 program ispisuje poruku: "Ostatak dijeljenja broja ___ sa 3 je 0", a ukoliko nije

program računa prvi manji broj od unešenog broja a koji je djeljiv sa 3 i ispisuje poruku: "Prvi

manji broj od unesenog broja, a djeljiv sa 3 je ____".

Program snimiti pod imenom DJELJIVOST.

Ulazni podaci

Sa tastature se unosi određeni broj a program vrši provjeru uvjeta.

Izlazni podaci

Ukoliko je unešeni broj djeljiv sa 3 program ispisuje poruku:

"Ostatak djeljenja broja ___ sa 3 je 0", a ukoliko nije program traži prvi manji broj od

unesenog a koji je djeljiv sa 3 i ispisuje poruku: "Prvi manji broj od unesenog broja, a koji je

djeljiv sa 3 je __ ".

Primjeri

Tastatura (ulaz) 33

Tastatura (ulaz) 256

Tastatura (ulaz) 4356

Ekran (izlaz) Ostatak djeljenja broja 33 sa 3 je 0.

Ekran (izlaz) Prvi manji broj od unesenog broja, a koji je djeljiv sa 3 je 255.

Ekran (izlaz) Ostatak djeljenja broja 4356 sa 3 je 0.

Page 116: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

111

3. zadatak SAMOGLASNICI

Napisati program koji broji (prebrojava) samoglasnike u unesenoj rečenici i ispisuje

njihov zbir na ekran.

Program snimiti pod imenom SAMOGLASNICI.

Ulazni podaci

Sa tastature učitavamo rečenicu određene dužine (broja riječi).

Izlazni podaci

Na ekranu se ispisuje poruka: "Samoglasnici se u rečenici pojavljuju ___ puta" kao u

navedenom primjeru.

Primjeri

Tastatura (ulaz) Danas je cijeli dan padala jaka kisa.

Tastatura (ulaz) Ovaj zadatak je veoma jednostavan i nadam se da ću ga uspjesno rijesiti.

Tastatura (ulaz) Veceras je premijera mog omiljenog filma u kinu Una.

Ekran (izlaz) Samoglasnici se u rečenici pojavljuju 14 puta!

Ekran (izlaz) Samoglasnici se u rečenici pojavljuju 26 puta!

Ekran (izlaz) Samoglasnici se u rečenici pojavljuju 19 puta!

Page 117: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

112

8.3. Zadaci 2013

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

30.04.2013.

1. zadatak COKOLADA

Hana je vježbala matematiku i naišla je na jedan slatki zadatak. Potrebno je tablu

čokolade oblika pravougaonika podijeliti na manje dijelove koji će biti oblika kvadrata, ali

pod uvjetom da je taj broj kvadrata najmanji moguć.

Program snimiti pod imenom COKOLADA.

Ulazni podaci

Sa tastature u prva dva reda učitavamo dva prirodna broja M i N (1 ≤ M, N ≤ 1000),

gdje je M broj redaka a N broj stupaca čokolade.

Izlazni podaci

Na ekranu treba ispisati najmanji broj kvadrata na koji se čokolada može podijeliti.

Primjeri

Tastatura (ulaz) 3 4

Tastatura (ulaz) 5 5

Ekran (izlaz) 4

Ekran (izlaz) 1

Objašnjenje za prvi primjer

Na slici su dane dvije moguće podjele čokolade od 3 reda i 4 stupca, s tim što je na drugoj

slici prikazana podjela s najmanjim brojem kvadrata.

Page 118: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

113

2. zadatak KAPICA

Tri Amina, Lejla i Emira su u autobusu, da bi sebi putovanje učinile interesantnijim,

igrale igre pogađanja boje kape na njihovim glavama. Svaka od njih na glavi ima kapu crne ili

bijele boje, ali ne zna koje je boje. Međutim, svaka od njih vidi kakve je boje kapa na glavi

drugih dviju. Svaka od njih treba da kaže koliko crnih kapa vidi, te da na osnovu dobijenih

informacija pogodi koje je boje kapa na njenoj glavi.

Treba napisati program koji s tastature učitava koliko crnih kapa vide Amina, Lejla i

Emira, a zatim ispisuje koje su boje kape na njihovim glavama i to tako što za crnu kapu

ispisuje C a za bijelu B.

Program snimiti pod imenom KAPICA.

Ulazni podaci

Sa tastature u prva tri reda učitavamo tri nenegativna broja. U prvom redu je broj crnih

kapa koje vidi Amina, u drugom broj crnih kapa koje vidi Lejla a u trećem redu broj crnih

kapa koje vidi Emira.

Izlazni podaci

Na ekranu treba ispisati u tri reda boju (C ili B) kape koju one imaju na glavi i to u

prvom redu Aminine, u drugom boju Lejline a u trećem redu boju Emirine kape.

Primjeri

Tastatura (ulaz) 2 1 1

Tastatura (ulaz) 0 0 0

Ekran (izlaz) B C C

Ekran (izlaz) B B B

Page 119: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

114

3. zadatak KALADONT

Enes i Lejla igraju igru koja se zove "kaladont". Lejla je bolji igrač, pa je Enes odlučio

samostalno vježbati uz pomoć računara. Igra se sastoji od više partija. Svaka partija počinje

tako što Enes izgovori proizvoljnu riječ. Za svaku sljedeću riječ koju on izgovori mora da

vrijedi da je njenih K početnih slova jednako kao posljednjih K slova prethodno izgovorene

riječi. Ako Enes ne može da smisli riječ koja počinje na odgovarajući način, partija se

završava. Broj izgovorenih riječi tokom jedne partije predstavlja dužinu partije. Potrebno je za

N datih riječi izgovorenih u toku igre odrediti dužinu najduže partije.

Program snimiti pod imenom KALADONT.

Ulazni podaci

Sa tastature se unose dva prirodna broja K i N (1 ≤ N ≤ 1000, 1 ≤ K ≤ 20) koji

predstavljaju riječi i broj slova koja mora da se poklapaju i lista od N izgovorenih riječi.

Izlazni podaci

Na ekranu se ispisuje broj koji predstavlja dužinu najduže partije u igri.

Primjeri

Tastatura (ulaz) 9 2 jabuka kaldont drvo vozilo logor orkan maca carica car

Objašnjenje: Učitava se 9 riječi a zahtijevano je podudaranje u 2 posljednja slova prethodne riječi i 2 početna slova novoizgovorene riječi. U ovoj igri su bile 3 partije: jabuka – kaladont (dužina 2) drvo – vozilo – logor – orkan (dužina 4) maca – carica – car (dužina 3) Vidimo da je druga partija najduža i da je njena dužina 4

Ekran (izlaz) 4

Page 120: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

115

8.4. Zadaci 2014

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

29.04.2014.

1. zadatak SLOVA

Treba napisati program koji broji (prebrojava) suglasnike u rečenici koja se unosi s

tastature i njihov broj ispisuje na ekran. Složeno slovo LJ se broji kao jedno slovo, ako i slovo

NJ. U primjerima neće biti slova Č, Ć, DŽ, Đ, Š i Ž. Rečenica završava tačkom.

Program snimiti pod imenom SLOVA.

Ulazni podaci

S tastature se u jednom redu učitava prirodan broj 3 (3 ≤ 100) koji predstavlja broj

slova u rečenici, a u drugom redu se učitava rečenica.

Izlazni podaci

Na ekranu se ispisuje broj suglasnika u rečenici.

Primjeri

Tastatura (ulaz) 15 Danas je lijep dan.

Tastatura (ulaz) 25 Djeci je potrebna ljubav i njega.

Ekran (izlaz) 9

Ekran (izlaz) 14

Objašnjenje Suglasnici su: D, N, S, J, L, J, P, D, N i ima ih ukupno 9.

Objašnjenje Suglasnici su: D, J, C, J, P, T, R, B, N, LJ, B, V, NJ, G i ima ih ukupno 14.

Page 121: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

116

2. zadatak GRADOVI

Na obali nekog ostrva se nalazi n gradova označenih brojevima od 0 do n – 1. Oko

čitavog ostrva je izgrađen autoput koji prolazi kroz svaki od n gradova. Udaljenost između

gradova su dane u nizu gdje prvi broj predstavlja udaljenost između grada 0 i 1, drugi broj

predstavlja udaljenost između gradova 1 i 2, i tako redom, dok zadnji broj predstavlja

udaljenost između grada n-1 i 0.

Treba napisati program koji će za svaki grad odrediti najkraće udaljenosti od svih

ostalih gradova.

Program snimiti pod imenom GRADOVI.

Ulazni podaci

S tastature u prvom redu učitavamo broj gradova (prirodan broj n), a u drugom redu

učitavamo niz realnih brojeva koji predstavljaju udaljenosti između gradova.

Izlazni podaci

Na ekranu se za svaki grad ispisuje najkraće udaljenosti između tog grada i ostalih

gradova.

Primjeri

Tastatura (ulaz) 3 2.3 3.4 0.9

Tastatura (ulaz) 4 2.9 2.1 0.8 4.7

Ekran (izlaz) Udaljenost izmedju gradova 0 i 1 je 2.3 Udaljenost izmedju gradova 0 i 2 je 0.9 Udaljenost izmedju gradova 1 i 0 je 2.3 Udaljenost izmedju gradova 1 i 2 je 3.2 Udaljenost izmedju gradova 2 i 0 je 0.9 Udaljenost izmedju gradova 2 i 1 je 3.2 Slika za objašnjenje

Ekran (izlaz) Udaljenost izmedju gradova 0 i 1 je 2.9 Udaljenost izmedju gradova 0 i 2 je 5.5 Udaljenost izmedju gradova 0 i 3 je 4.7 Udaljenost izmedju gradova 1 i 0 je 2.9 Udaljenost izmedju gradova 1 i 2 je 2.6 Udaljenost izmedju gradova 1 i 3 je 3.4 Udaljenost izmedju gradova 2 i 0 je 5.5 Udaljenost izmedju gradova 2 i 1 je 2.6 Udaljenost izmedju gradova 2 i 2 je 0.8

Page 122: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

117

Udaljenost izmedju gradova 3 i 0 je 4.7 Udaljenost izmedju gradova 3 i 1 je 3.4 Udaljenost izmedju gradova 3 i 2 je 0.8 Slika za objašnjenje

Page 123: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

118

3. zadatak PROSTI

Za prirodan broj 3, veći od 1, kažemo da je prost ako ne postoji prirodan broj S

1 < S < 3 koji ga dijeli. Treba napisati program koji ispisuje koliko ima prostih brojeva

među prvih N prirodnih brojeva.

Program snimiti pod imenom PROSTI.

Ulazni podaci

S tastature se učitava prirodan broj 3 (3 ≤ 10000).

Izlazni podaci

Na ekranu se ispisuje broj prostih brojeva koji su manji ili jednaki od 3. Ako takvih

brojeva nema, ispisati poruku NEMA IH.

Primjeri

Tastatura (ulaz) 1

Tastatura (ulaz) 20

Ekran (izlaz) NEMA IH

Ekran (izlaz) 8

Objašnjenje Ne postoje prosti brojevi manji ili jednaki od 1. ukupno 9.

Objašnjenje To su brojevi: 2, 3, 5, 7, 11, 13, 17 i 19, i ima ih ukupno 8.

Page 124: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

119

8.5. Zadaci 2015

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

16.04.2015.

1. zadatak ŠETNJA

Djevojčica Amila se nalazi negdje u koordinatnom sistemu (na mjestu s koordinatama

(x,y) ) i kreće u šetnju. Svakim korakom se pomjeri za jedno mjesto i to: L (lijevo – u mjesto

(x-1,y)), D (desno – u mjesto (x+1,y)), V (gore – u mjesto (x,y+1)) ili N (dolje – u mjesto

(x,y-1)). Njena udaljenost od koordinatnog početka je jednaka dužini najkraćeg puta, kojim

Amila može doći do mjesta na kojem se nalazi do koordinatnog početka.

Treba napisati program koji će za učitanu Amilinu početnu poziciju i njen plan šetnje

kao rezultat vratiti poziciju u kojoj se nalazi na kraju, te njene udaljenosti od koordinatnog

početka na početku i na kraju šetnje.

Program snimiti pod imenom SETNJA.

Ulazni podaci

S tastature se u prvom redu učitavaju dva cijela broja x i y (-100<x,y<100), odvojeni

razmakom, koji predstavljaju Amilinu početnu poziciju. U drugom redu se učitava niz koji

predstavlja plan šetnje.

Izlazni podaci

Na ekranu se u prvom redu ispisuje Amilina krajnja pozicija, u drugom redu

udaljenost od koordinatnog početka na početku šetnje, a u trećem redu se ispisuje ta

udaljenost na kraju šetnje. Ispis se vrši u obliku kako je dano u primjeru.

Primjeri

Tastatura (ulaz) -1 -1 NDDDVLVVD

Ekran (izlaz) 2 1 2 3

Objašnjenje Amilin put je bio: (-1,-1), (-1,-2), (0,-2), (1,-2), (2,-2), (2,-1), (1,-1), (1,0), (1,1), (2,1). Udaljenost od tačke (-1,-1) do koordinatnog početka je 2, jer Amili trebaju 2 koraka da pređe taj put, dok je udaljenost tačke (2,1) od koordinatnog početka jednaka 3.

Page 125: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

120

2. zadatak TEŽINA

Neka je N1 proizvod cifara učitanog broja N>9, N2 proizvod cifara broja N1, N3

proizvod cifara broja N2 itd. Najmanji prirodan broj k za koji vrijedi da je broj Nk jednocifren

broj naziva se "težina" broja N.

Treba napisati program koji za prirodan broj N>9, koji se učitava s tastature, na ekran

ispisuje njegovu "težinu".

Program snimiti pod imenom TEZINA.

Ulazni podaci

S tastature se učitava prirodan broj veći od 9.

Izlazni podaci

Na ekranu se ispisuje težina učitanog broja.

Primjeri

Tastatura (ulaz) 1967

Ekran (izlaz) 5

Objašnjenje 3 = 19673T = 1�9�6�7 = 3783 = 3�7�8 = 1683U = 1�6�8 = 483V = 3�2 = 6

Tastatura (ulaz) 345

Ekran (izlaz) 2

Objašnjenje 3 = 3453T = 3�4�5 = 603 = 6�0 = 0

Page 126: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

121

3. zadatak RUKOMET

Na rukometnom kvalifikacionom turniru za završno prvenstvo je učestvovalo 8 ekipa.

Odigrane su 4 utakmice i to ekipa E1 protiv ekipe E2, ekipa E3 protiv ekipe E4, ekipa E5

protiv ekipe E6 i ekipa E7 protiv ekipe E8. U svim utakmicama je poznat pobjednik. Sve

ekipe su postigle različit broj golova. Sveukupni pobjednik kvalifikacija je ekipa koja je

postigla najveći broj golova. Na završno prvenstvo se plasirala i ekipa koja je izgubila

najmanjom razlikom. Ako postoji više ekipa koje su izgubile istom (najmanjom) razlikom,

onda se od njih na završno prvenstvo kvalificira ona ekipa koja je postigla više golova.

Treba napisati program koji će za učitane rezultate utakmica ispisati ime pobjednika

kvalifikacija i poraženu ekipu koja se kvalificirala na završno prvenstvo.

Program snimiti pod imenom RUKOMET.

Ulazni podaci

S tastature se u osam redova učitava 8 različitih prirodnih brojeva, manjih od 100, koji

predstavljaju broj postignutih golova ekipa E1, E2, E3, E4, E5, E6, E7 i E8, redom.

Izlazni podaci

Na ekranu se u jednom redu ispisuje sveukupni pobjednik a u drugom redu poražena

ekipa koja se kvalificirala. Ispis se vrši u obliku kao što je u primjeru.

Primjeri

Tastatura (ulaz) 35 27 31 33 42 39 36 34

Tastatura (ulaz) Sveukupni pobjednik je ekipa E5. plasman je ostvarila i ekipa E8.

Objašnjenje Najviše golova je postigla ekipa E5 (42) i ona je sve ukupni pobjednik. S najmanjom razlikom

(2) su izgubile ekipe E33 i E8. Kako je ekipa E3 postigla 31 a ekipa E8 34 gola, to se dalje plasirala ekipa E8.

Page 127: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

122

8.6. Zadaci 2016

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

14.04.2016.

1. zadatak BROJ

Za prirodan broj kažemo da je savršen ako je jednak sumi svojih pravih djelitelja

(prirodnih brojeva koji ga dijele a manji su od njega). Pravi djelitelji broja 28 su 1, 2, 4, 7, 14.

Kako je broj 28 jednak sumi svojih pravih djelitelja, to je on savršen (28=1+2+4+7+14).

Treba napisati program koji će ispisati sve savršene brojeve iz danog intervala.

Program snimiti pod imenom BROJ.

Ulazni podaci

S tastature se u jednom redu učitavaju dva prirodna broja (0 < # < $ < 100000)

manja od 100000 koji su razdvojeni razmakom.

Izlazni podaci

Na ekranu se ispisuju svi savršeni brojevi iz danog intervala. Ukoliko u danom

intervalu nema savršenih brojeva, treba ispisati odgovarajuću poruku.

Primjeri

Tastatura (ulaz)

6 51

Ekran (izlaz)

6

28

Objašnjenje

Jedini savršeni brojevi iz danog intervala

su 6 i 28 (6 = 1+2+3, 28=1+2+4+7+14).

Tastatura (ulaz)

10 20

Ekran (izlaz)

Nema savršenih brojeva.

Objašnjenje

U danom intervalu nema savršenih

brojeva.

Page 128: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

123

2. zadatak LINIJA

Amila je na papiru (u pravouglom koordinatnom sistemu) nacrtala 3 duži koje su

paralelne s osom x, a zatim je taj papir dala svom bratu Benjaminu da prebroji nacrtane duži.

Kako se neke od nacrtanih duži "preklapaju" (potpuno ili djelimično), Benjamin ne može

primijetiti da su to različite duži, već će ih u tom slučaju posmatrati kao jednu duž. Duži se

"preklapaju" ako imaju bar jednu zajedničku tačku.

Benjamin treba da odredi dužinu najduže uočene duži.

Treba napisati program koji će za učitane duži ispisati dužinu najduže duži koju „na

slici“ vidi Benjamin.

Napomena: duži koje leže na osi � Benjamin ne može vidjeti, jer su „preklopljene“ s

osom x.

Program snimiti pod imenom LINIJA.

Ulazni podaci

S tastature se u prvom redu učitava prirodan broj 3 (0 < 3 < 100) koji predstavlja

broj duži koje je Amila nacrtala. Zatim se u 3 sljedećih redova učitavaju po 3 cijela broja WX, YZX, Y2X – 1000 < WX, YZX, Y2X < 1000), koji su razdvojeni praznim mjestom, gdje

YZX, WXiY2X, WX predstavljaju pravougle koordinate krajeva X–te duži koju je Amila

nacrtala.

Izlazni podaci

Na ekranu se u jednom redu ispisuje broj koji predstavlja dužinu najduže duži koju

vidi Benjamin.

Primjeri

Tastatura (ulaz)

8

–2 3 12

2 7 8

2 1 5

4 –3 –1

2 4 10 0 –2 16

4 2 10

2 10 12

Ekran (izlaz)

11

Objašnjenje

Kada se nacrtaju sve dane duži,

onda je najduža vidljiva duž ona čiji

su krajevi tačke s pravouglim

koordinatama (1,2) i (12,2), a njena

dužina iznosi 11. Ta duž je nastala

„preklapanjem“ druge, treće, pete i

osme učitane duži.

Page 129: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

124

3. zadatak SPIRALA

Napisati program koji za uneseni prirodan broj 3 s tastature ispisuje na ekran

kvadratnu tablicu dimenzija 3 × 3 čiji su elementi niz prirodnih brojeva 1, 2, 3, . . . , 3 koji su

razmješteni u spiralnom redoslijedu u matrici u smjeru kazaljke na satu, počev od gornjeg

lijevog polja.

Program snimiti pod imenom SPIRALA.

Ulazni podaci

S tastature se učitava prirodan broj 30 < 3 < 11.

Izlazni podaci

Na ekranu se ispisuje tražena tablica.

Primjeri

Tastatura (ulaz)

1

Tastatura (ulaz)

2

Tastatura (ulaz)

4

Ekran (izlaz)

1

Ekran (izlaz)

1 2

4 3

Ekran (izlaz)

1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7

Page 130: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

125

8.7. Zadaci 2017

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

04.04.2017.

1. zadatak BROJ

Treba napisati program koji će s tastature učitati niz malih i velikih slova engleskog

alfabeta (bez razmaka). Taj niz slova treba izmijeniti na način da se umjesto učitanog malog

slova na ekran ispisuje veliko „isto takvo slovo“, i obrnuto, da se umjesto učitanog malog

slova na ekran ispisuje malo „isto takvo slovo“.

Program snimiti pod imenom SLOVO.

Ulazni podaci

S tastature u jednom redu učitavamo niz slova engleskog alfabeta (ne duži od 20

slova).

Izlazni podaci

Na ekranu se u jednom redu ispisuju „učitana slova“ s iumijenjenom „veličinom“ u

poretku kako su i učitani.

Primjeri

Tastatura (ulaz)

bOSnA

Tastatura (ulaz)

CAZIN

Tastatura (ulaz)

xTAwqGhj

Ekran (izlaz)

BosNA

Ekran (izlaz)

cazin

Ekran (izlaz)

XtaWQgHJ

Page 131: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

126

2. zadatak FAKTOR

Svaki složen prirodan broj se može napisati u obliku proizvoda dva ili više prostih

brojeva. Ti prosti brojevi mogu biti jednaki ili različiti (16 = 2 ∙ 2 ∙ 2 ∙ 2, 6 = 2 ∙ 3, 84 = 2 ∙2 ∙ 3 ∙ 7).

Treba napisati program koji će s tastature učitati prirodan broj veći od 1 i na ekran

ispisati sve njegove proste faktore (ako ima jednakih onda će ih ispisati onoliko puta koliko se

puta oni pojavljuju u njegovom rastavu na proizvod prostih faktora). Ako je broj prost, onda

se ispisuje poruka da je broj prost.

Program snimiti pod imenom FAKTOR.

Ulazni podaci

S tastature se učitava prirodan broj N takav da je 1 < 3 < 20000.

Izlazni podaci

Na ekranu se ispisuju prosti faktori broja N i to u svakom redu po jedan broj. Ako je

broj prost onda samo ispisati odgovarajuću poruku.

Primjeri

Tastatura (ulaz)

81

Ekran (izlaz)

3 3 3 3

Objašnjenje

81 = 3 ∙ 3 ∙ 3 ∙ 3

Tastatura (ulaz)

490

Ekran (izlaz)

2 5 7 7

Objašnjenje

490 = 2 ∙ 5 ∙ 7 ∙ 7

Tastatura (ulaz)

13

Ekran (izlaz)

Broj 13 je prost broj.

Objašnjenje

Broj 13 je prost broj i ne

može se rastaviti na

proizvod dva ili više prostih

brojeva.

Page 132: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

127

3. zadatak CRTA

Amila je na papiru (u pravouglom koordinatnom sistemu) nacrtala N duži koje su

paralelne s osom x, a zatim je taj papir dala svojoj sestri Dariji da prebroji nacrtane duži. Kako

se neke od nacrtanih duži „preklapaju“ (potpuno ili djelomično), Darja ne može primjetiti da

su to različite duži, već će ih u tom slučaju posmatrati kao jednu duž. Duži se „preklapaju“

ako imju bar jednu zajedničku tačku. Darija treba da odredi dužinu najduže uočene duži.

Napomena: duži koje leže na osi x Darija ne može vidjeti, jer su „preklopljene“ s osom x.

Treba napisati program koji će za učitane duži ispisati dužinu najduže duži koju „na

slici“ vidi Darija.

Program snimiti pod imenom CRTA.

Ulazni podaci

S tastature se u prvom redu učitava prirodan broj 30 < 3 < 100 koji predstavlja

broj duži koje je Amila nacrtala. Zatim se u N sljedećih redova učitavaju po 3 cijela broja Yi,

YAi, XBi −1000 < WX, YZX, Y2X < 1000, koji su razdvojeni praznim mjestom, gdje

YZX, WX i Y2X, WX predstavljaju pravougle koordinate krajeva i-te duži koju je Amila

nacrtala.

Izlazni podaci

Na ekranu se u jednom redu ispisuje broj koji predstavlja dužinu najduže duži koju

vidi Darija.

Primjeri

Tastatura

(ulaz)

8

-2 3 12

2 7 8

2 1 5

4 -3 -1

2 4 10

0 -2 16

4 2 10

2 10 12

Ekran

(izlaz)

11

Objašnjenje

Kada se nacrtaju sve dane duži, onda najduža vidljiva duž je ona čiji

su krajevi tačke s pravouglim koordinatama (1,2) i (12,2), a njena

dužina iznosi 11. Ta duž je nastala „preklapanjem“ druge, treće, pete

i osme učitane duži.

Page 133: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

128

9. TEORETSKI ZADACI S OPĆINSKIH TAKMIČENJA

9.1. Zadaci 2010

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

29.04.2010.

Teorija

1. Računar može raditi 24 sata bez prekida. DA NE

2. Spoji par:

Tipka DELETE �

Tipka BACKSPACE �

� Briše znak desno od kursora

� Briše znak lijevo od kursora

3. Jedan bajt ima _________ bita, a jedan kilobajt ima _________________ bajta.

4. Zaokruži pet programskih jezika:

1. C

2. PASCAL

3. NEWTON

4. FORTRAN

5. SQL

6. MS DOS

7. COBOL

8. WINDOWS

5. Razvrstaj na ulazne i izlazne jedinice: tastatura, miš, štampač, džojstik, skener.

Ulazne:___________________________________________________________

Izlazne: ___________________________________________________________

6. Povezati kojoj naredbi programskog jezika BASIC odgovara koji opis djelovanja:

INPUT � � završetak programa

REM � � naredba izlaza

PRINT � � naredba grananja

END � � naredba ulaza

IF THEN � � komentar

7. Niz koraka koji jasno i određeno vode ka rješenju nekog problema (ukoliko rješenje

postoji), odnosno daju odgovor da problem nema rješenja (ako rješenje ne postoji, ne

može se dobiti odgovarajućom tačnošću ili u predviđenom vremenu) naziva se

_______________________.

8. S koje strane znaka @ se u nekoj e-mail adresi nalazi e-mail provider?

A: lijeve B: desne C: obe D: ništa od navedenog

9. Koju biste ikonu koristili da kopirate format jedne riječi na drugu?

A: B: C: D:

10. Pritisak na koju ikonu poništava izvršenu komandu?

Page 134: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

129

A: B: C: D:

11. Vodoravna orijentacija papira je:

A: Portrait B: Laid C: Vertical D: Landscape

12. Formule u Excelu počinju znakom:

A: = B: % C: # D: zavisi od formule

13. Koji od odgovora radi u Excelu isto što i =SUM(A1:A2)?

A: =A1+B2 B: =A1+A2 C: =sin(A1/B2) D: =A1+A2+B1+B2

14. Kolone u Excelu su označene:

A: 1,2,3,.... B: A1,A2,A3,... C: A,B,C,... D: I,II,III,...

15. Binarni zapis broja 753 je __________________________________.

9.2. Zadaci 2011

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

24.04.2011.

1. Softver je materijalni dio računara. (Može se opipati rukom) DA NE

2. Tipka Shift služi za _______________________________________________________.

Tipka CapsLock služi za ___________________________________________________.

3. Jedan megabajt ima ______________ bajta, a jedan gigabajt ima __________megabajta.

4. Zaokruži naredbe koje se koriste u programskom jeziku BASIC:

1. CLS 2. READ 3. INPUT 4. WRITE

5. RENAME 6. IF..THEN 7. CLR 8. FOR

5. Šta je šta? Popuni kvadrate odgovarajućim slovom. (A-ulazna jedinica, B-izlazna jedinica)

� štampač

� skener

� zvučnik

� web kamera

6. Navedi 4 programska jezika za koje si čuo.

_____________ ____________ ____________ __________

7. Decimalni zapis binarnog broja 10111 jeste _______________.

8. Za ispis na štampaču tekuće stranice našeg dokumenta koji ima 12 stranica koristit ćemo

Page 135: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

130

A: naredbu Print iz izbornika B: pritisak na ikonu

9. Pritisak na koju ikonu sprema naš dokument?

A: B: C: D:

10. Vertikalna orijentacija papira je:

A: Portrait B: Laid C: Vertical D: Landscape

11. MS Excel je sastavni dio:

A: MS Windows B: MS Office C: Ne pripada niti jednom

12. Ćelije u Excelu su označene:

A: 1,2,3... B: A1,A2,A3,.... C: A,B,C,... D: I,II,III,....

13. Obrada podataka u računaru vrši se:

A: u memoriji B: u procesoru C: u tastaturi D: na monitoru

14. Binarni zapis broja 53 je ____________________________________.

15. Zadnja verzija operativnog sistema Windows jeste:

A: Windows Phone 7 B: Windows 7 C: Windows 2007 D: Windows 2011

9.3. Zadaci 2012

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

27.03.2012.

Na sljedeća pitanja se odgovara tako da se upiše slovo koje se nalazi ispred tačnog odgovora

na za to predviđeno mjesto (crtu):

r/b Pitanje: bodovi mogući ostvareni

1.

Koji rezultat će se prikazati prilikom pokretanja formule u ćeliji C8 (kada pritisnemo tipku ENTER)?

2

Odgovor: _______

Page 136: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

131

2.

Predstavite broj 44 u binarnom obliku:

2

Odgovor: _____________

3. Ako je brzina prenosa podataka preko ADSL linka 4 Mb/ps, za koliko vremena će se teoretski "download-ati" datoteka veličine 500 MB?

2

Odgovor: _____________

4.

Kojem od pobrojanih operativnih sistema nije mjesto u skupini:

a) Windows 7 b) Windows XP c) Windows Mobile d) d) Windows 2000

2

Odgovor: _____________

5.

Koji izraz je tačno napisan i predstavlja sljedeću formulu:

$ +# − ( + 0

.�S

a) b+a-(c+0)/((p*y)/d) b) b+(a-(c+0)/p*y)/d c) b+(a-(c+0)/(p*y))/d d) d) b+(a-c+0/(p*y))/d

2

Odgovor: _____________

6.

Softverska licenca je:

a) Pravo na korištenje određenog softvera (programa) b) CD na kojem dobijamo isporučen softver c) Vrsta softvera d) d) Oblik distribucije softvera

2

Odgovor: _____________

7.

Umetanje matematičkih izraza u MS Word se vrši pokretanjem slijeda naredbi:

a) Insert�Object�Microsoft Equattion 3.0 b) View�Object�Microsoft Equattion 3.0 c) Object�Microsoft Equattion 3.0 d) Ni na jedan od ponuđenih načina

2

Odgovor: _____________

Page 137: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

132

8.

Koja vrijednost će biti u ćeliji C1 kao rezultat obrade operacije na slici, pritiskom na tipku ENTER

a) 450 b) 45 c) 4500 d) 30

2

Odgovor: _____________

9.

Koji od navedenih nisu ulazno/izlazni uređaji:

a) Skener b) Ekran osjetljiv na dodir (touch.screen) c) Modem d) Mikrofon

2

Odgovor: _____________

10.

Korisnik je otvorio dokument u MS Wordu koji se zove "kontrolni", na istom izvršio određene promjene, pritisnuo CTRL+S, zatim CTRL+P a nakon toga ALT+F? Upišite odgovor što se tada dogodilo?

2

Odgovor: _____________

11.

Koja od ponuđenih nije naredba PASCAL-a?

a) PRIVATE b) WRITELN c) READLN d) BEGIN

2

Odgovor: _____________

12.

http://www.pzusk.ba/index.php?option=com_content&view=category&id=35

U sljedećem linku riječi "pzusk.ba" predstavljaju:

a) Ime dokumenta i oznaku države b) Naziv domene i oznaku države c) Ime dokumenta i naziv domene d) E-mail adresu domene

2

Odgovor: _____________

13.

Algoritam je:

a) Niz koraka koji vode ka rješenju nekog problema b) Određen i beskonačan broj koraka koji jasno vode

ka rješenju nekog problema

2

Page 138: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

133

c) Određen i konačan broj koraka koji jasno vode ka rješenju nekog problema (ukoliko rješenje postoji)

d) Neodređen i beskonačan broj koraka koji vode ka rješenju nekog problema.

Odgovor: _____________

14.

Kada u Excel-u koristimo komandu COPY na ćeliji u kojoj se nalazi formula, koju od ponuđenih PASTE OPTION ćemo koristiti da zalijepimo vrijednost formule, a ne formulu:

a)

b)

c)

d)

2

Odgovor: _____________

15.

Kada u Wordu želimo da isprintamo samo određene stranice koristit ćemo:

a) CTRL+S b) CTRL+P

c) Ikonu štampača d) CTRL+C

2

Odgovor: _____________

9.4. Zadaci 2013

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

19.03.2013.

U zadacima 1-10 treba zaokružiti slovo ispred tačnog odgovora.

1. Softverska licenca je

A. Microsoft Office

B. Vrsta softvera

C. Pravo na korištenje određenog softvera

D. CD koji dobijemo uz računar

Page 139: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

134

2. Programski jezik nije

A. PASCAL

B. NEWTON

C. COBOL

D. JAVA

3. Najmanja adresabilna tačka na ekranu se naziva

A. Pixel

B. Minijatura

C. Ekranska tačkica

D. Point

4. Ikona u Microsoft Word-u

A. Otvara još jedan postojeći dokument

B. Otvara još jedan prazan dokument

C. Dijeli ekran na dva dijela

D. Kopira selektirani dio na clipboard

5. Koji nivo nije nijedan od tri nivoa komunikacijskog procesa

A. Tehnološki

B. Semantički

C. Hardverski

D. Efektivni

6. Koji broj nije napisan u heksadecimalnom brojnom sistemu

A. BABE

B. BEBE

C. NANE

D. 1234

7. Osnovni dijelovi centralne procesorske jedinice su

A. Procesor i memorija

B. Procesor i hladnjak

C. Procesor i printer

D. Procesor i softver

8. Prva definicija informatike potiče od

A. Francuske akademije nauka

B. Apple-a

Page 140: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

135

C. NASA-e i CIA-e

D. Američkog informatičkog društva

9. Dio centralne jedinice gdje se vrši obrada podataka se naziva

A. Procesor

B. Aritmetičko-logička jedinica

C. Podatkovno-obrađivački filter

D. Kompjuter

10. Koju kombinaciju treba pritisnuti za softversko resetiranje računara

A. Ctrl+AltGr+Del

B. Ctrl+AltGr+F1

C. Ctrl+Alt+Del

D. Ctrl+Alt+F1

U zadacima 11-15 treba uraditi traženo.

11. Broj 2013 iz dekadnog brojnog sistema zapisati u binarnom: _______________________.

12. Nakon izvršenja naredbi, A i B će imati sljedeće vrijednosti: A=_______, B=________.

A=2

B=3

A=A+B

A=A+A

IF B>A THEN A=100

B=A+B

13. Ako u Microsoft Excel ćelijama imamo sljedeće zapise:

A1: 10 A2: 15 A3: 20 A4: 25 A5: =SUM(A2:A4)

Nakon što u ćeliju A6 upišemo =COUNT(A1:A5) i pritisnemo tipku ENTER, koji će

sadržaj biti ispisan na ekran u ćeliji A6?

U ćeliji A6 će biti ispisano _______________.

14. Ako imamo 3 memorijske jedinice CD1, CD2 i CD3 sa sljedećim memorijskim

kapacitetima:

CD1 – 1010MB CD2 – 1GB CD3 – 1031031KB

Poredati ih po veličini od najvećeg do najmanjeg:________________________________.

15. Broj 2706 iz oktalnog brojnog sistema zapisati u dekadnom: _______________________.

Page 141: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

136

9.5. Zadaci 2014

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

19.03.2014.

U zadacima 1-5 zaokruži jedan tačan odgovor (DA ili NE)!

1. Hardver i softver zajedno čine računarski sistem. DA NE

2. Laptop je najnovija vrsta laserskog štampača. DA NE

3. Memorija koja se nalazi izvan računara naziva se periferna memorija. DA NE

4. Sva obrada podataka se vrši u memoriji. DA NE

5. Komuniciranje putem interneta je najskuplji vid komunikacije. DA NE

U zadacima 6 – 10 zaokruži samo jedan tačan odgovor (A, B ili C)!

6. Komanda CLS u DOS-u

A. briše ekran B. zatvara prozor C. gasi računar

7. Za izvršenje softverskog reseta računara, kombinaciju tipki Ctrl+Alt+Del je potrebno

uzastopno pritisnuti

A. 1 put B. 2 puta C. 3 puta

8. Ulazna jedinica nije

A. miš B. Štampač C. Tastatura

9. Za crtanje kružnice i kvadrata u Windows aplikaciji Paint, na tastaturi je potrebno držati

stisnutu tipki

A. Ctrl B. Alt C. Shift

10. Neizostavni znak u svakoj adresi elektronske pošte je

A. % B. & C. @

11. Zaokruži 5 programskih jezika

1. C+ 2. PASCAL 3. NEWTON 4. FORTRAN

5. JAVA 6. WORD 7. COBOL 8. WINDOWS

12. Poveži kojoj naredbi programskog jezika BASIC odgovara koji opis djelovanja!

INPUT � � završetak programa REM � � naredba izlaza PRINT � � naredba grananja END � � naredba ulaza IF .. THEN � � komentar

U zadacima 14 – 18 dopuni rečenice!

13. Softver se dijeli na _____________________ i ______________________________.

14. Jedan bajt je kombinacija __________ memorijskih ćelija.

Page 142: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

137

15. 1MB = ___________ bajta.

16. Najmanja adresabilna tačka na ekranu se naziva ________________________________.

17. Memorija iz koje se podaci mogu uzimati samo radi čitanja je ___________ memorija.

18. Programi koji nemaju nikakvu drugu svrhu osim da nanesu štetu na računaru nazivaju se

računarski ________________________.

19. Pretvori broj 8395 iz dekadnog brojnog sistema u binarni!

20. Ako promjenjive M i N imaju vrijednost M = 10 i N = 20, odredite koje će vrijednosti

promjenjive K i L imati nakon izvršenja sljedećih naredbi

IF ((M < 15) AND (N < 15)) THEN K = N + M ELSE K = N – M

IF ((M > 15) OR (N > 15)) THEN L = N * M ELSE L = N – M

K = _________; L = _________;

9.6. Zadaci 2015

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

19.03.2015.

U zadacima 1 – 5 zaokruži jedan tačan odgovor (DA ili NE)!

1. Virtualna memorija je brža od radne memorije. DA NE

2. Firewall je antivirusni program u sklopu Microsoft Windowsa. DA NE

3. Neizostavni dio u svakoj adresi elektronske pošte je WWW. DA NE

4. Facebook je stariji od Twitera. DA NE

5. Bajt je niz od 10 bitova. DA NE

U zadacima 6 – 10 zaokruži samo jedan tačan odgovor (A, B ili C)!

6. Najveća cifra u oktalnom brojnom sistemu je

A. 5 B. 7 C. 11

7. Ako za zapis cijelog broja pomoću predznaka i apsolutne vrijednosti koristimo 8

bitova, tada je najveći brij koji meožemo zapisati jednak

A. 127 B. 128 C. 256

8. Ulazna jednica nije

A. miš B. štampač C. tastatura

9. Obostrano poravnanje teksta u Microsoft Wordu se naziva

A. Overwrite B. Twoside C. Justify

10. Linux je

Page 143: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

138

A. Operativni sistem B. Društvena mreža C. Antivirusni program

11. Neka u Excelovoj tablici imamo sljedeću situaciju

A B C D E F G H I 1 2 1 3 2 0 1 0 3

Ako u ćeliju I1 naredbu = COUNTIF (A1 : G1; ">2") onda će u toj ćeliji, nakon

izvršenja naredbe, biti ispisana vrijednost _____________.

12. U Microsoft Wordu imamo sljedeću situaciju:

Danas je bio lijep dan.¶ Putovali smo na more. ¶ Kada smo došli na more, mama i tata su raspakovaki stvari a ja sam otišla na plažu.¶

Šta je autor teksta napravio na mjestima gdje se pojavljuje znak ¶?________________

_____________________________________________________________________

13. U oktalnom brojnom sistemu izračunati 1703 + 2015 + 4334.

14. Pretvoriti broj 17032015 iz dekadnog u heksadecimalni brojni sistem.

15. Zadane su sljedeće vrijednosti i algoritam

K(1) K(2) K(3) K(4) K(5) K(6) K(7) B 1 0 0 1 0 1 1 5

A = 0

za J = 1, 2, 3, 4, 5, 6, 7 radi

A = 2A

ako je K(J) = 1 tada je A = A + B

Nakon što se izvrše dane naredbe, A ima vrijednost _______________________.

9.7. Zadaci 2016

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

17.03.2016.

U zadacima 1-5 zaokruži jedan tačan odgovor (DA ili NE)!

1. Jednim bitom se može prikazati 8 podataka. DA NE

2. Prvi mikroprocesor poznat je pod nazivom ENIAC. DA NE

3. Neizostavni dio u svakoj adresi elektronske pošte je www. DA NE

4. HTML je simbolički jezik. DA NE

5. Mikrofon je vanjska memorija. DA NE

Page 144: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

139

U zadacima 6 – 10 zaokruži samo jedan tačan odgovor (A, B ili C)!

6. Najveća cifra u oktalnom brojnom sistemu je

A. 9 B. 10 C. 11

7. Nastavak za programsku datoteku je

A. .doc B. .xml C. .com

8. U koju memoriju se ne mogu dodavati podaci

A. USB B. RAM C. ROM

9. 1TB je jednak

A. 9999999KB B. 1048576 MB C. 1000GB

10. Kako se naziva program koji se prilikom uključivanja računara prvi učitava u radnu

memoriju računara?

A. Operativni sistem B. Facebook C. Mozilla Firefox

11. Neka u Excelovoj tablici imamo sljedeću situaciju

A B C D E F G H 15 12 -12 -9 14 -12 31 -11

Ako u ćeliju H15 ukucamo naredbu = SUM (B15:E15) onda će u toj ćeliji, nakon

izvršenja naredbe, biti ispisana vrijednost _____________.

12. Na liniji ispred opisa koraka upisati brojeve od 1 do 4 kojima se određuje redoslijed

izvršenja radnji kada u Microsoft Wordu vršimo kopiranje određenog sadržaja:

a) ____ odabrati naredbu "Kopiraj" (Copy)

b) ____ odabrati naredbu "Zalijepi" (Paste)

c) ____ označiti ono što se kopira

d) ____ premjestiti pokazivač (kursor) na mjesto gdje želimo kopirati

13. U binarnom brojnom sistemu izračunati 101011+1001.

14. Pretvoriti broj BA iz heksadecimalnog brojnog sistema u dekadni.

15. Kolike će biti vrijednosti varijabli A, B i C nakon izvođenja sljedećeg algoritma:

A:= 0;

B:= 5;

C:= 10;

A:= A + B + C;

B:= A + B + C;

C:= A + B + C;

Odgovor: A = ________, B = ________, C = ________,

Page 145: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

140

9.8. Zadaci 2017

OPĆINSKO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

14.03.2017.

U zadacima 1-5 zaokruži jedan tačan odgovor (DA ili NE)!

1. Sadržaj radne memorije se briše nakon isključivanja računara. DA NE

2. Dropper je program koji služi za rezervisanje prostora u Dropbox-u. DA NE

3. U sljedećoj putanji su 2 foldera – C:\Bosna\gercegovina\Sarajevo.txt. DA NE

4. Prvi korisnik USB sticka je bio Charles Babbage. DA NE

5. Skraćenica mjerne jedinice za rezoluciju skenera je skn. DA NE

U zadacima 6 – 10 zaokruži samo jedan tačan odgovor (A, B ili C)!

6. Funkcija sistema u kojoj se podaci i informacije smještaju na organiziran način kako

bi se mogli dalje obrađivati i koristiti se naziva

A. memorisanje B. kodiranje C. download

7. Paskalova analitička mašina je razvijena u

A. XVII stoljeću B. XXV stoljeću C. X stoljeću

8. Koliko stranica ima tekstualna datoteka od 100KB, ako znamo da na svaku stranicu

stane 400 znakova, a tekst je kodiran proširenim ASCII kodom?

A. 4 B. 40 C. 256

9. Za koju vrijednost promjenjive X vrijedi sljedeća jednakost

X div 100 + (X mod 100) div 10 + X mod 10 = 30

A. 2017 B. 2018 C. 2019

10. Koliko najmanje binarnih cifara nam treba da bismo mogli zapisati 16 različitih

zapisa?

A. 2 B. 4 C. 8

11. Neka u Excelovoj tablici imamo sljedeću situaciju

A B C D E F G H 15 12 -12 -9 14 -31 12 -11

Ako u ćeliju H15 ukucamo naredbu = ABS (A15:F15) onda će u toj ćeliji, nakon

izvršenja naredbe, biti ispisana vrijednost _____________.

12. Na liniji ispred opisa koraka upisati brojeve od 1 do 4 kojima se određuje redoslijed

koraka u programiranju:

a) ____ Testiranje programa

Page 146: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

141

b) ____ Osmišljavanje algoritma

c) ____ Pisanje programa u nekom programskom jeziku

d) ____ Opis zadatka

13. Odrediti X ako je ABC(16) + 1010(2) + X(10) = 5375(8)

14. Šta će se desiti ako se u programu Power Point, za vrijeme izvođenja prezentacije,

pritisne tipka B? _______________________________________________________.

15. Kolike će biti vrijednosti varijabli A i B nakon izvođenja sljedećeg algoritma:

A:= 3;

B:= 7;

ako je (A < B) onda

A:= 2 * A + 1;

ako je (A < B) onda

B:= B – A;

inače

A:= A – B;

ako je (A + B < 6) onda

A:= A + A;

inače

B:= B + B;

Odgovor: A = ________, B = ________.

10. TEORETSKI ZADACI S KANTONALNIH TAKMIČENJA

10.1. Zadaci 2011

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

10.05.2011.

1. Informacija i podatak su isto. DA NE

2. Softver su svi program koji se nalaze u nekom računaru. DA NE

3. Najvažniji dio računara (njegovo srce) je memorija. DA NE

4. Ako su uključena mala slova, da bismo aktivirali velika moramo koristiti:

A: CapsLock B: Ctrl C: Shift

D: Alt E: Enter F: Delete

5. Određenim pojmovima pridruži značenje:

Page 147: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

142

I generacija računara tranzistor

II generacija računara integrisana kola

III generacija računara elektronske cijevi

IV generacija računara mikroprocesor

6. RAM je memorija iz koje se podaci mogu samo čitati. DA NE

7. DOS naredba DIR_p*.exe radi: Prikazuje sve datoteke sa exe ekstenzijom čije ime počinje

sa slovom p. DA NE

8. Rezolucija monitora je ukupan broj piksela. DA NE

9. Datoteka (engl. File) je skup istovrsnih podataka zapisanih na jednom mjestu i nazvanih

zajedničkim imenom. DA NE

10. Naziv bit dolazi od engl. Binary digit što u prevodu znači binarna cifra. DA NE

11. Dio centralne jedinice gdje se vrši obrada podataka se naziva procesor, a skraćeni naziv je

CPU. DA NE

12. Kako u Excel-u preći u novi red iste ćelije?

A: Ctrl + Alta B: Shift + Enter C: Alt + Enter D: Ctrl + Shift

13. Koji je broj napisan u binarnom brojnom sistemu?

A: 120392 B: 101010 C: 881188 D: 1234567890

10.2. Zadaci 2012

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

10.05.2012.

Na sljedeća pitanja se odgovara tako da se upiše slovo koje se nalazi ispred tačnog odgovora

na za to predviđeno mjesto (crtu):

r/b Pitanje: bodovi mogući ostvareni

1.

Koji od sljedećih uređaja vam treba za komunikaciju sa drugim računarima putem telefonske mreže?

a) CD-ROM b) Modem c) Ploter d) Zvučnici

2

Odgovor: _______

Page 148: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

143

2.

Šta je od navedenog operativni sistem?

a) Lotus 1-2-3 b) PowerPoint 2010 c) Linux Ubuntu d) Corel X5

2

Odgovor: _____________

3. Koji od navedenih uređaja je prikladan za pravljenje sigurnosne kopije (backup) sa mrežnog servera podataka?

a) Modem b) Magnetna traka c) Ploter d) CD/RW

2

Odgovor: _____________

4.

Korisnički ugovor o licenci (End User Licence Agreement):

a) je oblik oglošavanja između autora ili izdavača softverske aplikacije i korisnika

b) daje korisniku ekskluzivno pravo za kopiranje i prodaju softvera drugim potecionalnim korisnicima

c) garantuje vlasništvo softvera korisniku softvera d) je zakonski ugovor između autora ili izdavača

softverske aplikacije i korisnika s obzirom na uslove distribucije, dalje prodaje i ograničenja upotrebe.

2

Odgovor: _____________

5.

Šta je od navedenog ispravno ime za sliku ispod?

a) Naslovna traka b) Klizna traka c) Statusna traka d) Traka menija

2

Odgovor: _____________

Page 149: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

144

6.

.docx je ekstenzija (nastavak) za:

a) Ekstenzija za Word 1997 dokumenta b) Ekstenzija za Excel 2007 dokumenta c) Ekstenzija za Word 2007 dokumenta d) Niti jedno od pobrojanog

2

Odgovor: _____________

7.

Šta znači skraćenica HTTP?

a) Hyperlink Transfer protocol b) Hyperlink Transmission Procedure c) Hypertext Transfer Protocol d) Hypertext Transmission Procedure

2

Odgovor: _____________

8.

Simbol na ravnalu Office aplikacija obojan crnom bojom služi za:

a) uvlačenje cijelog odlomka b) uvlačenje prvog retka c) uvlačenje svih redaka osim prvog u odlomku d) ništa od navedenog

2

Odgovor: _____________

9.

Rezultat izvršenja formule u ćeliji B1 je:

2

Odgovor: _____________

10.

Poredaj po veličini sljedeće kapacitete memorije počevši od najmanjeg:

a) 1100MB b) 0.1GB c) 103kB d) 1GB e) 1500kB

2

Odgovor: _____________

Page 150: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

145

11.

Tačan naziv trake na slici je:

a) startna traka b) alatna traka c) programska traka d) zadaćna traka

2

Odgovor: _____________

12.

Koja će vrijednosti pisati u ćeliji C1 nakon izvršenja funkcije koja se u njoj nalazi:

=IF(SUM(A1:A4)>SUM(B1:B4);AVERAGE(A1:A4);SUM(B1;B4))

2

Odgovor: _____________

13. Prikazati realni broj 190.3125(10) binarno i oktalno! 2

Odgovor: _____________

14.

Kolika je vrijednost varijabli g i h nakon izvršenja niza naredbi? (DIV je rezultat cjelobrojnog dijeljenja, MOD je ostatak cjelobrojnog dijeljenja). g=4 h=15 g=g+h h=g – h g=g – h g=g MOD h h=g DIV h

2

Odgovor: _____________

15.

Opcija "Track Changes" u MS Wordu služi za:

a) Praćenje promjena koje se dešavaju u Word dokumentu

b) Provjeru pravopisa c) Označavanje novih pojmova u Wordu d) Ništa od navedenog

2

Odgovor: _____________

Page 151: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

146

10.3. Zadaci 2013

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

30.04.2013.

U zadacima 1-10 treba zaokružiti slovo ispred tačnog odgovora.

1. Za crtanje kružnice i kvadrata u Windows aplikaciji Paint, na tastaturi je potrebno držati

pritisnutu tipku

A. Ctrl

B. Alt

C. Shift

2. Neizostavni dio u svakoj adresi elektronske pošte je

A. @

B. %

C. .com

3. Ulazna jedinica nije

A. Miš

B. Tastatura

C. Štampač

4. Koja od navedenih naredbi nije naredba u Pascalu

A. WRITELN

B. PRIVATE

C. READLN

5. Koji je broj zapisan u oktalnom brojnom sistemu

A. 88

B. 77

C. Nijedan

6. Formule u Excelu počinju znakom

A. #

B. =

C. %

7. Vodoravna orijentacija papira je

A. Landscape

B. Portrait

C. Horizonal

Page 152: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

147

8. Koliko jedan gigabajt ima megabajta

A. 102

B. 1000

C. 210

9. Koji od odgovora radi u Excelu isto što i =SUM(A1:B2)

A. =A1+B1+A2+B2

B. =A1+B2

C. =A1/B2

10. Softver se dijeli na

A. Kupovni i prodajni

B. Sistemski i aplikativni

C. Memorijski i procesorski

U zadacima 11-15 treba uraditi traženo.

11. Broj 20122013 iz dekadnog brojnog sistema zapisati u heksadecimalnom:_____________.

12. Nakon izvršenja naredbi, A i B će imati sljedeće vrijednosti: A= _______, B= ________.

A=2

B=3

A=A+B

A=A+A

IF B>A THEN A=100

B=A+B

13. Ako u Microsoft Excel ćelijama imamo sljedeće zapise:

A1: 10 A2: 15 A3: 20 A4: 25 A5: =SUM(A2:A4)

Nakon što u ćeliju A6 upišemo =COUNT(A1:A5) i pritisnemo tipku ENTER, koji će

sadržaj biti ispisan na ekranu u ćeliji A6?

U ćeliji A6 će biti ispisano ___________

14. Nakon izvršenja koda i:=17; writeln((i mod 6)+(i div 6); biće odštampano ________

15. Broj 11001011 iz binarnog brojnog sistema zapisati u dekadnom:_________________

Page 153: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

148

10.4. Zadaci 2014

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

29.04.2014.

1. Da li je svaki podatak informacija? DA NE

2. Prvi računar s memorisanim programom zvao se ____________________________.

3. Nakon isključivanja računara sadržaj radne memorije se briše. DA NE

4. 1MB se sastoji od ________________________________ BYTA.

5. Udaljenost između monitora i očiju treba da bude manja od 30cm. DA NE

6. Nakon isključivanja računara ili nakon njegovog resetiranja, počinje da se izvršava

program koji se nalazi u ROM memoriji a naziva se ___________________________.

7. Vodoravna orjentacija papira je:

a) Vertical b) Horizontal c) Landscape

8. Kombinacija kojih tipki izrezuje i kopira selektirani dio dokumenta?______________

9. Koji od odgovora radi u Excelu isto što i = SUM (A1 : B2)

a) = A1 + B2 b) = A1 + A2 + B1 + B2 c) = SUM (A1) + SUM (B2)

10. Odrediti odgovarajuće parove

1. Pascal (1643. god.) A. Mašina za bušenje kartice 2. Leibniz (1964. god.) B. Aritmetička mašina 3. Babbage (1834. god.) C. Računar s pohranjenim programom 4. Hollerith (1890. god.) D. Mašina za računanje Von Neumann (1946. god.) E. Analitička mašina 1 2 3 4 5

11. Zapisati broj u 14879703 u heksadecimalnom obliku.

12. Zadane su sljedeće vrijednosti i algoritam

K(1) K(2) K(3) K(4) K(5) K(6) K(7) B 1 0 0 1 0 1 1 5

A = 0

za J = 1, 2, 3, 4, 5, 6, 7 radi

A = 2A

Ako je K(J) = 1 tada je A = A + B

Nakon što se izvrše dane naredbe, A ima vrijednost _______________________.

Page 154: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

149

10.5. Zadaci 2015

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

16.04.2015.

U zadacima 1 – 5 zaokruži jedan tačan odgovor (DA ili NE)!

1. Phishing je privlačenje korisnika na web stranice kako bi ostavili svoje lične podatke, koji

se poslije zloupotrebljavaju. DA NE

2. Internetski domen naše države je bh. DA NE

3. Procesor čiji je radni takt 4GHz može izvršiti 4 milijarde osnovnih operacija u jednoj

sekundi. DA NE

4. Gif format podržava animirane sadržaje. DA NE

5. Oznaka CD ili DVD medij po kojem je moguće više puta pisati i

brisati je RW. DA NE

U zadacima 6 – 10 zaokruži jedan tačan odgovor (A, B ili C)!

6. Oblik virtualne zajednice u okviru koje korisnici diskutuju o zajedničkim temama je

A. Skype B. Forum C. Blog

7. Kako se naziva prva stranica koja se učita kada uključimo program za pretraživanje

interneta?

A. Home page B. Google C. Microsoft explorer

8. Uređaj koji ne služi za komunikaciju je

A. Swich B. Router C. Scanner

9. Program za zaštitu od neželjenog sadržaja je

A. Antiverski B. Kasperski C. Outlook

10. Standarni raspored slova na tastaturi je

A. abcde B. xywzq C. qwert

11. Neka u Excelovoj tablici imamo sljedeću situaciju

A B C D E F G H I 1 2 1 3 2 0 1 0 3

Ako u ćeliju I1 ukucamo naredbu = COUNTIF(A1:G1;">2") onda će u toj ćeliji, nakon

izvršenja naredbe biti ispisana vrijednost ______________.

12. U Microsoft Wordu imamo sljedeću situaciju:

Danas je bio lijep i sunčan ljetni dan. ¶ Putovali smo na more. ¶

Page 155: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

150

Kada smo došli na more, mama i tata su raspakovali stvari a ja sam otišla na plažu. ¶

Šta je autor teksta napravio na mjestima gdje se pojavljuje znak ¶ ?

________________________________________________________________________

13. U oktalnom brojnom sistemu izračunati 1703+2015+4334.

14. Pretvoriti broj 16042015 iz dekadnog u heksadekadni brojni sistem.

15. Zadane su sljedeće vrijednosti i algoritam

K(1) K(2) K(3) K(4) K(5) K(6) K(7) B 1 0 0 1 0 1 1 2

A=0

Za J=1, 2, 3, 4, 5, 6, 7 radi

A=2A

Ako je K(J)=1 tada je A=A+B

Nakon što se izvrše dane naredbe, A ima vrijednost ________________.

10.6. Zadaci 2016

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

14.04.2016.

U zadacima 1 – 5 zaokruži jedan tačan odgovor (DA ili NE)!

1. Sadržaj radne memorije se briše nakon isključivanja računara. DA NE

2. Dropper je program koji služi za naseljavanje virusa u računar. DA NE

3. U sljedećoj putanji su 3 foldera – C:\Cazin\Osnovna\Prvi. DA NE

4. Prvi korisnik USB sticka je bio Charles Babbage. DA NE

5. Skraćenica mjerne jedinice za rezoluciju skenera je dpi. DA NE

U zadacima 6 – 10 zaokruži jedan tačan odgovor (A, B ili C)!

6. Funkcija sistema u kojoj se podaci i informacije smještaju na organiziran način kako bi se

mogli dalje obrađivati i koristiti se naziva

A. formatiranje B. dekodiranje C. memoriranje

7. Paskalova analitička mašina je razvijena u

A. XV stoljeću B. XVII stoljeću C. XIX stoljeću

Page 156: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

151

8. Koliko stranica ima tekstualna datoteka od 72KB, ako znamo da na svaku stranicu stane

4096 znakova, a tekst je kodiran proširenim ASCII kodom

A. 18 B. 20 C. 22

9. Za koju vrijednost promjenljive X vrijedi sljedeća jednakost

YSX\100 + Y]^S100SX\10 + Y]^S10 = 20

A. 789 B. 659 C. 2016

10. Koliko najmanje binarnih cifara nam treba da bismo mogli zapisati 32 različita zapisa?

A. 5 B. 8 C. 16

11. Neka u Excelovoj tablici imamo sljedeću situaciju

A B C D E F G H

15 12 – 12 – 9 14 – 12 31 – 11

Ako u ćeliju H15 ukucamo naredbu = AVERAGE(A15:F15) onda će u toj ćeliji, nakon izvršenja naredbe, biti ispisana vrijednost _________ .

12. Na linije ispred opisa koraka upisati brojeve od 1 do 4 kojima se određuje redoslijed koraka u programiranju

a) _____ Testiranje programa b) _____ Osmišljavanje algoritma c) _____ Pisanje programa u nekom programskom jeziku d) _____ Opis zadatka

13. Odrediti X ako je AB1(16) + 66(10) + 1010(2) = X(8).

14. Šta će se desiti ako se u programu Power Point, za vrijeme izvođenja prezentacije, pritisne

tipka B? _______________________________________________________

15. Kolike će biti vrijednosti varijabli A i B nakon izvođenja sljedećeg algoritma:

A:=2; B:=4; ako je (A <B) onda A:=2*A+1; ako je (A < B) onda B:=B – A; inače A:=A – B; ako je (A + B < 5) onda A : = A + A;

Page 157: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

152

inače B:=B + B;

Odgovor: A = ______, B = ______.

10.7. Zadaci 2017

KANTONALNO TAKMIČENJE IZ INFORMATIKE ZA UČENIKE OSNOVNIH ŠKOLA

04.04.2017.

U zadacima 1 – 5 zaokruži jedan tačan odgovor (DA ili NE)!

1. Svaki podatak je informacija. DA NE

2. Udaljenost između očiju i monitora treba biti manja od 20cm. DA NE

3. Vodoravna orijentacija papira je „horizontal“. DA NE

4. Sva obrada podataka se obavlja u memoriji. DA NE

5. Laptop je skraćenica od leserski printer. DA NE

U zadacima 6 – 10 zaokruži jedan tačan odgovor (A, B ili C)!

6. Funkcija sistema u kojoj se podaci i informacije smještaju na organiziran način kako bi se

mogli dalje obrađivati i koristiti se naziva

A. memorisanje B. kodiranje C. download

7. Naredba CLS u DOS-

A. briše ekran B. zatvara prozor C. gasi računar

8. Neizostavni dio u svakoj adresi elektronske pošte je

A. @ B. www C. com

9. Za crtanje kružnice i kvadrata u Windows aplikaciji Paint, na tastaturi je potrebno držati

stisnutu tipku

A. Shift B. Ctrl C. Enter

10. Najmanja adresabilna tačka na ekranu se naziva

A. Pixel B. Bit C. Byte

11. Neka u Excelovoj tablici imamo sljedeću situaciju

A B C D E F G H

15 1 – 1 april 20.17 Bosna 0 123,45

Page 158: Uvod u programski jezik - oskamenica.com · Skripta je namijenjena učenicima koji žele naučiti programirati u C++, a nemaju neko prethodno znanje ni o jednom programskom jeziku

153

Ako u ćeliju H16 ukucamo naredbu = COUT(A15:H15) onda će u toj ćeliji, nakon izvršenja naredbe, biti ispisana vrijednost _________ .

12. Na linije ispred prezimena upisati od 1 do 3 kojima se određuje redosljed od najstarijeg do najmlađeg

_____ Von Neumann _____ Pascal _____ Babbage

13. Broj DAD0(16) u brojnom sistemu s bazom 7 ima zapis ___________________.

14. Nakon izvršenja koda k:=2017; writeln((k mod 100)+((k div 9) mod 9)); bit će ispisan

rezultat _________.

15. Kolike će biti vrijednosti varijabli A i B nakon izvođenja sljedećeg algoritma:

A:=3; B:=5; if((2*A>B) or (A<B))

then A:=2*A; if(A>B) then A:=A – B

else B:=A*B; for I:=1 to 10 do

if(A<B) then A:=A*A;

if((A>100) and (B<7)) then A:=A+B;

else B:=A+B;

Odgovor: A = ______, B = ______.