You are on page 1of 52

Бранкица Јокић

ПРОГРАМИРАЊЕ И
ПРОГРАМСКИ ЈЕЗИК
DEV C++

ИНФОРМАТИЧКА СЕКЦИЈА
ОСНОВНА ШКОЛА «НИКОЛА ТЕСЛА»
ПРЊAВОР
Бранкица Јокић 1.Програмирање и програмски језик

1. ПРОГРАМИРАЊЕ И ПРОГРАМСКИ 1.1 АЛГОРИТАМСКЕ СТРУКТУРЕ


ЈЕЗИК Dev C++
Алгоритми се користе у рачунарском
програмирању као приказ поступка рјешавања
 Кључни појмови: неког задатка. Он је најчешће графички приказ
Aлгоритам, програм, дијаграм тока. тока обраде или скупа инструкција рачунарског
програма и тада се прецизније назива дијаграм
тока.
Постоји више начина приказивања
Да би се ријешили одређени задаци
алгоритма: у облику говора, табеларно и
потребна су разна знања, искуства па и
дијаграмом тока или тзв. блок дијаграмом.
вјешптине. Рачунар користи само памћење и
Уобичајен начин приступања креирању
логичко расуђивање.Зато се задаци које
алгоритма је цртање дијаграма тока.
рачунар треба ријешити морају претворити у
Алгоритамске структуре могу се
облик који је разумљив рачунару.
подијелити у три основне групе и то:
Машински језик је бинарни приказ  Линеарне алгоритамске структуре ,
програма за рачунар и једини разумљив  Разгранате и
рачунару. Машински језик је ипак компликован
 Цикличне алгоритамске структуре или
за писање програма па су уведени виши или
петље.
симболички програмски језици. Симболички
Дијаграм тока се састоји од симбола
или виши програмски језици су настали како
повезаних усмјереним линијама (стрелицама),
би олакшали програмирање, јер је лакше
чиме се истиче прегледност и недвосми-
памтити симболе него бинарне бројеве. Такав
сленост редослиједа извршења појединих
облик програма се прије извођења мора
алгоритамских корака.
превести у машински облик.
Основне особине алгоритма су:
Програмирање је поступак писиња
 Дефинисаност- сви кораци морају бити
радњи и наредби програма у одабраном
јасни и недвосмислени.
програмском језику.
 Коначност- извршење алгоритма се мора
Програм је ограничени скуп наредби
обавити у одређеном броју корака.
које се изводе тачно одређеним редослиједом
и с тачно одређеним циљем. Прилагођен је за  Посједовање улаза и излаз- морају се
извођење на рачунару као низ лoгички дефинисати улази којих може бити: ни
повезаних инструкција. Свака инструкција један, један или више и излази којих мора
представља одређену наредбу или скупину бити бар један или више.
наредби које рачунар може извршити а које  Ефикасност- алгоритам се извршава у
представљају најмањи елемент програма. разумном временском интервалу.
Сваки програмски језик користи властити,  Резултативност- алгоритам мора дати
ограничен скуп ријечи које имају посебно рјешење проблема ако нема рјешења онда
значење.Такве ријечи називају се кључним поруку да рјешење не постоји.
ријечима.
ГРАФИЧКИ СИМБОЛИ ЗНАЧЕЊЕ СИМБОЛА
За сваки програмски језик прописана су
строга правила слагања кључних ријечи у ГРАФИЧКА ОЗНАКА ЗА
ПОЧЕТАК АЛГОРИТМА
наредбе и у програм. Таква правила називају УЛАЗНИ АЛГОРИТАМСКИ
се синтакса. Тек након упознавања сваке КОРАК
наредбе, може се започети комбинујући их АЛГОРИТАМСКИ КОРАК
писати програм, програмирати. У КОМЕ СЕ ИСПИТУЈЕ УСЛОВ
Фазе у програмирању
 Анализа проблема, АЛГОРИТАМСКИ КОРАК
ОБРАДЕ ПОДАТАКА
 Израда алгоритма (цртање
ИЗЛАЗНИ АЛГОРИТАМСКИ
дијаграма тока), КОРАК
 Писање програмског кода, ГРАФИЧКА ОЗНАКА ЗА
 Унос програмског кода у рачунар и КРАЈ АЛГОРИТМА
покретање програма.
1
1.Програмирање и програмски језик Бранкица Јокић

2. ИНСТАЛАЦИЈА DEV C++  У овом кораку бирају се компоненте које


треба инсталирати. Пошто је све потребно
већ подешено, само се кликне “DALJE”
 Кључни појмови: (слика бр.3).
Download Free Dev C++,
инсталација програма

C++ је најпопуларнији програмски језик


опште намјене за професионалну примјену.
Dev C++ има низ предности у односу на друге
програмске језике, прије свега, бесплатан је,
малих димензија и врло једноставног
окружења.

Инсталирање се одвија у свега неколико


корака:
 Пронађе се сљедећи линк на интернету, Слика бр.3 Избор компоненти у Dev C++

 У овом кораку бира се фолдер у који


 Након учитавања програма покреће се треба инсталирати Dev C++, те кликом
инсталација кликом на икону, након чега на “INSTALIRAJ” наставља се инсталација
почиње инсталација програма, уколико (слика бр.4).
није већ инсталиран на вашем рачунару.
 У сљедећем кораку бира се језик те кликом
на ОК наставља са инсталацијом (слика
бр.1).

Слика бр.1 Избор језика у Dev C++ Слика бр.4 Избор компоненти у Dev C++

 Кликом на “PRIHVAĆAM” изјављујете да се  Слиједе кораци инсталације (слика бр.5).


слажете са условима програма (слика
бр.2).

Слика бр.5 Инсталација Dev C++


Слика бр.2 Избор језика у Dev C++
2
Бранкица Јокић 1.Програмирање и програмски језик

Наставак инсталације приказан је на 3. УВОД у DEV C++


сликама (слика бр.2- сликабр.7).
  Кључни појмови:
Покретање програма,
креирање новог пројекта.
Као и сви програми, и Dev C++ се
покреће избором у Start менију или преко
иконе на радној површини.

3.1 КРЕИРАЊЕ НОВОГ ПРОЈЕКТА

Слика бр.6 Инсталација Dev C++


Слика бр.9 Креирање новог пројекта

Програм је дио веће цјелине која се назива


“Projekat”. Због тога се писање програма
започиње креирањем новог пројекта (слика
бр.8):
Слика бр.7 Инсталација Dev C++ 1 Кликнете на Datoteka
 2 Изаберете Nova
3 Изаберете Projekat

Слика бр.10 Избор типа пројекта

Након тога се отвара нови прозор и бира


“Novi projekat” и тип пројекта. Најважнији
Слика бр.8 Крај инсталације Dev C++ типови су “Windows Application” и “Console
Application” (слика бр.10) .
Затварањем овог прозора инсталација Windows Application изводи се унутар
програма Dev C++ је завршена (слика бр.8). класичног windows прозора. Предност је у
Прије него се уопште упозна изглед томе што се добија програм који ће изгледати
програмског прозора и писања кода у истом као сваки други windows програм а
препоручљиво је отворити нову датотеку у недостатак што је на овај начин писање
коју се могу спремати пројекти сачињени у програма сложенији и мање прихватљив за
Dev C++. почетнике.
3
1.Програмирање и програмски језик Бранкица Јокић

4 Console Application, се не изводи Након инсталације програма могу се


унутар класичног windows прозора, већ подесити одређене опције у менију Alati
унутар поједностављене верзије са црном (слика бр.13) и подменију Izgled editora
позадином. Недостатак овог начина писања (слика бр.14).
програма је што тај облик прозора има мање
могућности од класичног прозора. Предност 3
му је што је једноставан и тиме прикладнији
за почетнике у програмирању.

Слика бр.13 Мени- Алати

6
7

Слика бр.11 Избор датотеке, имена и типа


пројекта
5 Избор датотеке у коју се снимају пројекти,
6 Назив пројекта, може се бирати назив,нпр.
“prviprojekat” или оставити понуђени
назив Projekat1(слика бр.11).
7 Овдје се бира тип пројекта и то је Dev C++.

3.2 ПРОГРАМСКИ ПРОЗОР DEV C++ Слика бр.14 Подешавања изгледа Едитора

1
2
3

4 5

1 Насловна линија
2 Линија менија
3 Алатна линија
4 Прозор пројекта
5 Простор за едитовање
6 Грешке,испис компајлера...

Слика бр.12 Изглед програмског прозора


4
Бранкица Јокић 1.Програмирање и програмски језик

Компајлирање и извршење програма Грешке у програму

Да би се извршио већ унесени програм Често се дешава да након написаног


потребно га је прије свега компајлирати. програма у најмери да се изврши то не
Kомпалација (енгл.Complile), је процес успијева јер су се појавиле одређене грешке.
превођења виших програмских језика у Довољна је и најмања грешка да би било
машински, једини разумљив рачунару. онемогућено извршење и да се појави
У овом програмском окружењу су три обавјештење као на сљедећој слици (слика
битне наредбе за превођење програма: бр.16):

1 2 3

1 Kompajliraj- програм преводи али га не


покреће. Да би га покренули мора се након
тога изабрати опцију 2- Pokreni.
2 Pokreni- Ова опција може се користити
само ако је претходно програм преведен,
односно компајлиран а жели се поново
покренути.
3 Kompajliraj i pokreni- ова опција служи
истовремено за превођење и покретање
програма. Први пут се увијек користи ова
опција.
Кликом на Kompajliraj i pokreni
започиње процес превођења и покретања
програма. Након клика на Kompajliraj i
pokreni може се пратити ток превoђења Слика бр.16 Изглед програмског кода са
након чега се пограм покреће у новом грешком
прозору, као на сљедећој приложеној слици
(слика бр.15): Кад рачунар наиђе на грешку, процес
превођења се зауставља и рачунар означава
ред у коме је дошло до грешке. Истовремено
се отвара прозор у коме се могу видјети
додатне информације о уоченој грешци. Ту
се може видјети и порука која предочава
грешку и начин исправке исте.
Означавање позиције грешке је прилично
поуздано обзиром да рачунар практично не
означава позицију грешке већ позицију на
којој је грешка настала.У наведеном примјеру
Слика бр.15 Извршење програма је настала грешка у 11 реду, на крају није
унешена тачка зарез, тако да превођење није
Програмски задатак је био исписивање прешло у 12. ред односно тек у 12-ом реду је
површине правоугаоника за уне сене грешка примијећена. Означавање редова у
вриједности страница a и b . којима је дошло до грешке је само груба
Текст Press any key to continue... рачунар је орјентација а никако прецизан показатељ.
аутоматски исписао и њиме обавјештава да је Тек након отклоњене грешке може се
довољно притиснути било који тастер на кликнути на Kompajliraj i pokreni, након
тастатури и прозор у коме се извршавао чега ће се програм превести и извршити.
програм ће се затворити (слика бр.15).
5
1.Програмирање и програмски језик Бранкица Јокић

Дакле, за писање изворног кода потребан 4.2 СТРУКТУРА ПРОГРАМА


је editor, за превођење изворног кода у #include<cstdlib>
извршни код потребан је kompajler, а да би се #include<iostream>
откриле грешке у програмском коду потребно
је имати debugger. Како приликом писања Ове наредбе се пишу на почетку сваког
програма треба користити три различите C++ програма. На почетку програма се
врсте програма, ти програми су уједињени у указује рачунару које библиотеке наредби
један програм и називају се IDE (Integrated треба користити
Development Environment), интегрисано Cstdlib-
развојно окружење. је библиотека стандардних наредби.

4. ЕЛЕМЕНТИ ПРОГРАМА у DEV C++ Постоји много библиотека наредби.


Могло би се десити да се у двије различите
 Кључни појмови:
Изворни код, коментари, подаци и
библиотеке нађу двије наредбе истог назива,
а различите намјене.
промјењиве, функције, оператори
Using namespace std;
4.1 ИЗВОРНИ КОД Овом наредбом се обавјештава преводиоц
да ће се користити стандардни називи
Комбинацијом наредби програмског наредби.
језика настаје изворни код (engl.source code). Int main()
Изворни код је могуће писати у било којем У C програмима је обавезна једна и само
програму за уређивање текста (engl.text editor). једна функција main(). Ова функција означава
Изворни код програма C++ спрема се у мјесто на коме почиње извршење програма.
датотеку изворног кода под одређеним именом Након сваке наредбе стоји знак тачка-зарез (;)
и наставком .cpp. Датотека изворног кода, који означава крај једне и почетак друге
наставка .cpp садржи наредбе које је написао наредбе (слика бр.17).
програмер. На рачунару се може извршити Низ наредби груписаних у једну логичку
само машински или извршни облик (енгл. цјелину представља блок наредби. Блок
executable). Резултат успјешно написаног и наредби налази се унутар витичастих заграда
компајлираног програма је извршна датотека { }.
(.exe). Програм који повезује објектну cout<<"kolicnik je K="<<K<<endl;
датотеку с библиотекама и другим потребним Првом наредбом наређује се рачунару
датотекама назива се повезивач (engl. linker). да текст под знацима навода испише на екран
Библиотеке су датотеке које садрже рачунара а другом, (<< endl) се наређује
готове дијелове програма.Такви готови рачунару да пређе у нови ред.
дијелови се могу користити и у другим system("PAUSE");
програмима. Нпр. библиотека формула за Ова наредба зауставља програм док се
израчунавање површине и запремине не притисне неки тастер.
геометријских тијела. Тада се не морају сваки
пут поново уносити формуле, већ их само
укључути из по стојећих библиотека.
Програмски језици користе имена како би се
означиле различите цјелине које чине програм.
Осим имена промјењивих овдје спадају и
имена функција, типова промјењивих, макроа
итд. Име треба да се састоји од једног или
више карактера с тим да на првом мјесту не
може бити број. Такође, и велика и мала слова
се разликују, а не могу се користити ни имена
одређених резервисаних ријечи, наредби у
програмском језику C++.
Слика бр.17 Структура програма
6
Бранкица Јокић 1.Програмирање и програмски језик

Треба напоменути да је организација


меморије и кориштење адреса које се односе
на податке веома важна за програмере, да би
програм био користан мора комуницирати са
улазно/излазним уређајима, тастатуром,
монитором, диском итд.
Сваки програм прима податке путем
улазно/излазних токова и предаје резултат
помоћу истих. Улазно/излазним токовима се
рукује функцијама библиотеке iostream.
То је библиотека која садржи низ улазно
/излазних функција које омогућавају
руковање улазно/излазним токовима.
Cin i cout су двије функције које су
најчешће у употреби.
Слика бр.19 Функција cin

 cin>>a>>b>>c>>d;
Више улазних података може се уписати
у истом реду, одвојени празнинама и тек на
крају уноса притиснути Enter.

Коментари
Коментар је дио описног текста који даје
поближе објашњење или неко тумачење,
помаже ономе ко чита програм (слика бр.20).

Слика бр.18 Функција cout

Cout је функција која усмјерава податке


на екран монитора.
Испис се остварује помоћу оператора исписа
(<<) (слика бр.18). Слика бр.20 Коментари

Endl, ако се жели прегледнији испис тј. 4.3 ПОДАЦИ И ПРОМЈЕЊИВЕ


да се након исписа једног податка показивач
пребаци на почетак новог реда онда се Сваки програм који нешто ради садржи
користи константа endl, која је такође податке које обрађује. Ти подаци могу бити у
сачувана у библиотеци iostream. облику промјењивих и константи.
Промјењиве могу мијењати своју
Cin, је функција која усмјерава податке вриједност у току извођења програма. Свакој
са тастатуре на улазни ток. Подаци се на промјењивој се придружује неко име. Имена
улазни ток умећу помоћу оператора (>>) промјењивих могу садржати слова, бројеве и
(слика бр.19). знак доње црте ( _ ). На почетку имена се мора
наћи или слово или доња црта, а не број. За
cin>>a>>b; имена промјењивих се не могу користити
кључне ријечи.Промјењиве заузимају
Програм очекује унос са тастатуре који одређени простор у меморији што зависи од
ће бити сачуван у промјењиву a и b. њиховог типа.
7
1.Програмирање и програмски језик Бранкица Јокић

Свакој се промјењивој, осим симболичког Декларација података


имена мора додијелити и ознака типа
податка који ће у њу бити сачуван. По ознаци Радну меморију рачунара можете
типа података рачунар “зна” колико мјеста у посматрати као дугачак низ једноставних
меморији треба предвидјети, који су распони података, бајтова од којих сваки има своју
вриједности те какве су операције с подацима адресу. Декларацијом податка (промјењиве и
те врсте могуће. константе) резервишете одређени простор у
Разликују се основни и остали типови радној меморији рачунара, гдје ће бити у
података. бинарном облику смјештена вриједност тог
У основне типове података спадају: податка. Величина тог меморијског простора
 бројеви , цијели и реални, зависи о типу податка.
 знакови, Декларисане промјењиве и константе
 логички подаци, можемо посматрати као именоване меморијске
 константе. просторе. Декларише се тако да се наведе тип
података а након њега запише попис
1 Ако је податак цијели број, његова је промјењивих одабраног типа одвојених
ознака int. Промјењивој означеној са int зарезом и на крају тачка- зарез (;).
може се придружити само цио број. За int c,d,e;
снимање у меморији заузима 4 бајта или 32
бита. 4. 4 ОПЕРАТОРИ

Ако је податак реалан број, његова је Оператори су симболи који представљају


ознака float. Промјењивој означеној са float (замјењују) одређене функције. У C++ је
може се придружити само реалан број. За дефинисано неколико скупова оператора:
снимање у меморији заузима 4 бајта или 32
бита.  Аритметички оператори
 Логички оператори
2 Ако је податак знак, његова ознака је  Релацијски (оператори поређења)
char. Промјењивој означеној са char може се  Остали оператори
придружити:
1.један знак унутар једноструких наводника
char slovo1= 'A'; 1 Аритметички оператори
2.ASCII вриједност тог знака
char slovo2=65; Operator Funkcija
За снимање у меморију предвиђен је 1 бајт + Sabiranje
или 8 бита.
- Oduzimanje
3 Логички подаци
* Množenje
су подаци који могу попримити само једну од
двије могуће вриједности. Промјењива која је / Dijelenje
погодна за снимање логичког податка је типа
% Ostatak cjelobrojnog dijelenja
bool. Такав тип промјењиве може попримити
вриједност само true (1) или false (0).
2 Логички оператори
4 Константе
У програмима се често користе величине Oznaka Funkcija Operator
чије се вриједности у току програма не смију
мијењати. ! Negacija NOT
Такве величине се називају константе. Када се у
коду користе бројевне константе, снимају се у || Logički ILI OR
облику једног од основних бројевних типова
података, реални- double а цјелобројни - int. && Logički I AND

8
Бранкица Јокић 1.Програмирање и програмски језик

Релацијски-
3 оператори поређења 5. ПРОГРАМИРАЊЕ У DEV C++
Подаци се могу поредити, а резултат
поређења је податак типа bool. Ако је написани  IF,Кључни појмови:
IF -ELSE, SWITCH -CASE,
израз истинит резултат поређења је 1(true), а
ако није, резултат ће бити 0 (false). Оператори GOTO
поређења се најчешће користе у наредбама
гранања. 5.1 ЛИНЕАРНЕ СТРУКТУРЕ
Operator Funkcija
< Manje

 Вјежба 1.
Нацртајте алгоритам тока и
напишите програм “Zbir” који рачуна
<= Manje jednako суму два унесена броја.
> Veće Улаз: 5,7 Излаз: Suma brojeva je 12

>= Veće jednako


1 Анализа проблема:
У сваком скупу бројева може се
== Jednako
извршити рачунска операција сабирања. За
!= Različito било која два унесена броја на излазу ће
увијек постојати збир.
4.5 МАТЕМАТИЧКЕ ФУНКЦИЈЕ Збир било која два броја а и b можете писати
као:
На располагању је много припремљених Z=a+b
готових функција разврстаних у одређене Дакле:
библиотеке. Већина математичких функција Почетак:Требате израчунати збир бројева!
налази се у библиотеци cmath. Ако желите Улаз:Нека су вам а и b непознате.
користити неке од тих функција те библиотеке Обрада: Z=a+b
морате их укључити наредбом #include. Излаз:Извршењем програма требате добити
Неке од тих функција ће бити неопходне испис нпр. (за а=5, b=7) Излаз: 12
у рјешавању ваших математичких проблема Крај: Крај програма!
на рачунару, као нпр.
Rezultat=pow(x,potencja); степеновање броја 2 Израда алгоритма:
Rezultat=abs(x); апсолутна вриједност броја Користећи графичке симболе за изрдау
Rezultat=sqrt(x); квадратни коријен броја алгоритма направите дијаграм тока рада
вјежбе.
Серијским повезивање основних
алгоритамских корака настаје линијска
алгоритамска структура.
Сваки корак се извршава само једном,
након извршења једног, извршава се сљедећи
и тако редом. Линијска структура се састоји
од:
ПОЧЕТАК
 Улаза
 Обраде и
 Излаза a, b

Z=a+b

Слика бр.21 Функције у програмском коду КРАЈ


9
1.Програмирање и програмски језик Бранкица Јокић

3 Писање програмског кода: #include <cstdlib>


#include <iostream>
Креирање новог пројекта using namespace std;
Раније сте већ упозна ли начин int main()
креирања новог пројекта. Потребно је прије {
свега, креирати једну датотеку, у коју ћете int a,b,S;
смјештати све ваше пројекте програмиране cout<<"Unesi sabirak a=";
cin>>a;
у Dev C++. cout<<"Unesi sabirak b=";
Нека се датотека зове “MOJI PROJEKTI” а cin>>b;
снимите је у My Documents. Вашем првом S=a+b;
пројекту дајте назив “Zbir” (слика бр.22) и cout<<"Suma brojeva je S=";
(слика бр.23). cout<<S << endl;
1 cout<< endl;
system("PAUSE");
2 }

3
4 Компајлирање и извршење програма

4 5

Слика бр.22 Креирање новог пројекта Након што сте сачували овај код треба га
компајлирати. Кад први пут покрећете
програм бирате опцију Kompajliraj i pokreni
(F11). Након стартања процеса компајлирања,
појављује се прозор са порукама које прате
процес компајлирања. Dev C++ даје поруку у
случају да наиђе на било какву грешку у
програму. У случају да нема грешака ствара се
извршна датотека која се назива Zbir.exe.
Програм ће се покренути у новом прозору гдје
7 ћете извршити тестирање вашег програма
6 (слика бр.23). Програм је могуће покренути и
Слика бр.23 Одређивање типа датотеке и ван Dev C++ окружења, двоструким кликом
снимање на извршну датотеку Zbir.exe.
Да бисте се лакше снашли у вашем
програму подијелићете га на неколико
цјелина.

#include <cstdlib> Ово је почетак програма,


#include <iostream> и ове наредбе писаћете на Слика бр.23 Извшење програма “Zbir”
почетку сваког вашег
using namespace std; програма, касније ћете ту
int main() додавати још неке наредбе. Отварање постојећег програма у Dev C++
{
int a,b,S; Раније снимљене програме пронаћи ћете
cout<<"Unesi sabirak a="; избором: Datoteka/Otvori datoteku (слика
cin>>a; Овдје је главни дио бр.24), након чега се отвара прозор у коме
cout<<"Unesi sabirak b="; програма и у њему
се одређује шта ће можете бирати тражени програм.
cin>>b;
S=a+b; ваш програм радити 1 2
cout<<"Suma brojeva je S=";
cout<<S << endl; Ово су наредбе које
cout<< endl; представљају крај
system("PAUSE" ) ; програма.
} Слика бр.24 Отварање постојећег програма
10
Бранкица Јокић 1.Програмирање и програмски језик


 Вјежба 2.
Напишите програм «Pravougaonik»
који рачуна и исписује површину и обим
правоугаоника.
Улаз: 5,7 Излаз: P=35 O=24

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{ Слика бр.26 Код програма “Krug”
int a,b,P,O;
cout<<"unesi stranicu a=";
cin>>a; Програм се не може извршити нити
cout <<"Unesi stranicu b="; компајлирати, обавјештава вас да постоји
cin>>b; грешка. Потребно је грешку отклонути,
P=a*b; односно варијаблама додијелити ознаку float
O=2*a+2*b; јер ће и рјешење бити реалан број. Покренете
cout<<"P="<<P; ли тај програм добићете исправан резултат.
cout<<endl;
cout <<"O="<<O;
cout<<endl;
system("PAUSE");

Слика бр.25 Извшење програма «Pravougaonik»

У претходна два случаја промјењиве или


варијабле сте означили са int што значи да им
је у меморији наредбом cin придружен
цијели број. Може ли се написати програм за
обим круга а да се варијабле означе са int?
Слика бр.27 Код и извршење програма “Krug”

 Вјежба 3.
Напишите програм «Obim kruga»
који рачуна и исписује обим круга за
У простор формиран int наредбом могу
унесену вриједност полупречника r ако је
се сачувати само бројеви без децималног
pi=3.14
зареза (цијели бројеви), а у просторе
формиране float наредбом можу се сачувати
Требате имати у виду, да ваш програм бројеви са децималним зарезом.
децимална мјеста не одваја зарезом него Тачка-зарез (;) долази послије сваке
тачком. Значи, ако желите унијети 3,14 онда наредбе и у противном програм се неби
ћете унијети 3.14 преко тастатуре. компајлирао и извршио.
11
1.Програмирање и програмски језик Бранкица Јокић

 Вјежба 4.
 Напишите програм «Kolicnik» који
P=pow(a,x);
 P- промјењива у коју спремате резултат
рачуна и исписује колицник два унесена степеновања,
броја.  pow- наредба за степеновање,
Улаз: 7,5 Излаз: Сума бројева је :3.5  а- број који степенујете,
 x- степен на који степенујете.
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
float a,b,K;

cout<<"unesi broj a=";


cin>>a;
cout<<endl;
cout<<"unesi broj b=";
cin>>b;
K=a/b;
cout<<endl;
cout<<"kolicnik je K=";
cout<<K;
cout<<endl;

system("PAUSE");

Слика бр.29 Код и извршење програма «Kоcka»

Слика бр.28 Код и извршење програма


«Kоlicnik» 
 Вјежба 6.
Напишите програм «Dijagonala
Програм можете начинити прегледнијим pravougaonika» који рачуна и исписује
уметањем празних редова cout<<endl; . величину дијагонале правоугаоника .
Улаз: a=3,b=7 Излаз:d=7,61577

 Вјежба 5.
Напишите програм «Kocka» који
рачуна и исписује површину коцке .
r=sqrt(x);
Улаз: a=3 Излаз:P=54  r-промјењива у коју спремате резултат
степеновања,
Анализирајући наметнути проблем  sqrt-наредба за израчунавање квадратног
увидјећете да за површину и запремину коцке коријена
можете користити одређене функције. Да би сте  x-промјењива у коју спремате број чији
их могли користити морате уврстити библиотеку коријен желите израчунати
која их садржи. Већина математичких функција
налази се у библиотеци cmath наредбом d=sqrt(a*a+b*b);-дијагонала правоугаоника
#include.
12
Бранкица Јокић 1.Програмирање и програмски језик

#include <cstdlib>
#include <iostream> 5.2 РАЗГРАНАТЕ СТРУКТУРЕ
#include <cmath>
using namespace std;

int main()
{
float a;
float b;
float d;
cout<<"unesi stranicu pravougaonika a=";
cin>>a;
cout<<endl;
cout<<"unesi stranicu pravougaonika b=";
cin>>b;
cout<<endl;
d=sqrt(a*a+b*b); Слика бр.31 Испитивање услова-доношење
cout<<"dijagonala pravougaonika je"<<" "; одлуке
cout<<d<<endl;
return 0;
} Понекад и није тешко донијети одлуку у
избору, игра је увијек добар избор.
Али, и школске обавезе чекају, ако
поново изаберете игру, па опет игру...лако би
могли зарадити и лошу оцјену.
Како се и сами у свакодневним својим
Слика бр.29 Код и извршење програма
обавезама нађете у недоумици приликом
«Dijagonala»
одређеног избора, тако ће вам се често
наметнути и проблем у задатку, гдје је

 Вјежба 7.
Напишите програм «Apsolutna
потребно испитати услов, извршити избор,
односно донијети одлуку.
vrijednost broja» који рачуна и исписује
апсолутну вриједнист унесеног броја.
Улаз: -25 Излаз: Апсол. вриј .броја је :25 Условна наредба

#include <cstdlib> За рјешавање већине задатака потребне


#include <iostream>
су сложеније програмске структуре код којих
#include <cmath>
редослијед извршавања наредби зависи о
using namespace std; вриједностима података који се обрађују.
Гранање је програмска структура која
int main() омогућава различит ток програма, у зависности
{ о резултату постављеног услова. Ово је веома
int x,A; важна структура јер би без ње могућности
cout<<"unesi neki cio broj x="; рјешавања задатака на рачунару биле јако
cin>>x; ограничене.
cout<<endl; Дијелови програма који се условно
A=abs(x); изводе групишу се у скупине или блокове
cout<<"apsolutna vrijednost broja je"<<" ";
наредби. Сваки блок наредби ограничен је
cout<<A<<endl;
return 0; паром витичастих заграда ({}).
} Ако блок наредби има само једну наредбу,
заграде се могу изоставити.
Блокови наредби се обично пишу
Слика бр.30 Апсолутна вриједност броја увучено због прегледности.
13
1.Програмирање и програмски језик Бранкица Јокић

Наредбе гранања су: #include <cstdlib>


#include <iostream>
using namespace std;
 If,
 If-else, int main()
{
 If-else if-else int x;
 Switch- case. cout<<"unesi neki cio broj x=";
cin>>x;
cout<<endl;
if (x>0)
5.2.1 Једноструко гранање { cout<<"broj je pozitivan"<<endl; }
if (x<0)
У овој алгоритамској структури постоје { cout<<"broj nije pozitivan"<<endl; }
алгоритамски кораци који се једном изврше, а
постоје и они који се уопште не изврше. return 0;
Ако је услов испуњен извршиће се }
наредба1, а ако услов није испуњен извршиће
се сљедећа линија програма (слика бр.30).
Услов може бити било који аритметички
или логички израз.
Блок наредби може имати једну или
више наредби.
Слика бр.31 Испитивање цијелих бројева
if (наредба)
{
блок наредби 5.2.2 Вишеструко гранање
}
нарeдба иза блока Вишеструко условно гранање омогућава
испитивање два и више услова. Зависно о
испуњења услова изводи се одговарајући блок

 Вјежба 8.
Напишите програм «Cijeli brojevi»
наредби. Ако је било који услов истинит
извршава се блок наредби придружен том
који испитује а потом исписује да ли је услову, док се сви остали блокови наредби
унесени број позитиван . прескачу. Дијаграма тока приказан је на слици
Улаз: -25 Излаз: broj nije pozitivan. бр. 32.

ПОЧЕТАК
ПОЧЕТАК
X
b
ДА НЕ
X>0
НЕ
b>0
ДА НЕ
ДА X<0
pozitivan nije poz нула
позитиван негативан

КРАЈ КРАЈ

Слика бр.30 Разграната алгоритамска Слика бр.32 Вишеструка разграната


структура структура
14
Бранкица Јокић 1.Програмирање и програмски језик

if (услов 1) 5.2.3 Switch case наредба


{
први блок наредби Ова наредба замјењује низ узастопних IF
} наредби.Такве примјере треба рјешавати
else if (услов 2) вишеструким гранањем користећи наредбу
{ SWITCH CASE.
други блок наредби
} switch (услов )
...................................... {
else case(константа1):
{ први блок наредби
задњи блок наредби break;
} case(константа2):
наредба иза блока други блок наредби
break;

 Вјежба 9.
Напишите програм “Cijeli brojevi” који
case(константа3):
трећи блок наредби
испитује а потом исписује да ли је унесени break;
број позитиван, негативан или нула. . .......................
Улаз: -25 Излаз: broj je negativan. default:
задњи блок наредби
}
#include <cstdlib>
#include <iostream> За разлику од вишеструког условног
using namespace std;
гранања код кога је услов аритметички или
int main()
{ логички израз, у наредби Switch case услов је
int x; цјелобројни израз или цјелобројна
cout<<"unesi neki cio broj x="; промјењива. Резултат израза такође мора бити
cin>>x; цијели број.
cout<<endl;
if (x>0)
{ cout<<"broj je pozitivan"<<endl; } IZRAZ
else
if (x<0)
{ cout<<"broj je negativan"<<endl; } U1 U2 U3 Un inače
else
{ cout<<"broj je nula"<<endl; } blok 3
blok 1 blok 2 blok n blok 0
system("PAUSE");
}

Слика бр.34 Switch case структура

По завршетку извршног блока, наредба


break; прекида извршење switch- case блока
наредби и наставља програм првом наредбом
након switch -case блока.
Ако вриједност услова није једнака нити
једној од понуђених константи, извршава се
блок наредби придружен наредби default:
Слика бр.33 Вишеструко разграната Цјелокупан switch -case блок записује се
структура унутар пара витичастих заграда ({}).
15
1.Програмирање и програмски језик Бранкица Јокић


 Вјежба 10. 
 Вјежба 11.
Напишите програм «Dani u sedmici» Напишите програм «Računske
који за унесени редни број од 1 до 7 исписује operacije» који за унесени знак рачунске
дан у седмици. операције сабира, одузима, множи или
дијели два унесена броја.
Улаз: 1 Излаз: ponedjeljak
Улаз: 2,5, + Излаз: 7

#include <cstdlib>
#include <iostream> #include <cstdlib>
#include <iostream>
using namespace std;
int main() using namespace std;
{ int main()
{
int od; int a,b;
cout<<"unesite brojeve 1 do 7"<<endl; char op;
cout<<endl; cout<<"unesi brojeve a i b"<<endl;
cin>>od; cin>>a>>b;
switch (od) cout<<"unesi znak za rac operaciju"<<endl;
{ cin>>op;
case 1: cout<<"ponedjeljak"<<endl; switch (op)
break; {
case 2: cout<<"utorak"<<endl; case '+':
break; cout<<"zbir je"<<a+b<<endl;
case 3: cout<<"srijeda"<<endl; break;
break; case '-':
case 4: cout<<"cetvrtak"<<endl; cout<<"razlika je "<<a-b<<endl;
break; break;
case 5: cout<<"petak"<<endl; case '*':
break; cout<<"proizvod je"<<a*b<<endl;
case 6: cout<<"subota"<<endl; break;
break; case'/':
case 7: cout<<"nedjelja"<<endl; cout<<"kolicnik je"<<a/b<<endl;
break; break;
default: default:
cout<<"greska,morate unijeti brojeve od 1 cout<<"samo 4 osnovne racunske
do 7"<<endl; operacije,sve ostalo je greska"<<endl;
} }
system("PAUSE");
} system("PAUSE");
}

Слика бр.34 Код и извршење програма


«Dani u sedmici» Слика бр.34 Код и извршење програма
«Računske operacije»

16
Бранкица Јокић 1.Програмирање и програмски језик

5.2.4 Наредба безусловног скока


  Вјежба 12.
Напишите програм «Test» који за GOTO наредба
унесени редни број бодова исписује је наредба безусловног преласка на
оцјену. дефинисани ред. Често се користи за услове
Улаз: 21 Излаз: dovoljan и тада је условна. Наставља ток програма од
линије кода која садржи ознаку као и GOTO
наредба. Наредба од које се жели наставити
БОД ЛИСТА одвијање програма, може бити било гдје у
0-20, nedovoljan програму.
21-40, dovoljan
41-60, dobar
61-80,vrlodobar 
 Вјежба 13.
Напишите програм «Skok» који за
81-100, odlican унесени број испитује и исписује дали је
позитиван или негативан .
Улаз: 0 Излаз: pogresan unos,ponovi.

#include <cstdlib>
#include <iostream>
#include <cstdlib>
#include <iostream>
using namespace std;
using namespace std;
int main()
{
int main()
cout <<"Unesite broj bodova (0 - 100): ";
{
int br_bodova;
int a;
cin >>br_bodova;
skok: cout <<"unesi broj razlicit od nule" "
br_bodova = (br_bodova - 1) / 20;
";cin>>a;
switch (br_bodova)
if(a==0)
{
{
case 0:
cout<<"pogresan unos,ponovi!"<<endl;
cout<< "NEDOVOLJAN";
goto skok;
break;
}
case 1:
if (a>0)
cout<< "DOVOLJAN";
{ cout<<"broj je pozitivan"<<endl; }
break;
else
case 2:
if (a<0)
cout<< "DOBAR";
{ cout<<"broj je negativan"<<endl; }
break;
case 3:
cout<< "VRLO DOBAR"; cout<< endl,
break; system("PAUSE");
case 4:
cout<< "ODLICAN"; }
break; }

cout <<endl;
system("PAUSE");
}

Слика бр.35 Код и извршење програма


«Skok»

Слика бр.34 Код и извршење програма «Test»

17
1.Програмирање и програмски језик Бранкица Јокић

5. 3 ПРОГРАМСКЕ ПЕТЉЕ

 Кључни појмови:

FOR, WHILE, DO -WHILE x=pocetak


Често се дијелови програма требају
извршити више пута. Структура која то
услов није
омогућава назива се програмска петља. испуњен
Програмском петљом дијелови програма се x<=kraj
могу понављати унапријед задани број пута uslov
или све док одређени услов није испуњен.
Петље се у програму остварују наредбама : услов
 for, испуњен
 while, blok naredbi
 do-while.

5.3.1 FOR-бројачкa програмскa петља x=x+korak

FOR петља се најчешће користи ако се


дијелови програма ( блокови наредби )
понављају унапријед познати број пута. Слика бр.36 Дијаграм тока бројачке петље

for ( x=pocetak ; x<=kraj ; x=x+korak )

1 овдје се дефинише почетна вриједност #include <cstdlib>


промјењиве коју користи for наредба. #include <iostream>
2 дио програма ће се извршавати све док је
овај услов задовољен. using namespace std;
3 овдје се дефинише начин на који ће се
промјењива мијењати. int main()
{
Вриједност бројача ће се повећавати за int k,p,i;
1 ако другачије није задано, до вриједности cout<<"unesi granicne vrijednosti intervala
“крај”. У бројачкој петљи критериј за излазак k i p"<<endl;
из петље је број понављања циклуса. Кад cin>>k>>p;
бројач постане мањи од крајње вриједности cout<<"brojevi iz intervala su"<<endl;
излази се из петље. for(i=k;i<=p;i=i+1)
cout<<i<<endl;
for ( x=pocetak ; x<=kraj ; x=x+korak ) cout<<endl;
{ system("PAUSE");
blok naredbi return EXIT_SUCCESS;
} }
naredba iza bloka

Испитивање услова излаза из петље је


на почетку. То значи да постоји могућност да
се блок наредби не изведе нити једном.


 Вјежба 14.
Напишите програм”Brojacka1" који
исписује све бојеве у заданом интервалу.
Улаз:3 9 Излаз: 3 4 5 6 7 8 9 Слика бр.37 Извршење програма ”Brojacka1"
бројачке петље
18
Бранкица Јокић 1.Програмирање и програмски језик


 Вјежба 15.
Напишите програм”Zbir cifara”
S=0;
for(i>=k;i<=p;i=i+1)
if(i%2==0) S=S+i;
који исписује збир цифара из заданог cout<<S<<endl;
интервала. cout<<endl;
Улаз:25 39 Излаз: 480 system("PAUSE");
return EXIT_SUCCESS;
}
#include <cstdlib>
#include <iostream>

using namespace std;

int main() Слика бр.39 Извршење програма ”Zbir parnih”


{
int p,k,i,s;
cout<<"unesi granicne vrijednosti intervala p i
k"<<endl;
cin>>p>>k;
s=0;
for(i=p;i<=k;i=i+1)

 Вјежба 17.
Напишите програм”Najveci djelilac”који
s=s+i; исписује највећи заједнички дјелилац два
cout<<"suma je"<<" "; унесена броја.
cout<<s<<endl; Улаз: 12 34 Излаз: 2
system("PAUSE");
return EXIT_SUCCESS;
} #include <cstdlib>
#include <iostream>

using namespace std;

Слика бр.38 Извршење програма ”Zbir cifara” int main()


{
int M,N,i,max;
cout<<"unesi cijele brojeve M iN"<<endl;
cin>>M>>N;
Напишите
Вјежба 16.
програм”Zbir parnih”
for(i=1;i<=M;i++)
if((M%i==0) && (N%i==0)) max=i;
који исписује збир парних бројева из cout<<max<<endl;
заданог интервала. system("PAUSE");
Улаз: 2 17 Излаз: 12 return EXIT_SUCCESS;
}

#include <cstdlib>
#include <iostream>

using namespace std;


int main()
{
int k,p,i,S;
cout<<"unesi k=";
cin>>k;
cout<<"unesi p=";
cin>>p;
cout<<"suma parnih u zadanom intervalu je Слика бр.40 Извршење програма ”Najveci
S="; djelilac”

19
1.Програмирање и програмски језик Бранкица Јокић

5.3.2 While петља



 Вјежба 18.
Напишите програм:
Петља While се најчешнајчешће а)”Ispis do n” , исписује све природне бојеве,
користи ако број понављања петље није б)”Suma do n”, рачуна и исписује суму до n.
унапријед познат, него зависи о испуњењу
заданог услова. Основни облик While петље а) Улаз:1 5 Излаз: 1 2 3 4
је: б) Улаз:1 5 Излаз:S= 15

while (услов) а)
{ #include <iostream>
блок наредби #include <cstdlib>
using namespace std;
} int main()
наредба иза блока {
int i,n;
cout<<"Unesi n, n=";
Код ове врсте петљи услов се испитује cin>>n;
на почетку, а блок наредби петље се понавља i=1;
све док је услов истинит (различит од 0). Када cout<<"brojevi manji od" " " << n <<"" "
услов постане неистинит (false, 0), програм su:"<<endl;
се наставља првом наредбом иза петље. while (i<n) {
cout<<i;
Услов може бити промјењива, аритметички
i++;
израз или логички израз. }
Како се код петље while услов испитује return 0;
на почетку може се догодити да се блок }
наредби у петљи не изврши нити једном.

Слика бр.42 а)Извршење програма ”Ispis do n”

б)
#include <iostream>
#include <cstdlib>
NE using namespace std;
USLOV
int main()
{
DA int i,n,s;
blok naredbi cout<<"Unesi n, n=";
cin>>n;
i=1;
s=0;
while (i<n) {
s=s+i;
i++;
Слика бр.41 Дијаграм тока While петље }
cout<<"suma do" " "<<n<<"" "je,S="" " <<s;
Пошто петља for и while имају return 0;
испитивање услова на почетку вриједи да се }
свака програмска петља for може замијенити
петљом while и обрнуто.
Када ће се користити која петља зависи
од самог програмера и његових навика.
Слика бр.42 б)Извршење програма ”Suma do n”
20
Бранкица Јокић 1.Програмирање и програмски језик

while (i<=n) {

 Вјежба 19.
Напишите програм”Cifre broja” који i=i+2;
br=br+1;
издваја и исписује цифаре унесеног броја }
почев од јединица. cout<<"parnih brojeva ima "" " <<br;
Улаз:3025 Излаз: 5 2 0 3 return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int i,n;
cout<<"Unesi N"<<endl; Слика бр.44 Извршење програма ”Broj parnih”
cin>>n;

while (n>0) {
i=n%10;

 Вјежба 21.
Напишите програм”Ispisi i br. parnih”
n=n/10; који исписује парне бројеве и њихов број до
cout<<i<<endl; унесеног броја n.
cout<<endl; Улаз:9 Излаз: 2 4 6 8
} Улаз:9 Излаз: 4
return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int i,n,br;
cout<<" Unesi N"" " ;
cin>>n;
i=2;
Слика бр.43 Извршење програма ”Cifre broja” br=0;
while (i<=n) {
cout<<i<<endl;
i=i+2;
br=br+1;

 Вјежба 20.
Напишите програм”Broj parnih”
}
cout<<" parnih brojeva ima "" " <<br;
који броји и исписује број парних бројева return 0;
до унесеног броја n. }
Улаз:9 Излаз: 4

#include <iostream>
#include <cstdlib>
using namespace std;

int main() Слика бр.45 Извршење програма ”Ispis i br.


{ parnih”
int i,n,br;
cout<<"Unesi N"" " ; У ова два извршења програма обратите
cin>>n;
пажњу на начин исписа излазних података
i=2;
br=0; наредбом cout<<i<<endl; и cout<<i; .
21
1.Програмирање и програмски језик Бранкица Јокић

5.3.3 Do-while петља


У овој петљи блок наредби се изводи 
 Вјежба 23.
све док је услов испуњен, а извешће се бар Напишите програм”Najveci broj” који
једанпут без обзира на тачност услова. уноси бројеве све док не унесете 0 а потом
Улслов се испитује након извођења блока исписује највећи међу унесеним бројевима.
наредби петље. У овоме и јесте основна Користите петљу do while!
разлика између петљи for и while, и петље do
while. Улаз: Излаз:

#include<iostream>
#include<cstdlib>
blok naredbi using namespace std;
int main()
{
int b,max;
NE cout<<endl<<"Nakon posljednjeg broja unesi
USLOV 0."<<endl;
cout<< "Unesi prirodni broj: ";
cin>>b;
DA max=b;
do
{
if(b>max)
Слика бр.46 Дијаграм тока Do while петље {
max=b;

 Вјежба 22. }
cout<<"Unesi prirodni broj: ";
Напишите програм”Suma parnih” који cin>>b;
исписује збир парних бројева до броја n. }
Користите петљу do while! while(b>0);
Улаз:9 Излаз: 20 cout<<endl<<"Najveci broj je: "<<max<<endl;
return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int n,i,suma;
cout << "Do broja: "<<endl;
cin>>n;
i=2;
suma=0; Слика бр.47 Извршење програма ”Najveci broj”
do
{
suma+=i;
i+=2;
}while(i<=n);
cout<<"Suma: "<<suma<<endl;
У овом програму је потребно унијети n
return 0; природних бројева, број n није унапријед
} познат, већ се унос врши све док не унесете 0.
Дакле, петља ће се понављати све док
се уносе бројеви већи од 0, while(b>0);.
По уносу броја 0 петља се завршава а
Слика бр.47 Извршење програма ”Suma parnih” највећи број је снимљен у промјењивој max, како
сте и дефинисали у вашем програму.
22
Бранкица Јокић 1.Програмирање и програмски језик

5.4 НИЗОВИ Примјер једнодимензионалног низа

У програмима се често користе скупови


података истог типа који представљају niz[0] niz[1] niz[2] niz[3] niz[4]
цјелину, нпр. списак ученика једног разреда. int niz[5];
Сваком ученику на списку одговара и један niz[0]=4;
редни број, па вас наставник не мора niz[1]=9;
прозвати по имену, једноставно то може niz[2]=7;
учинити и по редном броју у списку, односно niz[3]=5; 4 9 7 5 6
у дневнику. Ваш списак ученика има и niz[4]=6;
заједничко име, број разреда и одјељење
(9.4). Код издвајања чланова низа, индекс
Такав начин организације података у члана низа може ити задан као:
програмирању омогућавају низови (поља). 1 X[9] цјелобројна константа,
Низ је коначни скуп података истог 2 X[a] цјелобројна промјењива,
типа који представља цјелину. Чине га 3 X[a*4+1] цјелобројни израз.
елементи низа.
 Положај елемента у низу се приказује
индексом, 
 Индекс је број између 0 и n-1, при чему n 
 Вјежба 24.
означава број елемената, Напишите програм”Clanovi niza” који
 Индекс може бити цјелобројна константа, исписује све елементе заданог низа.
цјелобројна промјењива или цјелобројни Улаз: int X[6] = {2,34,1,67, 99,7}
израз, Излаз:A[0]=2 A[1]=34 A[2]=1 A[3]=67 A[4]=99
 Н и з з ау з и м а ко н т и н у и р а н и с к у п A[5]=7
меморијских локација у меморији.
Низови могу бити:
1 једнодиментионални #include <iostream>
2 вишедимензионални. #include <cstdlib>

Једнодимензионални низови using namespace std;

Општи облик декларације низа је: int main ()


tip_niza_ ime_niza[dimenzija]
{
tip_niza- представља један од типова int i;
података у C-у (int, float, double,...), int A[6]={2,34,1,67,99,7};
for(i=0;i<6;i++)
ime_niza- представља идентификатор {
поља, cout<<"A["<<i<<"]="<<A[i]<<" ";
dimenzija- представља дужину поља }
(број елемената поља). cout<<endl;
return 0;
Примјери декларације поља: }

 int niz[10]; низа који садржи 10 цијелих
бројева
 char b[10]; низ b који садржи 10 знакова
 float x[20], y[10]; низ x који садржи 20
реалних бројева и низ y који садржи 10
реалних бројева. Слика бр.48 Извршење програма ”Clanovi niza”

23
1.Програмирање и програмски језик Бранкица Јокић

 Вјежба 26.



 Вјежба 25.  Напишите програм”Niz3” који исписује
Напишите програм”Niz2”који исписује n елемената заданог низа.
n елемената заданог низа . Улаз:n=5 Unos elemenata niza:5 4 9 7 22
Улаз: n=5 Излаз:5 4 9 7 22
2 7 9 6 3 #include <iostream>
Излаз: #include <cstdlib>
A[0]=2 using namespace std;
A[1]=7 int main()
A[2]=9 {
A[3]=6 int niz[100];
A[4]=3 int i,x;
cout<<"Koliko clanova niza zelite x= ";
#include <iostream> cin>>x;
#include <cstdlib> cout<<"Unos elemenata niza"<<endl;
for(i=0;i<x;i++)
using namespace std; {
cin>>niz[i];
int main () }
cout<<"Ispis elemenata niza"<<endl;
{ for(i=0;i<x;i++)
int i; cout<< " "<<niz[i]<<" " ;
int A[100],n ; return 0;
cout<<"Koliko clanova niza n="; }
cin>>n;
for(i=0;i<n;i++)
{
cin>>A[i];
cout<<endl; Слика бр.50 Извршење програма ”Niz2”
cout<<"A["<<i<<"]="<<A[i]<<"
"<<endl;
}

 Вјежба 27.
Напишите програм”Suma” који
исписује n елемената заданог низа.
cout<<endl; Улаз:n=5 Unos elemenata niza:5 4 9 7 22
return 0; Излаз:47
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int i,x,s;
cout<<" x= ";
cin>>x;
int niz[x];
cout<<"Unos elemenata niza"<<endl;
Слика бр.49 Извршење програма ”Niz2” s=0;
for(i=0;i<x;i++)
Дужина декларисаног низа се не може {
мијењати у току извођења програма, а мора cin>>niz[i];
бити већа или једнака броју чланова низа. s=s+niz[i];
Ако је декларисана дужина низа већа од броја }
cout<<"S= "<< s;
чланова којима је придружена вриједност, return 0;
преосталим се члановима придружује }
вриједност 0. Слика бр.51 Извршење програма ”Suma”
24
Бранкица Јокић 1.Програмирање и програмски језик


 Вјежба 28.

 Вјежба 29.
Напишите програм”Najmanji” који
Напишите програм”Niz4” који исписује исписује n елемената заданог низа. А потом
n елемената заданог низа. Испис низа нека провјерава и исписује најмањи члан низа.
буде сортиран растућим редослиједом. Улаз:n=5, 22 7 5 4 9
Улаз:n=5 Unos elemenata niza:22 7 5 4 9 Излаз:Najmanji je 4
Излаз:4 5 7 9 22

#include <cstdlib>
#include <cstdlib> #include <iostream>
#include <iostream> using namespace std;
using namespace std; int main()
int main() {
{ int N,i, j, min;
int i,j; cout<<"Unesi N:";
int n; cin>>N;
cout<<"Unesi broj clanova niza "; int niz[N];
cin>>n; cout<< "Unesite clanove niza "<<endl;
int niz[n]; for(i = 0; i < N; i++){
cout<<"Unesel emenata niza"<<endl; cin>> niz[i];
for (i=0;i<n;i++) }
{ min=niz[0];
cin>>niz[i]; // traženje najmanjeg
} for(i = 0; i < N; i++)
for (i=0;i<n;i++) if(niz [i] < min){
for (j=i+1;j<n;j++) min = niz[i];
if (niz[i]>niz[j]) swap (niz[i],niz[j]); }
cout<<"Niz u rastucem redosljedu"<<endl; cout<< " Najmanji je:"<<min<<endl;
for (i=0;i<n;i++) system ("PAUSE");
cout<<niz[i]<<endl; return 0;
system ("PAUSE"); }
return 0;
}

Слика бр.53 Извршење програма ”Najmanji”

У раду са низовима треба имати у виду да


C++ не провјерава границе низа приликом
приступа елементима низа. Ако се наведе
превелик или негативан индекс, преводилац
неће јавити грешку и при извршењу
Слика бр.52 Извршење програма ”Niz4” програма приступиће се меморијској адреси
која није у подручју резервисаном за низ. То
Сортирање низова представља операцију
би проузроковало неисправан рад програма.
која се ослања на интензивном размјењивању
Ако се издваја елемент с недозвољеним
позиција појединих елемената низа са циљем
индексом резултат је случајан број.
њиховог довођења у тражени поредак.
Ако се вриједност придружује елементу
Функција “swap” која врши размјену два
с недозвољеним индексом вриједност ће се
своја параметра постоји у стандардној
снимити у меморију на мјесто предвиђено за
библиотеци.
друге садржаје што би проузроковало
погрешан рад програма.
(niz[i]>niz[j]) swap (niz[i],niz[j])
25
1.Програмирање и програмски језик Бранкица Јокић

5.5 СТРИНГОВИ- РАД СА ТЕКСТОМ Како се наредбом string врши испис


само једне ријечи, постоји посебна наредба
Након бројева, стрингови су сљедећи којом се може исписати читава реченица или
најчешће кориштени типови података у дио текста.
многим програмима. getline(cin, ime_varijable);
У C++ програмском језику стринг се
посматра као низ знакова типа char с тим да
се први знак води као елемент број 0. Да би се
 Вјежба 31.
Напишите програм”Recenica” који
исписује унесени текст.
радило са стринговима потребно је додати
Улаз:Marko Markovic
библиотеку <string>. Стрингови садрже
Излаз:Marko Markovic Излаз:Marko
ASCII знакове и пишу се под наводницима.
За рад с низом знакова може се Улаз:Danas je vreo ljetni dan.
користити тип string или char. Излаз:Danas je vreo ljetni dan.
Тип string се користи у случају када се
ради с ријечима или реченицама, док тип #include <cstdlib>
char само када се ради са једним знаком. #include <iostream>
Дефинишете ли поље или низ знакова #include <string>
типа char, такође ћете моћи радити с using namespace std;
ријечима или реченицама. int main()
При раду с типом string на почетку {
програма потребно је извршити декларацију string recenica; /*deklaracija stringa (niza
znakova) za promjenjivu recenica*/
промјењиве наредбом: cout <<"Unesi recenicu = ";
getline(cin,recenica); /*unos rečenice pomoću
string ime_promjenjive; naredbe getline*/
cout <<recenica<<endl;
Наредбом string програм ће исписати system ("PAUSE");
само једну ријеч унесеног текста. return 0;
}

 Вјежба 30.
Напишите програм”Rijec” који исписује
унесени текст.
Улаз:Marko Улаз:Marko Markovic
Излаз:Marko Излаз:Marko

#include <cstdlib>
#include <iostream> Слика бр.54 Извршење програма ”Recenica”
#include <string>
using namespace std; Низ знакова се може дефинисати као
int main() једнодимензионални низ чији су елементи
{ знакови char. Знаковни низ се декларише као
string ime; /*deklaracija stringa (niza znakova)*/ и сваки једнодимензионални низ, навођењем
cout <<"Unesi svoje ime =";
типа char, имена низа и његове дужине. Код
cin >> ime;
cout <<"Tvoje ime je "<<ime<<endl;
одређивања дужине низа знакова треба
system ("PAUSE"); водити рачуна о томе да низ знакова
return 0; завршава nul знаком (\0) који заузима једно
} мјесто низа.
Низ се декларише тако да се његов садржај
наводи унутар двоструких наводника(" ").

char X[] = "Ovo je znakovni niz"


А у меморију се спрема:
Слика бр.54 Извршење програма ”Rijec” 'O' 'v' 'о' ' ' 'j' 'e' ' ' 'z' 'n' 'a' 'k' 'o' 'v' 'n' 'i' ' ' 'n' 'i' 'z' ‘\0'
26
Бранкица Јокић 1.Програмирање и програмски језик

 Вјежба 33.


Знак nul (\0) који заузима једно мјесто
низа, не треба посебно наводити, али га 
треба узети у обзир у меморији. Напишите програм”Broj slova” који
Са знаковним низовима је могуће исписује колико има сугласника а колико
изводити различите операције. За већину самогласника у унесеном тексту.
операција по стоје готове функције у
библиотеци cstring. Потребно је само Улаз: ana voli milovana
разликовати знакове од знаковних низова. Излаз:Samoglasnika:8
Suglasnika: 7

 Вјежба 32.
#include <cstdlib>
Напишите програм”Broj karaktera”
#include <iostream>
који исписује колико je укупно знакова #include <string>
(карактера) у унешеном тексту? using namespace std;
Улаз: Ana voli milovana int main()
Излаз: Ima ukupno 17 karaktera. { string recenica, r[50]; //ovdje se deklarise niz
int d,i,brsam,brsug ;
(Један размак у реченици такође предстаља getline(cin,recenica); //unos recenice
један знак или карактер). d= recenica.size(),
brsam=0;
#include <iostream> brsug=0;
#include <string> for ( i=0; i < d;i++)
using namespace std; if (recenica [i]!='a' && recenica [i]!='e' &&
int main () recenica [i]!='i' && recenica [i]!='o'
{ && recenica [i]!='u' && recenica [i]!='A'
string recenica; && recenica [i]!='E' && recenica [i]!='I'
cout <<"Unesi recenicu = "; && recenica [i]!='O' && recenica
getline(cin,recenica); [i]!='U'&& recenica [i]!=' ')brsug++;
string str (recenica); else if (recenica [i]!=' ')brsam++;
cout << "Ima ukupno " << str.length() << " cout << "Samoglasnika: " << brsam <<endl;
karaktera "<<endl; cout<<" Suglasnika: "<< brsug<< endl;
return 0; system("PAUSE");
} return EXIT_SUCCESS;
}
ИЛИ
#include <iostream>
#include <string>
using namespace std;
int main() Слика бр.56 Извршење програма ”Broj slova”
{
string s;
getline(cin, s);
cout << " Ima ukupno: " << s.size() << "
karaktera "<<endl;
return 0;
}

 Вјежба 34.

Напишите програм”Naopacke” који


унесени текст исписује наопачке..

Улаз: ana voli milovana


Излаз:anavolim ilov ana
Слика бр.55 Извршење програма ”Broj
karaktera”
27
1.Програмирање и програмски језик Бранкица Јокић

#include<iostream>
#include<string> 
 Вјежба 36.
Напишите програм”Opadajuci” који
врши испис на приказани начин:
using namespace std;
Улаз: marko
int main()
{ Излаз:marko
int duzina,i; mark
string moj_string; mar
getline (cin, moj_string); ma
duzina=moj_string.length(); m
for (i = duzina-1;i>=0;i--) #include <iostream>
cout<< moj_string[i]; #include <string>
return 0; using namespace std;
} int main()
{
int i,j;
string a;
cin >>a;
for( i=a.size();i>0;i--)
{
Слика бр.56 Извршење програма ”Naopacke” for(j=0;j<i;j++)cout << a[j];
cout << endl;
}
return 0;

 Вјежба 35.
}
Напишите програм”Novi red” који код Слика бр.57 Извршење програма ”Opadajuci”
унесене реченице сваку ријеч исписује у нови  Вјежба 37.
ред.  Напишите програм”Rastuci”који
Улаз: ana voli milovana врши испис на приказани начин:
Излаз:ana Улаз: marko
voli Излаз:marko
milovana m
#include <cstdlib> ma
#include <iostream> mar
using namespace std; mark
int main() marko
{ #include <iostream>
int d,i; #include <string>
string recenica; using namespace std;
getline (cin, recenica); int main()
d=recenica.size(); {
for (i=0; i < d;i++) int i,d, j;
if (recenica [i]==' ' && recenica [i+1]!=' ') string a;
cout << endl; cin >>a;
else cout << recenica [i]; d= i=a.size();
return 0; for( i=0;i<=d;i++)
} {
for(j=0;j<i;j++)cout << a[j];
cout << endl;
}
return 0;
}

Слика бр.58 Извршење програма ”Obrnuto”
Слика бр.56 Извршење програма ”Novi red”
28
Бранкица Јокић 1.Програмирање и програмски језик

29
1.Програмирање и програмски језик Бранкица Јокић

30
Бранкица Јокић 1.Програмирање и програмски језик


Задатак бр.1  Задатак бр.2


Учитати странице два правоугао-  Учитати три реална броја и написати
ника те испитати који од њих има већу програм који исписује да ли постоји
дијагоналу. троугао чије су то странице.

#include <cstdlib> #include <cstdlib>


#include <iostream> #include <iostream>
#include <cmath>
using namespace std;
using namespace std;
int main()
int main() {
{ float a, b, c;
float a,b,c,d,D,S; poc: cout << "Unesite 3 pozitivna realna broja
cout<<"unesi stranice prvog pravougaonika" "<<endl;
<<endl; cin >> a >>b >>c;
cin>>a>>b;
cout<<"unesi stranice drugog pravougaonika" if (a<=0 || b<=0 || c<=0) goto poc;
<< endl;
cin>>c>>d; if (a+b>c && a+c>b && b+c>a) cout <<
D=sqrt((a*a)+(b*b) ); "Postoji trougao sa datim stranicama" << endl;
S=sqrt((c*c)+(d*d) );
if (D>S) else cout << "Ne postoji trougao sa datim
{ stranicama" << endl;
cout<<"Veca je dijagonala prvog return 0;
pravougaonika"<<endl; }
}
if(S>D)
{
cout<<"Veca je dijagonala drugog
pravougaonika"<<endl;
}
return 0;
}

30
1.Програмирање и програмски језик Бранкица Јокић

 Задатак бр.3
Учитати са тастатуре координате
 Задатак бр.4
 Напишите програм који унесену ријеч
три тачке троугла у равни. Написати исписује на следећи начин:ријеч је “марко”
програм који исписује обим и површину марко
тругла користећи Heronovu формулу за арко
рачунање површине. рко
ко
о
#include <cstdlib>
#include <iostream>
#include <cmath> #include <iostream>
#include <cstdlib>
using namespace std;
using namespace std;
int main() main()
{ {
float x1, y1, x2, y2, x3, y3, a, b, c, O, P, s; int i,j,p;
string s;
cout <<"Koordinate (x, y) prve tacke : "; cin>>s;
cin >>x1 >>y1; cout<<endl;
cout << endl <<"Koordinate (x, y) druge tacke : "; int duzina=s.length();
cin >>x2 >>y2; p=0;
cout << endl <<"Koordinate (x, y) trece tacke : "; for(i=0;i<duzina;i++)
cin >>x3 >>y3; {
for (j=p;j<=duzina;j++)
a=sqrt((x2-x1)*(x2-x1)+ (y2-y1)*(y2-y1)); cout<<s[j];
b=sqrt((x3-x2)*(x3-x2)+ (y3-y2)*(y3-y2)); cout<<endl;
c=sqrt((x3-x1)*(x3-x1)+ (y3-y1)*(y3-y1)); p=p+1;
O=a+b+c; }
s=O/2; return 0;
P=sqrt(s*(s-a)*(s-b)*(s-c)); }
cout<<endl;

cout << "Obim: " << O << endl;


cout<<endl;
cout << "Povrsina: " << P << endl;

return 0;

31
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.5 Задатак бр.6


 На извор струје напона U прикључена  Воз креће из мјеста А према мјесту B
су три серијски спојена отпорника R1, R2 и брзином v1 km/h, а други, истовремено, у
R3. Потребно је израчунати укупан отпор супротном смјеру брзином v2 km/h. Мјеста
R, јачину струје I и поједине падове напона А и B су међусобно удаљена s km.Израчунати
на отпорима :U1, U2 и U3. удаљеност од мјеста А на коме ће се возови
сусрести и вријеме сусретања.

#include<iostream>
#include<cstdlib> #include <iostream>
#include<cstdlib>
using namespace std;
using namespace std;
int main()
int main()
{
float U,R1,R2,R3,R,I; {
cout<<"U (V)= ";
cin>>U; float v1, v2, udaljenost;
cout<<endl<<"R1 (om)= "; float put1, put2, vrijeme;
cin>>R1; cout<<"Upisi brzinu prvog voza (u km/h):";
cout<<endl<<"R2 (om)= "; cin>>v1;
cin>>R2; cout<<"Upisi brzinu drugog voza (u km/h):";
cout<<endl<<"R3 (om)= "; cin>>v2;
cin>>R3; cout<<"Upisi udaljenost izmedju dva mjesta
R=R1+R2+R3; (u km):";
I=U/R; cin>>udaljenost;
cout<<endl<<"Ukupni otpor R iznosi "<<R<<"
oma."<<endl; //put1/brzina1=put2/brzina2
cout<<endl<<"Jacina struje I iznosi "<<I<<" //udaljenost=put1+put2
A."<<endl;
cout<<endl<<"Pad napona U1 je "<<I*R1<<" put1=udaljenost*v1/(v1+v2);
V."<<endl; put2=udaljenost-put1;
cout<<"Pad napona U2 je "<<I*R2<<" V. vrijeme=put1/v1;
"<<endl;
cout<<"Pad napona U3 je "<<I*R3<<" V. cout<<"Susret ce se dogoditi nakon"<<put1<<
"<<endl; " km " <<endl;
return 0; cout<<"Vozovi ce se susresti nakon
"<<vrijeme<<" sati."<<endl;
} return 0;
}

32
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.7  Задатак бр.8


 На столици масе Ms kg сједи човјек 
масе Mc kg. Колики је притисак на подлогу Напишите програм који исписује
ако столица има четири ноге чији је пресјек најмањи од три унесена цијела броја.
квадрат странице x изражене у cm.

#include<iostream> #include<iostream>
#include<cstdlib> #include<cstdlib>

using namespace std; using namespace std;

int main() int main()

{ {
int a,b,c,min;
float Mc,Ms,Gs,Gc,X,F,S,s1,p; cout<<"Upisi prvi broj:";
const double g=9.81; cin>>a;
cout<<"Upisi masu stolice u kg: "; cout<<"Upisi drugi broj:";
cin>>Ms; cin>>b;
cout<<"Upisi masu covjeka u kg: "; cout<<"Upisi treci broj:";
cin>>Mc; cin>>c;
cout<<"Unesi iznos stranice kvadrata u cm: "; min=a;
cin>>X; if (b<min)
Gs=Ms*g; {
Gc=Mc*g; min=b;
//ukupna sila koja djeluje na podlogu }
F=Gs+Gc; if (c<min)
{
//povrsina presjeka jedne noge stolce min=c;
s1=X*X; }
cout<<"Najmanji uneseni broj je " <<min;
//ukupna povrsina na koju djeluje sila return 0;
S=4*s1; }

S=S/10000; //pretvaranje cm2 u m2


p=F/S; //pritisak u paskalima

cout<<"Pritisak kojim covjek mase "<<Mc<<"


kg " <<endl;
cout<< "koji sjedi na stolici mase
"<<Ms<<" kg "<< endl;
cout<<"djeluje na pod je "<<p<<" paskala ";
return 0;
}

33
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.9
 Напишите програм који за унесени
Задатак бр.10
 Напишите програм који исписује да ли
редни број мјесеца у години исписује колико је унесени број прост или сложен.
тај мјесец има дана.Уколико унесете број
ван интервала од 1 до 12 програм треба да
испише “грешка”.

#include<iostream> #include <cstdlib>


#include<cstdlib> #include <iostream>
using namespace std;
using namespace std;
int main()
{ int main()
int i; {
cout<<"Upisi redni broj mjeseca: "; int N,i,br;
cin>>i;
switch (i) cout<<"Unesi bilo koji cio broj N=";
{ cin>>N;
case 4: br=0;
case 6: for (i=1;i<=N;i=i+1)
case 9: if(N%i==0) br=br+1;
case 11: if(br<=2) cout<<"broj je prost"<<endl;
cout<<i<<". mjesec ima 30 dana."<<endl; else
break; cout<<"broj nije prost"<<endl;
case 1: system("PAUSE");
case 3: return EXIT_SUCCESS;
case 5: }
case 7:
case 8:
case 10:
case 12:
cout<<i<<". mjesec ima 31 dan."<<endl;
break;
case 2:
cout<<i<<". mjesec ima 28 dana (ili 29 ako je
godina prestupna).";
break;
default:
cout<<"Greska!";
cout<<" Redni broj mjeseca moze biti od 1 do
12.";
}
return 0;
}

34
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.11
 Напишите програм који испитује да
Задатак бр.12
 Написати програм који исписује све
ли је унесени природни број савршен. Број је савршене бројеве из интервала од k до p.
савршшен ако је једнак збиру својих
дјелилаца осим самог себе.

#include<cstdlib> #include<cstdlib>
#include<iostream> #include<iostream>

using namespace std; using namespace std;

int main() int main()

{ {
int br,i,k,p, zbir;
int brojac,zbir,N; cout<<"Unesi brojeve k i p ";
cout<<"Upisi prirodni broj: "; cin>>k>>p;
cin>>N; cout<<"Savrseni brojevi su: ";
zbir=0; for(br=k;br<=p;br++)
for (brojac=1;brojac<=(N-1);brojac++) {
{ zbir=0;
if(N%brojac==0) for (i=1;i<=(br-1);i++)
{ {
zbir=zbir+brojac; if(br%i==0)
} zbir=zbir+i;
} }
if(zbir==N) if(zbir==br)
cout<<"Broj "<<N<<" je cout<<br<<" ";
savrsen."<<endl; }
else return 0;
cout<<"Broj "<<N<<" nije
savrsen."<<endl; }
return 0;

35
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.13
 Написати програм који исписује све
Задатак бр.14
 Написати програм који исписује колико
четвероцифрене бројеве чији је произвид цифара има унесени вишецифрени број.
цифара једнак унесеном броју S, S<50.

#include<cstdlib> #include<cstdlib>
#include<iostream> #include<iostream>
using namespace std; using namespace std;

int main() int main()


{
int i,pom,j,d,s,S,t; {
poc: cout<<"Unesi neki prirodan broj int br,b;
manji od 50"<<endl; cout<<"Upisi prirodni broj: ";
cin>>S; cin>>b;
if(S>50) goto poc; br=0;
cout<<"Brojevi ciji je proizvod cifara do
"<<S<< " su: "; {
for(i=1000;i<=9999;i++) b=b/10;
{ br=br+1;
pom=i; }
j=pom%10; while(b>0);
d=(pom/10)%10; cout<<"Broj cifara: "<<br<<endl;
s=(pom/100)%10; return 0;
t=(pom/1000)%10;
if(j*d*s*t==S) }
cout<<endl<<i;
}
return 0;
}

36
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.15
 Написати програм који исписује
Задатак бр.16
 Написати програм који исписује суму и
највећи од унесених природних бројева. аритметичку средину унесених природних
Унос бројева ће се изводити све док не бројева. Унос бројева ће се изводити све док
унесте број 0 (бројеви морају бити из скупа не унесте број 0 (бројеви морају бити из
N). скупа N).

#include<cstdlib> #include<cstdlib>
#include<iostream> #include<iostream>
using namespace std; using namespace std;

int main() int main()

{ {

2 int b,max; int b,br,S;


upis:cout<<endl<<"Upisi prirodni broj: ";
upis:cout<<endl<<"Upisi prirodni broj: ";
cin>>b; cin>>b;
if (b<=0) if (b<=0)
goto upis; goto upis;
S=0;
max=b; br=0;
while(b>0)
while(b>0) {
{
S=S+b;
if(b>max) br=br+1;
{ cout<<endl<<"Upisi prirodni broj: ";
max=b; cin>>b;
}
cout<<"Upisi prirodni broj: "; }
cin>>b; cout<<endl;
} cout<<"Suma unesenih brojeva je: " <<S;
cout<<endl<<"Najveci broj je: cout<<endl;
"<<max<<endl; cout<<endl<<"Aritmeticka sredina je:
"<<S/br<<endl;
return 0;
return 0;
}
}

37
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.17 Задатак бр.18


 Написати програм који рачуна и  Написати програм који исписује N
исписује средњу оцјену успјеха ученика.Унос чланова Fibonaccijevog низа.Fibonaccijev
бројева ће се изводити све док не унесте низ је низ у коме су прва два члана један, а
број 0.Уколико се унесе број мањи од 0 или сваки следећи члан је збир претходна два
већи од 5 програм исписује поруку да је унос члана низа (1,1,2,3,5,8,13,21...)
погрешан.

#include<cstdlib> #include<cstdlib>
#include<iostream> #include<iostream>
using namespace std;
using namespace std;
int main() int main()
{
cout<<"Program racuna srednju ocjenu uspjeha {
ucenika."<<endl; int prvi,drugi,treci,i,N;
cout<<"Nakon posljednje ocjene unosi se
0."<<endl; cout<<" Fibonaccijev niz."<<endl;
float b,suma,br;
suma=0; prvi=1;
br=0; drugi=1;
do
{ cout<<"Unesi ocjenu: "; upis:cout<<"Upisi koliko clanova niza zelis: ";
cin>>b; cin>>N;
if(b==1) if(N<2)
{ cout<<"Negativan uspjeh."<<endl;
goto kraj; } {
else if(b<0) cout<<"Broj clanova niza mora biti
{ cout<<"Pogresan unos."<<endl; veci ili jednak 2"<<endl;
goto kraj;} goto upis;
else }
{suma=suma+b; cout<<prvi<<" "<<drugi;
br=br+1;} for(i=3;i<=N;i++)
} {
while(b>0); treci=prvi+drugi;
br=br-1; cout<<" "<<treci;
cout<<"Srednja ocjena uspjeha je " <<suma/br prvi=drugi;
<<endl; drugi=treci;
kraj:return 0; }
} cout<<endl;

return 0;
}

38
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.19
 Написати програм који исписује
Задатак бр.20
 Написати програм који формира и
највећи заједнички дјелилац два природна исписује природан број од унесених цифара
броја. Највећи заједнички дјелилац два почевши од цифре највеће тежинске
броја је највећи број којим су дјељива оба вриједности. Унос цифара се прекида
унесена броја. уношењем цифре мање од 0 или веће од 9.

#include<cstdlib> #include<cstdlib>
#include<iostream> #include<iostream>
using namespace std;
using namespace std;
int main()
int main()
{ {
int A,B,manji,br,dj;
unos:cout<<"Unesi prvi broj: "; cout<<"Program ispisuje prirodni broj.";
cin>>A;
cout<<"Unesi drugi broj:"; int zn,br;
cin>>B;
if((A<=0)||(B<=0)) br=0;

{ cout<<endl<<"Upisi cifru: ";


cout<<"Treba unijeti brojeve vece
od 0"<<endl; cin>>zn;
goto unos;
} while((zn>=0)&&(zn<=9))
dj=1;
{
if(A<B)
{ br=br*10+zn;
manji=A;
} cout<<"Upisi cifru: ";
manji=B;
cin>>zn;
for(br=2;br<=manji;br++)
{ }
if((A%br==0)&&(B%br==0))
dj=br; cout<<"Broj sastavljen od zadanih cifri je "
} <<br<<endl;

cout<<"Najveci djelilac brojeva "<<A<<" i return 0;


"<<B<<" je "<<dj<<endl;
}
return 0;
}

39
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.21 Задатак бр.22


 Написати програм који за унесени  Написати програм који учитава низ
природан број N испитује да ли је “добар”. од n бројева а потом исписује прво бројеве
Број је “добар” ако је свака његова цифра на парним позицијама а онда на непарним
већа од збира цифара који се налази десно позицијама.
од ње. 9620 је “добар” број.

#include<iostream> #include <iostream>


#include<cstdlib> #include <cstdlib>

using namespace std; using namespace std;

int main() int main()


{
{ int n,i;
int n,s,c,x=1;
cout<<"Uneiste broj: "; cout<<"unesi broj clanova niza ";
cin>>n; cin>>n;
s=n%10; int niz[n];
n=n/10;
do cout<<"Unesi brojeve: "<<endl;
{
for( i=0; i<n; i++)
c=n%10; cin>>niz[i];
x=c>s; cout<<" ispis brojeva na neparnim pozicijama"
s=s+c; <<endl;
n=n/10; cout<<endl;

} for(int i=0; i<n; i=i+2)


cout<<niz[i]<<" "<<endl;
while (n && x); cout<<" ispis brojeva na parnim pozicijama"
<<endl;
if (x)
cout<<"Broj je dobar "<<endl; for( i=1; i<n; i=i+2)
else cout<<"Broj nije dobar "<<endl; cout<<niz[i]<<" "<<endl;
cout<<endl;
return 0;
return 0;
} }

40
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.23 Задатак бр.24


 Написаши програм који учитава n  Написати програм који исписује
бројева а затим исписује збир сусједних највеци заједницки дјелилац два броја
бројева. користећи Еуклидов алгоритам.

#include <iostream> #include <cstdlib>


#include <cstdlib> #include <iostream>

using namespace std; using namespace std;

int main() int main()


{ {
int a,b;
int n,i, niz[n]; cout<<"Unesu broj a: "<<endl;
cout<<"Koliko brojeva unosite "; cin>>a;
cin>>n; cout<<"Unesu broj b: "<<endl;
cout<<"Unesi brojeve: "<<endl; cin>>b;
while (a!=b)
for(int i=0; i<n; i++) {
if (a>b)
cin>>niz[i]; {
cout<<"Ispis zbirova susjednih brojeva"<<endl; a-=b;
}
for( i=0; i<n; i++) if (b>a)
{
cout<<niz[i]+niz[i+1]<<" "; b-=a;
cout<<endl; }
}
return 0; cout<< "Najveci zajednicki djelilac je : "<<
a<<endl;
}
return 0;
}

41
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.25 Задатак бр.26


 У једној гајби се налази N kg јабука и M  Ако са улаза учитамо природан
kg крушака (N и M су природни бројеви). троцифрен број n , написати програм којим
Написати програм који за дате вриједности N се одређује најмањи могући троцифрен број
и M исписује најмањи могући број потребних m од цифара броја n.
гајби у које се могу препаковати јабуке и Примјер:n=312 m=123
крушке тако да у свакој гајби буду исте масе а
да јабуке и крушке буду спаковане одвојено.
#include <cstdlib>
#include <cstdlib> #include <iostream>
#include <iostream>
using namespace std;
using namespace std;
int main()
int main() {
{ int n,a,b,m,c;
int n,m,nzd,a,b,i;
cout<<"unesi neki trocifren prirodan broj ";
cout<<"Unesu kolicinu jabuka N= "<<endl; cin>>n;
cin>>n; a=n%10;
n=n/10;
cout<<"Unesu kolicinu krusaka M= "<<endl; b=n%10;
cin>>m; c=n/10;

a= n;b= m; if (a<b)swap (a,b);


nzd=1;i=2;
if ((a!=0)&&(a<c))swap (a,c);
while ((a>=i)&&(b>=i))
{ if ((b!=0)&&(b<c))swap (b,c);
if ((a%i==0)&&(b%i==0))
{ m=a+b*10+c*100;
nzd=nzd*i;
a=a/i; b=b/i; cout<<"Najmanji trocifren broj je : "<<m
} <<endl;
else i++; return 0;
} }
cout<< "Potrebno je : "<<n/nzd+m/nzd<<"
gajbi"<<endl;

return 0;
}

42
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.27 Задатак бр.28


 Са улаза учитати n елемената низа  Написати програм који исписује све
(n<=100). Написати програм који исписује бројеве од 1 до n (n<10 000), са особином да
трансформисани низ на начин да, уколико им је запис једнак запису последњих цифара
су два сусједна члана низа једнака онда се њиховог квадрата.
сљедећи увећава за 1. Нпр. 62=36 јер је 6 на 2=36
Примјер:n=7, niz:4 5 5 6 3 3 4 252=625 јер је 25 на 2=625
Након трансформације:4 5 6 7 3 4 5

#include <iostream> #include<iostream>


#include <cstdlib> #include<cstdlib>

using namespace std; using namespace std;


int main()
int main() {
int i,n,b,c;
{ cout<<"Unesite n: ";
int i,N,niz[100]; cin>>n;
//unos broja clanova niza cout<<1<<" "<<1<<endl;
cin>> N; for (i=2; i<=n; i++)
{
for(i=0;i<N;i++) b=i*i;
if (i/10==0)
cin>>niz[i]; {
c=b%10;
for (i=0;i<N-1;i++) if (i==c) cout<<i<<" "<<i*i<<endl;}
if (i/100==0)
if( niz[i]==niz[i+1]) niz[i+1]++; {
c=b%100;
for( i=0;i<N;i++) if (i==c) cout<<i<<" "<<i*i<<endl;}
if (i/1000==0)
cout<< " "<<niz[i]<<" "; {
c=b%1000;
return 0; if (i==c) cout<<i<<" "<<i*i<<endl;}
} }
return 0;
}

43
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.29 Задатак бр.30



 Написати програм који за унесених n 
На писати програм којим се исписују
чланова низа исписује најмањи члан и све могућности да при једном бацању три
позицију на којој се налази. коцкице збир бројева буде дати број S.
S=5, Излаз:1 1 3, 1 2 2

#include <cstdlib> #include <iostream>


#include <iostream> #include <cstdlib>

using namespace std; using namespace std;

int main() int main()


{ {
int n,poz; int a,b,c,S;
cout<<"Koliko clanova niza "; cout<<"Unesi sumu S= ";
cin>>n; cin>>S;
int niz[n],i; cout<<"Ispis je "<<endl;
for(a=1;a<=6;a++)
for (i = 0; i < n;++i) for(b=a;b<=6;b++){
{ c=S-a-b;
cout<<"Unesite "<<i+1<< " broj: "; if (( c>0)
cin>>niz[i]; &&(c<=6)&&(c>=b)&&(c>=a))
}
int min; cout<<a<<" "<<b<<" "<< c<<endl;}
min = niz[0];
for (i = 0; i < n;++i) return 0;
{ }
if (niz[i]<min)
{
min = niz[i];
poz = i+1;
}
}
cout<<"Najmanji clan niza je "<<min<<" na
poziciji "<<poz<<endl;

return 0;
}

44
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.31 Задатак бр.32



   Вриједни Хобит Житко Цвеклић је 
 Хобити пуно пажње поклањају уређењу
ријешио да у својој башти све припреми за својих домова које праве испод земље. Сваких
садњу црвеног парадајза. Он у својој башти већ пар година Житко Цвеклић мијења плочице у
има на једној правоуганој парцели плави својој кухињи. Његова кухиња је правоугаоног
парадајз, а Хобити вјерују да црвени и плави облика, а плочице које је купио су квадратне.
парадајз морају да буду одвојени, тј. да не Међутим, врло лако може да се деси да
смију да се саде један поред другог. Да би све одређен број плочица Житко мора да пресјече
припремио, он је рјешио да ограничи канапом да би покрио цио под. Он то веома пажљиво
правоугаони дио око парцеле са плавим ради. На свакој плочици коју сјече обљежи
парадајзом, ван кога може да се сади цвени дио који му треба, пресјече плочицу, а
парадајз. Међутим, ту је Житко наишао на остатак баци. Написати програм који ће да
проблем и никако не може да израчуна колико помогне Житку да израчуна колико плочица
му канапа треба да би означио парцелу. он мора да исјече за своју кухињу, ако се у
Помозите Житку и напишите програм који за програму уносе димензије кухиње D и S и
унијете димензије парцеле са плавим димензија плочице P, све у центиметрима.
парадајзом D и S у метрима и растојање Улаз: D =310 S = 270 P = 20
између парцела са црвеним и плавим парадајзом Излаз: 29
R, такође у метрима, израчунава колико је
метара канапа Житку потребно. #include <cstdlib>
#include <iostream>
Улаз: D = 5 S = 7 R = 2 Излаз: 40
using namespace std;
#include <cstdlib> int main()
#include <iostream> {
int d,s,p,k;
using namespace std; cout<<"Unesite duzinu kuhinje D: ";
cin >> d ;
int main() cout<<"Unesite sirinu kuhinje S: ";
{ cin>>s;
int d,s,r,k,d1,s1; cout<<"Unesite dimenzije plocice P: ";
cout<<"Unesite dimenzije parcele s plavim cin >> p;
paradajzom, D = "; cout<<" Zitko mora sjeci : ";
cin >> d; k=0;
cout<<"Unesite dimenzije parcele s plavim if (d%p!=0 && s%p==0) k=s/p;
paradajzom, S = ";
if (d%p==0 && s%p!=0) k=d/p;
cin >> s;
if (d%p!=0 && s%p!=0) k=d/p+s/p+1;
cout<<"Unesite rastojanje izmedju parcela r= ";
cout << k <<" plocica"<<endl;
cin >> r;
return 0;
d1=2*r+d;
}
s1=2*r+s;
k=2*(d1+s1);
cout<<"Zitku je potrebno "<<k<<" metara
kanapa"<<endl;
return 0;
}

45
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.33 Задатак бр.34


Житко Цвеклић је ријешио да гаји грожђе,  На такмичењу младих извиђача тимови
али пошто нема искуства у томе, одлучио је увијвек рјешавају неколико различитих
да ове године засади само један ред лозе. задатака. Први задатак је био да направе
Поставио је шипке забодене у земљу и између висећи мост.Мост треба да се састоји од два
њих је развукао жицу. Међутим, шипке није паралелна канапа која су везана за обале.
постављао на једнаким растојањима, па се Трећи канап треба да се чворовима причврсти
жица на многим мјестима опустила и виси. за ова два канапа у цик-цак тако да формира
Да би поправио ствар, ријешио је да између одређен број троуглова једнаких страница.
већ постављених шипки постави нове. Написати програм који ће да помогне младим
Житков први комшија Гроздић већ годинама извиђачима да израчунају колико чворова
гаји грожђе и тек када је видио шта је укупно треба направити, ако се зна да треба
Житко направио и шта је намјерио да уради, формирати Т троуглова.
рекао му је да шипке не треба да буду превише Улаз: Т = 4 Излаз: 6
близу. Житко је ријешио да уради сљедеће:
постављене шипке неће да дира, нове шипке
које убацује поставиће тако да растојање не
буде мање од оног што му је Гроздић рекао и
још између раније постављених шипки неће
убацивати више од три нове. Написати
програм у коме се уноси колико треба да буде #include <cstdlib>
минимално растојање D између двије шипке, #include <iostream>
затим број шипки N које је Житко поставио
раније, а потом се уносе редом растојања R using namespace std;
за сваке двије сусједне шипке. Програм треба
int main()
да испише колико је Житку потребно нових
{
шипки. int t,c;
Улаз: D = 2 N = 5 R: 8 1 16 Излаз: 7 cout<<"Unesite br trouglova T: ";
cin >> t;
#include <cstdlib> c=t+2;
#include <iostream> cout << " Trebaju napraviti " <<c<<" cvorova";
using namespace std;
int main() return 0;
{ }
int d,n,i,k,r;
cout<<"Unesite minimalno rastojanje D: ";
cin >> d;
cout<<"Unesite broj sipke N: ";
cin >> n;
cout<<"Unesite postojeca rastojanja iymedju
sipki R: "<<endl;
k=0;
for(i=1;i<n;i++){
cin >> r;
if (r/d>3) k=k+3;
else if (r>d) k=k+r/d-1; }
cout<<"Zitku je potrebno " << k << " novih
sipki"<<endl;
return 0; }

46
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.35 Задатак бр.36


 Једна од игара је игра пoгађања. Екипа  На падини брда се налази линија на којој
има задатак да се распореди на обојене је за сваког од такмичара обезбјеђено мјесто
блокове и да унапријед погоди боју блока на за заставицу његове екипе. Један дио
који ће стати последњи такмичар из екипе. такмичара до циљне линије долази трчећи низ
Такмичари на блокове стају, почевши од брдо и за њих важи да им ако су на K метара
првог, један за другим не остављајући празне од циљне линије треба K секунди (њихова
блокове између. Блокови су поређени тако да удаљеност ће бити задата позитивним
се на почетку налази Z блокова жуте боје, бројевима). Други дио такмичара до циљне
затим N блокова наранчасте боје и потом C линије долази трчећи уз брдо, а за њих важи
блокова црвене боје. Након тога се ова шема да им ако су на K метара од циљне линије
понавља. Када се такмишари поређају на треба 2·K секунди (удаљеност од циљне
блокове и ако екипа добро погоди боју блока, линије ових такмичара ће бити задата
тада ако је последњи такмичар стао на негативним бројевима). Написати програм у
блок наранчасте боје екипа добија 10 поена, коме се уноси број такмичара N, а затим за
ако је стао на блок црвене боје 7 поена, а ако сваког такмичара удаљеност од циљне линије
је стао на блок жуте боје 2 поена. Написати у неком тренутку. Програм треба да испише
програм у коме се уносе вриједности Z, N, C колико је секунди потребно, од посматраног
и број такмичара K у екипи, а програм тренутка, да сви такмичари пободу своје
исписује колико је поена та екипа зарадила заставице.
ако је погодила боју. Улаз: N = 5 Т: 2 -1 -3 3 4 Излаз: 6
Улаз: Z = 7 N = 4 C = 5 K = 25 Излаз: 10

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
#include <cstdlib> main()
#include <iostream> {
using namespace std; int i,n,t,max;
int main() cout<<"Unesite br takmicata N: ";
{ cin >> n;
int z,n,c,k,m,r; max=0;
cout<<"Unesite broj blokova Z,N,C: "; for(i=0;i<n;i++) {
cin >> z >> n >> c; cout<<"Unestite vrijeme "<< i+1 <<"
cout<<"Unesite broj takmicara K: "; takmicara T: ";
cin >> k; cin >> t;
m=k%(z+n+c); if (t<0) t=2*abs(t);
if ((m>=1) && (m<=z)) r=2; if (t>max) max=t;
if ((m>z) && (m<=z+n)) r=10; }
if ((m==0) || (m>z+n)) r=7; cout<<endl;
cout<<"Broj osvojenih poena:"; cout << " Potrebno vrijeme je: "<< max<<"
cout << r ; sekundi" ;
return 0; return 0;
} }

47
Бранкица Јокић 1.Програмирање и програмски језик

Задатак бр.37
 Три пријатеља Марко, Јанко и Петар  Задатак бр.38
Написати програм којим се одређују
треба да се нађу на неком мјесту. Договорили природни бројеви који представљају
су се да ко први дође 10 минура чека на другог, дужине страница (изражене у cm)
па ако овај дође чекају још 5 минута трећег. правоугаоника најмањег обима чија је
Написати програм који учитава времена површина (изражена у cm2) једнака датом
(0<=sat<=23,0<=minut<=59) доласка редом природном броју P.
Марка, Јанка и Петра и даје одговор на P=20, странице 4, 5
питање да ли су се срела ова три пријатеља.
Дата времена су исправна, и представљају
времена у једном дану. #include <cstdlib>
Примјер: 13.05, 13.09, 12.55 срели су се. #include <iostream>

using namespace std;


#include <cstdlib> int main()
#include <iostream> {
int a,am,b,bm,o,om,P;
using namespace std; cout<<"Unesi povrsinu pravougaonika P: ";
int main() cin>>P;
{ bm=P;
int h1,m1,h2,m2,h3,m3,v1,v2,v3; am=1;
cout<<"Unesi Markovo vrijeme dolakska: ";
cin>>h1>>m1; om=2*(am+bm);
cout<<"Unesi Jankovo vrijeme dolakska: "; for(a=1;a<P/2;a++){
cin>>h2>>m2; if(P%a==0);{
cout<<"Unesi Petrovo vrijeme dolakska: "; b=P/a;
cin>>h3>>m3; o=2*(a+b);
v1 = h1 * 60 + m1; if(o <om && P==a*b)
v2 = h2 * 60 + m2; {am=a;bm=b;om=o;}
v3 = h3 * 60 + m3; }
if( v2 > v1)swap (v2,v1); }
if ( v3 > v2)swap (v3,v2); cout<<"a= "<<am<<" "<<"b= "<<bm<<endl;
return 0;
if ((v2 - v3) <=10 && (v2 - v1)<=5) }
cout<<"sreli su se"<<endl;

else cout<<"nisu se sreli"<<endl;

return 0;
}

48
1.Програмирање и програмски језик Бранкица Јокић

Задатак бр.39 Задатак бр.40


 За дати природан број N чије су  Двије тачке реалне праве називамо
цифре уређене у неопадајући поредак од блиским ако растојање између њих не прелази
цифре најмање тежине ка цифри највеће 10. Написати програм којим се учитавају
тежине и дату цифру c, написати програм координате тачака, док су све међусобно
којим се формира број m настао уметањем блиске. Програм треба да испише број
цифре c у броју N тако да се не наруши учитаних тачака.
неопадајући поредак цифара. Примјер:3 -4 5 0 7 број тачака је 5
Примјер:N=953, c=5 broj:9553

#include <cstdlib>
#include <cstdlib> #include <iostream>
#include <iostream>
using namespace std;
using namespace std; int main()
int main() {
{ int n,min,max,x;
long n,m,c,d,i;
cout<<" Unesite prirodan broj N: "; cout<<"Unesite poz tacaka: "<<endl;
cin>>n; cin>>min>>x;
cout<<" Unesite cifru c: "; if (x<min){
cin>>c; max=min; min=x;
i=1; }
m=0; else max=x;
d=n%10; n=2;
while((n>0)&&(d<c)){ while (max-min<=10){
n=n/10; cin>>x;
m=m+i*d; if(x<min) min=x;
i=i*10; if(max<x) max=x;
d=n%10; n++;
} }
m=m+i*c; cout<<"Unijeto je "<<n<<
m=n*i*10+m; "tacaka"<<endl;
cout<<" Тrazeni broj je : "<<m<<endl;
return 0;
} return 0;
}

49
Бранкица Јокић 1.Програмирање и програмски језик

наставља се....

50

You might also like