Top Banner
PANEVROPSKI UNIVERZITET APEIRON FAKULTET INFORMACIONIH TEHNOLOGIJA P o s l o v n a i n f o r m a t i k a Predmet Viši programski jezici i RAD alati-programiranje u C++ „Rješeni zadaci iz programskog jezika C++(seminarski rad) Predmetni nastavnik Prof. dr Zoran Ž. Avramovid, dipl. inž. Student Borka Pavlovid Index br. 184-13/VNI-s Banja Luka, januar 2014.
44

Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u c++

Jul 12, 2016

Download

Documents

.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

PANEVROPSKI UNIVERZITET APEIRON

FAKULTET INFORMACIONIH TEHNOLOGIJA

P o s l o v n a i n f o r m a t i k a

Predmet

Viši programski jezici i RAD alati-programiranje u C++

„Rješeni zadaci iz programskog

jezika C++”

(seminarski rad)

Predmetni nastavnik

Prof. dr Zoran Ž. Avramovid, dipl. inž.

Student

Borka Pavlovid

Index br. 184-13/VNI-s

Banja Luka, januar 2014.

Page 2: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

2

Sadržaj

UVOD -------------------------------------------------------------------------------------------------- 4

1 . UVOD U C++ -------------------------------------------------------------------------------------- 5

1.1. Biblioteke ------------------------------------------------------------------------------------------------------------------------ 5

1.2. Tipovi podataka ---------------------------------------------------------------------------------------------------------------- 5

1.3. Operatori ------------------------------------------------------------------------------------------------------------------------- 6

2. PRVA GRUPA ZADATAKA ------------------------------------------------------------------- 7

Primjer 1. Površina i zapremina valjka --------------------------------------------------------------------------------------------- 9

Primjer 2. Stepenovanje broja ------------------------------------------------------------------------------------------------------ 10

Primjer 3. Heronov obrazac----------------------------------------------------------------------------------------------------------- 10

Primjer 4. Izbor aritmetičke operacije --------------------------------------------------------------------------------------------- 12

Primjer 5. Razdvajanje broja na cifre --------------------------------------------------------------------------------------------- 13

Primjer 6. Udaljenost tačaka u koordinatnom sistemu ---------------------------------------------------------------------- 14

Primjer 7. Ispis brojeva intervala unazad ----------------------------------------------------------------------------------------- 16

Primjer 8. Tablica množenja ---------------------------------------------------------------------------------------------------------- 17

Primjer 9. Kockice ----------------------------------------------------------------------------------------------------------------------- 18

Primjer 10. Novi broj od cifara ------------------------------------------------------------------------------------------------------- 19

DRUGI NIVO ZADATAKA INTERVALI I STRINGOVI --------------------------------------- 20

Primjer 11. Sabiranje stringova ----------------------------------------------------------------------------------------------------- 20

Primjer 12. Pretraživanje stringa --------------------------------------------------------------------------------------------------- 21

Primjer 13. Umetanje stringa u string --------------------------------------------------------------------------------------------- 22

Primjer 14. Palindrom ------------------------------------------------------------------------------------------------------------------ 23

Primjer 15. Brojevi djeljivi sa svojim ciframa ----------------------------------------------------------------------------------- 24

Primjer 16. Meta ----------------------------------------------------------------------------------------------------------------------- 25

Primjer 17. Vekne hljeba -------------------------------------------------------------------------------------------------------------- 26

Primjer 18. Prost broj ------------------------------------------------------------------------------------------------------------------- 27

Page 3: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

3

Primjer 19. Cifre petocifrenog broja----------------------------------------------------------------------------------------------- 28

Primjer 20. Broj 32759 ----------------------------------------------------------------------------------------------------------------- 29

TREĆI NIVO ZADATAKA ------------------------------------------------------------------------- 30

Primjer 21. Fibonačijev niz ----------------------------------------------------------------------------------------------------------- 30

Primjer22. Aritmetička sredina niza ----------------------------------------------------------------------------------------------- 31

Primjer23. Sortiranje niza u opadajudem redoslijedu ------------------------------------------------------------------------ 32

Primjer 24. Transformacija niza. ---------------------------------------------------------------------------------------------------- 33

Primjer 25. Formiranje tredeg niza ------------------------------------------------------------------------------------------------- 34

Primjer 26. Proizvod matrice sa skalarom ---------------------------------------------------------------------------------------- 35

Primjer 27. Proizvod dvije matrice ------------------------------------------------------------------------------------------------- 37

Primjer 28. Članovi na glavnoj dijagonali matrice ----------------------------------------------------------------------------- 39

Primjer 29. Maximalan član od minimalnih po redovima matrice -------------------------------------------------------- 40

Primjer 30. Proizvoljna matrica pomnožena sa najvedim članom --------------------------------------------------------- 42

LITERATURA: -------------------------------------------------------------------------------------- 44

Page 4: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

4

UVOD

Programski jezik C++ je viši programski jezik koji je prvobitno razvijen u Bell Labs

(laboratoriji telekomunikacione kompanije Bell) za objektno orjentisano programiranje

tokom 1980 tih kao proširenje programskom jeziku C, p a mu je originalno ime bilo „C sa

klasama“ (engl. C with classes). Zbog velike potražnje za objektno orijentisanim jezicima i

sposobnostima, standard za programski jezik C++ ratifikovan je1998.

Za potrebe svog seminarskog rada koristim programskookruženje DEV C++. Za ovo

okruženje sam se odlučila jer je malih dimenzija a posjeduje sve osobine koje su potrebne

za izradu ovog seminarskog rada, besplatan je i koristim ga u školi.

Seminarski rad sadrži sljedeće cjeline:

1. Uvod u c++ ( billioteke, tipovi podataka u c++, operatori)

2. Prva grupa zadataka (naredba uslovnog prelaska (if i switch-case) do-while petlja)

3. Druga grupa zadataka (intervali, stringovi)

4. Treća grupa podataka (nizovi, matrice)

Naredbe programskog jezika visokog nivoa su bliske engleskom jeziku i struktuirane tako

da odgovaraju načinu razmišljanja čovjeka-programera. Slično prirodnim jezicima, svaki

programski jezik ima skup strogo definisanih pravila kojim se opisuje postupak gradjenja

programa. Sintaksnim pravilima se definiše način formiranja korektnih konstrukcija jezika,

dok semantika određuje njihovo značenje.

Page 5: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

5

1 . Uvod u c++

1.1. Biblioteke

Jedna od specifičnosti c++ jezika jeste rad sa bibliotekama. Biblioteke su organizovane tako

da sadrže skup funkcija I mi pozivamo biblopteke prema potrebama za tim funkcijama.

Uključivanje biblioteka radi se prije prelaska na glavni dio programa. Biblioteka se

uključuje naredbom #include<ime_biblioteke>

1. #include <cstdlib> -skup naredbi koji nam omogućuje komunikaciju sa programom

2. #include <iostream>-biblioteka standardnih naredbi

3. #include<string>-biblioteka koja sadrži funkcije za rad sa stringovima

4. #include<cmath>-biblioteka sa matemetičkim funkcijama

Ideja rada sa biblotekama je da se program ne opterećuje bespotrebno objektima koji se

neće koristiti unutar programa

Nakon definisanja biblioteka, slijede dva reda

1. using namespace std; -naredba kojom govorimo programu da ćemo koristiti

standardne naredbe i zbog mogućnosti da se u dvije različite biblioteke nađu dvije

naredbe istog naziva, a različite namjene.

2. int main() –ova naredba označava početak glavnogdijela programa koji se nalazi

unutar vitičastih zagrada u tzv., tijelu programa

Osnovne naredbe koje omogućavaju pisanje koda su:

1. { - označava početak pisanja koda, kao i početak tijela neke naredbe npr for, while,

if

2. cout<<“ ” - cout –naredba omogućava isps na ekran monitora

3. endl-naredba označava prelazak u novi red

4. cin>>- naredba omogućava prijem varijabe sa tastature

5. system("Pause")- naredba omogućava da program stane i čeka dok se ne pritisne

neki taster

6. return EXIT_SUCCESS -označava kraj programa

7. }- označava kraj pisanja koda ili kraj tijela naredbe

1.2. Tipovi podataka

Tip podatka je skup vrijednosti koje imaju zajedničke karakteristike. Najznačajnija od njih

je skup operacija koje su definisane nad vrijednostima tog tipa. U većini jezika za

programiranje susreću se sledeći tipovi podataka: numerički (celobrojni i realni), logički i

znakovni. Podaci bilo kojeg tipa mogu biti konstante ili promjenljive.

Konstante su određene vrednosti na koje se ne mijenjaju tokom izvršavanja programa.

Zadaju se eksplicitno, pisanjem konkretne vrijednosti, npr. kada koristimo konstantu pi

moramo je tako i definisati const pi=3.14.

Page 6: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

6

Vrijednost promjenljivih se mijenja tokom izvršavanja programa. Promjenljiva je određena

svojim tipom i imenom. Npr. int a određuje da se vrijednost promjenljive smješta u a a int

označava tip promjenljive nad kojom će se moći izvršiti operacijeiz skupa cijelih brojeva.

U tabeli je dat prikaz tipova podataka:

Tip podatka Ključna riječ Prostor u

bajtima

Raspon vrijednosti

Character char 1 -128 do 127

Integer int 2 -32768 do 32767

Short integer short 2 -32768 do 32767

Long integer long 4 -2147483648 do 2147438647

Unsigned

character

unsigned char 1 0 do 255

1.3. Operatori

C++jezik koristi sledeće operatore: dodeljivanja, aritmetički, poređenja, inkrementiranja i

dekrementiranja, logički, nad bitovima, pomeranja, sizeof i adresa od i posredni pristup.

1. „=“ je operator dodjele vrijednosti promjenljive,npr.

Promjenljivoj a tipa integer dodjeljujemo vrijednost 39: int a; a=39;

Promjenljivoj znak tipa char dodjeljujemo vrijednost h: char znak; znak=”h”

2. Aritmetički operatori:

3. Operatori poređenja

Ovi operatori daju reziltat daju logičku vrijednost tačno ili netačno

Operator Opis

== Jednako

!= Nije jednako

> Veće

< Manje

>= Veće ili jednako

<= Manje ili jednako

Operator Opis Primjer

+ Sabiranje 2+2=4

- Oduzimanje 54- 2=52

* Množenje 33*3=99

/ Dijeljenje 15 / 5 = 3

% Moduo 23 % 4 =5

Page 7: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

7

4. Operatori inkrementiranja i dekrementiranja

Inkrementiranje predstavlja uveććanje varijable za 1, a dekrementiranje umanjivanje

varijable za 1. Ovi operatori mogu biti prefiksni i postfiksni u zavisnosti da li se

nalaze pre (++x) ili posle (x++) varijable.

Ako se koristi prefiksna notacija npr. y=++x, to znači da će se x prvo uvećati za 1 pa

će y dobiti vrijednost x uvećan za 1 .Ako se kosisti postfiksna notacija npr y=x++, to

znači da će y prvo dobiti vrijednost x a x će se poslije uvećati z a1.

Za aritmetičke operacije se koristi i skraćen oblik ovih operatora u specifičnim

slučajevima

5. Logički operatori kao rezultat daju logički rezultat tačno ili netačno

Operator Opis

! Negacija

&& Logičko I

|| Logičko ILI

6. Operatori nad bitovima omogućavaju pristup procesorskim registrima i memorijskim

riječima na nivou bitova.

Operator Opis

& I nad bitovima

| ILI nad bitovima

˜ Komplement nad bitovima

2. PRVA GRUPA ZADATAKA

Kroz ovu grupu zadataka primjenila sam naredbe uslovnog prelaska if-else i switch-case,

kao i do sada navedene tipove podataka i uključivanje pojedinih bibloteka. U nekim

zadacima ću kreirati funkcije i pozivati ih iz glavnog progama.

Komentari u C++ jeziku postavljaju se navođenjem znaka duplo backslash //

Operacija Skraćeni oblik

x = x + y x += y

x = x - y x -= y

x = x * y x *= y

x = x / y x /= y

Page 8: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

8

Naredba if

Ako zadatak može da da dva ili više rješenja a nama treba jedno u zavisnosti od slučaja

onda koristimo naredbu if čiji je opšti oblik:

If (izraz)

{Naredba}

Dakle prvo se izvršava izraz, ako je izraz tačan izvršava se naredba. U suprotnom ništa se

ne dešava.

Drugi oblik je

if (izraz)

{naredba1;}

else

{naredba2;}

Prvo se izvršava izraz, ako je izraz tačan izvršava se naredba1 a ako izraz nije zadovoljen

izvršava se naredba 2

Naredba switch-case

Ima sličnu svrhu kao I naredba if,a li se koristi kad u zadatku imamo više mogućnosti. Oblik

ove naredbe je:

switch (promjenljiva)

{case 1:

naredba1

break;

case 2:

naredba2;

break;

case 3:

naredba3;

break;

deafult:

naredba4;

break;}

Naredbom switch uzimamo promjenljivu a naredbama case biramo slučaj te promjenljive, i

izvršava se naredba slučaja koja zadovoljava uslov, sa break se prekida sekvenca tekuće

case naredbe i prelazi se na drugu, ako ni jednane zadovoljava traženi uslov, onda je tu

naredba deafult koja izvršava naredbe u slučaju da ni jedan uslov nije zadovoljen.

Naredba for Naredba for (for petlja) ima u svojoj strukturi (tijelu) niz naredbi koje vrti od početka do kraja

uslovaza neki određeni broj povedanja uslova.

Opšti oblik naredbe for je:

for (inicijalizacija; test; inkrement) {

// blok naredbi;

}

inicijalizacija je izraz kojim se zadaje početna vrednost brojača petlje

test je uslov koji se ispituje nakon svakog koraka petlje

inkrement je izraz koji se koristi za menjanje brojača petlje u svakom koraku

petlje

Page 9: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

9

Naredba do-while

Naredba do (naziva se i do petlja) je slčna naredbi while, osim što se prvo izvršava tijelo

petlje, a zatim se provjerava uslov. Opšti oblik naredbe je:

do

naredba;

while (izraz);

Prvo se izvršava naredba, a zatim provjerava izraz. Ako izraz nije zadovoljen cijeli proces

se ponavlja. U suprotnom, petlja se zaustavlja.

Primjer 1. Površina i zapremina valjka

Načinni program koji na osnovu unesenog poluprečnika i visine valjka, određuje njgovu

površinu i zapreminu.

Kroz ovaj zadatak želim da prikažem:

definisanje konstante

definisanje promjenljive tipa float

#include <iostream> using namespace std; int main() { float p,v,h,r; //definisanje svih promjenljivih koje se koriste za izvrsavanje zadatka const float pi=3.14; //definisanje konstante cout<<"Unesite poluprecnik"; //poruka kojase salje na ekran za unos podataka cin>>r; //prihvatanje podataka cout<<"unesite visinu"; cin>>h; p=r*r*pi+h*2*r*pi; v=2*r*pi*h; cout<<"povrsina valjka je ="<<p<<endl; cout<<"zapremina valjka je ="<<v<<endl; system("PAUSE"); return EXIT_SUCCESS; } __________________________________________________________________________

Program daje slijedeći rezultat:

Unesite poluprecnik 2.56

unesite visinu65

povrsina valjka je =1065.57

zapremina valjka je =1044.99

Press any key to continue . . .

Page 10: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

10

Primjer 2. Stepenovanje broja

Načini program koji de stepenovati broj. Kroz ovaj zadatak želim

uključiti novu biblioteku

koristiti naredbu pow iz te bibloteke

#include <iostream> #include<cmath> //ukljucivanje biblioteke sa matematickim funkcijama using namespace std; int main() { float broj, stepen; float rezultat; cout<<"unesite broj koji zelis stepenovati"<<endl; cin>>broj; cout<<"Unesite stepen broja"<<endl; cin>>stepen; rezultat=pow(broj,stepen); //naredba pow za stepenovanje cout<<"stepen broja je"<<rezultat<<endl; system("PAUSE"); return EXIT_SUCCESS; } ________________________________________________________________________________

Program daje slijedeći rezultat:

unesite broj koji zelis stepenovati

2

Unesite stepen broja

10

stepen broja je1024

Press any key to continue . . .

Primjer 3. Heronov obrazac

Izračunati površinu trougla po Heronovom obrazcu

Kroz ovaj zadatak želim prikazati :

naredba if

#include <iostream>

#include<cmath>

using namespace std;

int main()

{ float a,b,c,p,s;

// unos stranica

cout<<"Unesite stranicu a! a= " ;

cin>>a;

cout<<endl;

cout<<"Unesite stranicu b! b= ";

Page 11: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

11

cin>>b;

cout<<endl;

cout<<"Unseite stranicu c! c=";

cin>>c;

cout<<endl;

// provjera da li se od unesenih stranica može formirati trougao,

if( (a+b)>c>(a-b) && (a+c)>b>(a-c) && (b+c) >a>(b-c))

{ //ako je izraz tačan izvršavaju se nadedbe u okviru ovih zagrada

s=(a+b+c)/2;

p=sqrt(s*(s-a)*(s-b)*(s-c));

cout<<"Povrsina trougla je "<<p<<endl;

}

else //ako izraz nije tačan, izvršavaju se naredbe iz ovog bloka

{

cout<<"Trougao ne moze biti sacinjen od tih stranica"<<endl;

}

system("PAUSE");

return EXIT_SUCCESS;

}

____________________________________________________________________

Program daje slijedeći rezultat:

Unesite stranicu a! a= 2.56

Unesite stranicu b! b= 3.89

Unseite stranicu c! c=4.87

Povrsina trougla je 4.95324

Press any key to continue . . .

___________________________________________________________________

Ili ako vrijednosti nisu dobro unesene:

Unesite stranicu a! a= 45

Unesite stranicu b! b= 21

Unseite stranicu c! c=98

Trougao ne moze biti sacinjen od tih stranica

Press any key to continue . . .

Page 12: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

12

Primjer 4. Izbor aritmetičke operacije

Načini program koji de za bilo koja dva broja izračunati aritmetičku operacijuu zavisnosti koji se

znak operacije učita sa tastature.

Kroz ovaj zadatak du pokazati:

switch-case naredbu uslovnog prelaska

ugnježdenu if strukturu u slučaju dijeljenja

#include <iostream> using namespace std; int main() { int a,b,s,r,p; float k; char o; //razlika izmedju char i string je u tome sto sa char mogu raditi ar op cout<<"Prvi broj= "; cin>>a; cout<<endl; cout<<"Drugi broj= "; cin>>b; cout<<endl; cout<<"Upisite znak aritmeticke operacije koju zelite izvrsiti. \n Operacija je "; //\n znak za prekid reda tj, da se kursor postavi u novi red cin>>o; cout<<endl; switch(o) //prihvatamo promjenljivu za koju biramo slučaj { case '+': //ako je korisnik pritisnuo sa tastature znak +, izvršide se sabiranje s=a+b; cout<<"Zbir dva broja je "<<s<<endl; break; //prekid ovog slučaja ako pritisnuti znak nije + nego neki drugi case '-': //ako je korisnik pritisnuo sa tastature znak-, izvršide se oduzimanje r=a-b; cout<<"Razlika dva broja je "<<r<<endl; break; case '*': p=a*b; cout<<"Proizvod dva broja" <<endl; break; case '/': if (b==0) //ugnježdena if struktura, jer alo je nazivnik 0, nema smisla dijeliti { cout<<"Nazivnik ne moze biti nula"<<endl; break;

} else { k=a/b; cout<<"Kolicnik dva broja je "<<k<<endl<<endl;

Page 13: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

13

break; } deafult: //ako je korisnik pritisnuo neki znak kojeg nema u prethodnim slučajevima cout<<"Pogresan izbor!"<<endl; break; } system("PAUSE"); return EXIT_SUCCESS;} ___________________________________________________________________________

program daje sljedede rješenje:

Prvi broj= 8

Drugi broj= 9

Upisite znak aritmeticke operacije koju zelite izvrsiti.

Operacija je *

Proizvod dva broja72

Press any key to continue . . .

_____________________________________________________________________________

Ili ako pokušamo dijeliti sa nula:

Prvi broj= 89

Drugi broj= 0

Upisite znak aritmeticke operacije koju zelite izvrsiti.

Operacija je /

Nazivnik ne moze biti nula

Press any key to continue . . .

Primjer 5. Razdvajanje broja na cifre Načini program koji sabira cifre trocifrenog broja unesenog sa tastature.

Kroz ovaj zadatak želimprikazati:

korištenje funkcije

cjelobrojno dijeljenje

ostatak prilikom dijeljenja #include <iostream> using namespace std; //FUNKCIJA KOJA RACUNA ZBIR int fja(int br) //imenovanje funkcije i deklarisanje ulaznih promjenljivih koje funkcija uzima iz programa {

Page 14: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

14

int s,d,j,p,zbir; s=br/100; //cjelobrojno dijeljenje daje samo cijeli broj, a ostatak odsjeca p=br%100; //moduo prihvata ostatak a odsjeca cijeli dio kolikčnika d=p/10; j=p%10; zbir=s+d+j; return zbir; } int main() //GLAVNI PROGRAM { int broj,rezultat; cout<<"Unesite jedan trocifran broj "; cin>>broj; cout<< endl; if(broj>999|| broj<100) //logički operator || „ili“ . Donja naredba de se izvršiti ako je bilo koji od { izraz ispunjen cout<<"Uneseni broj nije trocifren"; } else { rezultat=fja(broj); //pozivanje funkcije cout<<"Zbir cifara trocifrenogbroja je "<<rezultat<<endl; } system("PAUSE"); return 0; } ____________________________________________________________________________ Program daje slijededi rezultat: Unesite jedan trocifran broj 951 Zbir cifara trocifrenogbroja je 15 Press any key to continue . . . ___________________________________________________________________________ Ili ako se unese broj koji nije trocifren: Unesite jedan trocifran broj 1234 Uneseni broj nije trocifren Press any key to continue . . .

Primjer 6. Udaljenost tačaka u koordinatnom sistemu

Sa tastature sezadaju koordinate dvije tačke u koordinatnom sistemu a(x1,y1) i b(x2,y2). Načiniti program koji računa razdaljinu između taček a i tačke b

Page 15: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

15

Kroz ovaj progam želim:

koristiti funkciju

koristiti cmath biblioteku

#include <iostream>

#include<cmath>

using namespace std;

float fja(float x1,float x2, float y1, float y2 ) //definisanje funkcije

{ float d,a;

a=pow((x2-x1),2) +pow((y2-y1),2);

d=sqrt(a);

return d; //vrijednost koju funkcija vraća glavnom programu

}

int main() //glavni progam

{

float x1,y1,x2,y2,d;

cout<<"Unesite koordinate prve tacke:\n Vrijednost x1= ";

cin>>x1;

cout<<endl;

cout<<"Vrijednost y1= ";

cin>>y1;

cout<<endl;

cout<<"Unesite koordinate druge tacke:'\n Vrijednost x2= ";

cin>>x2;

cout<<endl;

cout<<"Vrijednost y2= ";

cin>>x2;

cout<<endl;

d=fja(x1,x2,y1,y2); //poziv funkcije i smještanje rezultata u varijablu d

cout<<"Udaljenost tacaka je = " <<d;

cout<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

__________________________________________________________________________

Program daje sljedeći rezultat:

Unesite koordinate prve tacke:

Vrijednost x1= 5

Vrijednost y1= 9

Unesite koordinate druge tacke:'

Vrijednost x2= -5

Vrijednost y2= -9

Udaljenost tacaka je = 16.6433

Press any key to continue . . .

Page 16: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

16

Primjer 7. Ispis brojeva intervala unazad

Načiniti program koji će brojeve iz intervala ispisati u obrnutom redoslijedu

Kroz ovaj zadatak želim prikazati:

korištenje do- while petlje

provjeru valjanosti intervala if naredbom

#include <iostream>

using namespace std;

int main()

{

int i,k,n;

ponovo:

cout<<"Donja granica interval je = ";

cin>>k;

cout<<"Gornja granica intervala je = ";

cin>>n;

if(n<=k) //provjera da li je donja granica manja od gornje

{ cout<<"Granice nisu validne, pokusajte ponovo"<<endl<<endl;

goto ponovo;

}

else

{

i=n; //nekom i dodjeljuje se vrijednost gornje granice

do //naredba do znači da se petlja unutar vitičastih zagrada ponavlja dok ne bude

zadovoljen uslov izraz u while naredbi

{

cout<<i; //ispisuje i, odnosno u prvom prolazu gornju granicu (zadnji broj)

--i; //i se smanjuje za 1 jer je interval uređen niz po rastućem redoslijedu

cout<<endl;

}

while (i>=k); //petlja se vrti dok se oduzimanjem godnjeg broja za 1 ne dođe do

toga da je jednak donjoj granici

}

system("PAUSE");

return EXIT_SUCCESS;

}

__________________________________________________________________________

Program ispisuje sljedeći rezultat:

Donja granica interval je = 23

Gornja granica intervala je = 32

32

31

30

29

28

27

26

25

Page 17: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

17

24

23

Press any key to continue . . .

Primjer 8. Tablica množenja

Načini programkoji kreira tablicu množenja bilo kojeg unesenog broja u bilo kom intervalu

Kroz ovaj zadatak želim prikazati:

pristup intervalu preko for petlje

#include <iostream>

using namespace std;

int main()

{

int k,n,p, broj;

ponovo: cout<<"Unesite donju granicu za mnozenje ";

cin>>k;

cout<<"Unesite gornju granicu do koje se ispisuje mnozenje ";

cin>>n;

cout<<endl;

cout<<"Unesite broj sa kojim zelite da mnozite ";

cin>>broj;

if(k>n) //prethodno objašnjeno

{ cout<<"donja granica je veca od gornje, pokusajte ponovo";

cout<<endl;

goto ponovo;

}

else

{

for(int i=k; i<=n; i++) //pristup intervalu:

{

p=i*broj; //proizvod broja sa tekućim brojem iz intervala

cout<<i<<" * "<<broj<< "="<<p; //ispis proizvoda

cout<<endl;

p=1; //dodjeljivanje proizvodu vrijednost 1 jer sad petlja opet

kreće iz početka samo sa sledećim brojem intervala

}

}

system("PAUSE");

return EXIT_SUCCESS; } ______________________________________________________________________________

Program ispisuje sljededi rezultat:

Unesite donju granicu za mnozenje 12 Unesite gornju granicu do koje se ispisuje mnozenje 19

Page 18: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

18

Unesite broj sa kojim zelite da mnozite 7 12 * 7=84 13 * 7=91 14 * 7=98 15 * 7=105 16 * 7=112 17 * 7=119 18 * 7=126 19 * 7=133 Press any key to continue . . .

Primjer 9. Kockice Načini progam koji ispisuje sve varijante da se bacanjem tri kockice dobije određeni

rezultat koji se unosi sa tastature.

Kroz ovaj primjer želim pokazati:

tri for petlje ugnježdene jedna u drugu

#include <iostream> using namespace std; int main() { int s; cout<<"Unesite sumu koju za koju zelite kombinaciju brojeva "; cin>>s; for(int i=1; i<=6;i++) { for(int j=1;j<=6; j++) { for(int k=1;k<=6;k++) if(i+j+k==s) { cout<<i<<","; cout<<j<<","; cout<<k<<endl; } } } system("PAUSE"); return EXIT_SUCCESS; }

______________________________________________________________________________

Program ispisuje sljededi rezultat: Unesite sumu koju za koju zelite kombinaciju brojeva 16 4,6,6 5,5,6 5,6,5

Page 19: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

19

6,4,6 6,5,5 6,6,4 Press any key to continue . . .

Primjer 10. Novi broj od cifara

Ako se sa ulaza učitava trocifren prirodan broj n.napisati program kojim se određuje

najmanji trocifren broj od cifara n.

Kroz ovaj primjer želim pokazati:

funkciju koja traži najmanji broj i vraća rezultat

glavni dio programa koji razdvaja broj na njegove cifre

#include <iostream>

using namespace std;

int fja(int s, int d, int j)

{ int a;

if (s<d)

{swap(s,d);};

if ((s<j)&&(s!=0))

{swap(s,j);};

if((d!=0)&&(d<j))

{swap(d,j);};

a=s+d*10+j*100;

return a;

}

int main(int argc, char *argv[])

{ int n,d,j,p,s,najmanji;

cout<<"Unesite trocifren broj ";

cin>>n;

if(n>999 || n<100)

{ cout<<"Brojnije trocifren!"<<endl;

}

else

{

s=n/100;

p=n%100;

d=p/10;

j=p%10;}

Page 20: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

20

najmanji= fja(s,d,j);

cout<<najmanji<<endl;

system("PAUSE");

return EXIT_SUCCESS;

} _____________________________________________________________________________

Program ispisuje sljededi rezultat:

Unesite trocifren broj 950

59

Press any key to continue . . .

DRUGI NIVO ZADATAKA intervali i stringovi

Primjer 11. Sabiranje stringova

Načini program koji će sabrati jednom stringu pridružiti drugi string, te ga onda ispisati

Kroz ovaj primjer želim prikazati:

uključivanje biblioteke string

prihvatanje stringa

#include <iostream> #include<string> using namespace std; int main() {string tekst,dodaj; char p; cout<<"Unesite tekst! "<<endl; getline(cin,tekst); cout<<"Unesite rijec koju zelite ubaciti u tekst! "<<endl; getline(cin,dodaj); cout<<endl; cout<<tekst<<" "<<dodaj; cout<<endl; system("PAUSE"); return EXIT_SUCCESS; }

Page 21: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

21

_________________________________________________________________________________

Program ispisuje sljededi razultat:

Unesite tekst! dobar dan Unesite rijec koju zelite ubaciti u tekst! svaki dan dobar dan svaki dan Press any key to continue . . .

Primjer 12. Pretraživanje stringa

Učitati sa tastature tekst, i provjeriti da li se tražena riječ nalazi u datom tekstu

Kroz ovaj primjer želim prikazati :

naredbu kojom se traži podstring stringa

#include <iostream> #include<string> using namespace std; int main() {string tekst,trazi; char pozicija; cout<<"Unesite tekst! "<<endl; getline(cin,tekst); cout<<"Unesite rijec koju trazite! "<<endl; getline(cin,trazi); cout<<endl; pozicija=tekst.find(trazi); if(pozicija!=string::npos) //naredba koja oznacava da data rijec nije nadjena {cout<<"Trazena rijec postoji"<<pozicija<<endl;} else {cout<<"Trazena rijec ne postoji!"<<endl;} system("PAUSE"); return EXIT_SUCCESS; } ____________________________________________________________________________ Program daje sljededi rezultat: Unesite tekst! zimski praznici su zavrseni. Unesite rijec koju trazite! praznici Trazena rijec postoji Press any key to continue . . .

Page 22: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

22

Primjer 13. Umetanje stringa u string

Načiniti program koji dati strin umede u drugi na tačo odrađenoj poziciji

Kroz ovaj primjer želim prikazati:

umetanje stringa na neku poziciju

#include <iostream> #include<string> using namespace std; int main() {string tekst,dodaj; int p; cout<<"Unesite tekst! "<<endl; getline(cin,tekst); cout<<"Unesite rijec koju zelite ubaciti u tekst! "<<endl; getline(cin,dodaj); cout<<endl; cout<<"Na koju poziciju zelite dodati tekst"; cin>>p; tekst.insert(p,dodaj); cout<<tekst; system("PAUSE"); return EXIT_SUCCESS; }

Program daje sledede rješenje: Unesite tekst! dobar dan Unesite rijec koju zelite ubaciti u tekst! Vam Na koju poziciju zelite dodati tekst6 dobar Vamdan Press any key to continue . . .

Page 23: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

23

Primjer 14. Palindrom Program ispituje da li je učitana riječ palindrom

Kroz ovaj primjer želim prikazati:

Poredjenje stringa

Naredbu za dužinu stringa

#include <iostream> using namespace std; int main() { string recenica, obrnuta; //definisanje stringa cout<<"Unesite rijec "<<endl; getline(cin, recenica); //ucitavanje stringa obrnuta=recenica; int d= recenica.size(); //duzina rijeci for (int i=0;i < d;i++) //pristupanje svakom slovu u rijeci { obrnuta[i]=recenica[d-1-i]; //dodavanje zadnjeg slova prethodne rečenice u string obrnuta } cout<<"obrnuta rijec glasi "<<obrnuta<<endl; if (recenica==obrnuta) //poredjenje stringova cout << obrnuta<< " je palindrom"<< endl; else cout << recenica<< " nije palindrom"<< endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

_______________________________________________________________ Program daje sljedede rješenje:

Unesite rijec

NEVEN

obrnuta rijec glasi NEVEN

NEVEN je palindrom

Press any key to continue . . .

Page 24: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

24

Primjer 15. Brojevi djeljivi sa svojim ciframa

Sa ulaza se učitavaju prirodni brojevi a i b. Napisati program kojim se ispisuju svi prirodni

brojevi iz intervala a,b, koji su djeljivi sa svojim ciframa.

Kroz ovaj primjer želim prikazati:

Upotrebu indentifikatora

#include <iostream>

using namespace std;

int main()

{int a,b,x,ind,c,n;

cout<<"Unesite granice intervala a i b"<<endl;

cin>>a>>b;

for (x=a;x<=b;x++) //pristup intervalu

{

n=x, ind=1;

while ((n>0)&& ind)

c=n%10; n=n/10;

if(c==0)

{ind=0;}

else

if(x%c!=0)

{ind=0;}

}

if(ind)

{cout<<x<<endl;

}

}

system("PAUSE");

return EXIT_SUCCESS;

}

//dodjeljujem nekom n vrijednost člana x i postavljam identifikator koji će imati vrijednost

0 ako u petlji izdvajam zadnje cifre broja i ako je bilo koja cifra 0 identifikator postaje 0 jer

nema smisla dijeliti sa 0, ako nije i ako je ostatak prilikom dijeljenja broja x sa izdvojenom

cifrom razlicit onda identifikator ostaje 0. Samo ako je indentifikator ostaje 1 broj se

ispisuje

________________________________________________________________________________

Program daje sljedede rješenje:

Unesite granice intervala a i b 234 456 244 248 264 288

Page 25: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

25

312 315 324 333 336 366 384 396 412 424 432 444 448 Press any key to continue . . .

Primjer 16. Meta

Data je kružna meta sa 6 kružnih prstenova i broj poena po jednom pogotku u svakom

kružnom prstenu :16,17,22,23,39i 40. Napisati program kojim se određuje i ispisuje koliko

puta u svaki od kružnih prstenova strelica treba da pogodi da bi postigao zbir od 100 poena,

naći sva rješenja. Napomena: promašaj mete nije predviđen, broj gađanja nije bitan.

Kroz ovaj program želim pokazati:

ugnježdene for petlje

#include <iostream>

using namespace std;

int main()

{int a,b,c,d,e,f,;

for(a=0;a<=(100/16);a++)

for(b=0;b<=(100-a*16)/17;b++)

for(c=0;c<=(100-a*16-b*17)/22;c++)

for(d=0;d<=(100-a*16-b*17-c*22)/23;d++)

for(e=0;e<=(100-a*16-b*17-c*22-d*23)/39;e++)

for(f=0;f<=(100-a*16-b*17-c*22-d*23-e*39)/40;f++)

if(a*16+b*17+c*22+d*23+e*39+f*40==100)

cout<<a<<"*16+ "<<b<<"*17+ "<<c<<"*22+ "<<d<<"*23+ "<<e<<"*39+

"<<f<<"*40=100"<<endl;

cout<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

_______________________________________________________________________________

Program daje sljedede rješenje:

0*16+ 0*17+ 1*22+ 0*23+ 2*39+ 0*40=100

0*16+ 1*17+ 2*22+ 0*23+ 1*39+ 0*40=100

0*16+ 2*17+ 3*22+ 0*23+ 0*39+ 0*40=100

Page 26: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

26

1*16+ 0*17+ 1*22+ 1*23+ 1*39+ 0*40=100

1*16+ 0*17+ 2*22+ 0*23+ 0*39+ 1*40=100

1*16+ 1*17+ 2*22+ 1*23+ 0*39+ 0*40=100

2*16+ 0*17+ 1*22+ 2*23+ 0*39+ 0*40=100

2*16+ 4*17+ 0*22+ 0*23+ 0*39+ 0*40=100

Press any key to continue . . .

Primjer 17. Vekne hljeba

Svaki muškarac nosi dvije vekne hljeba, žena jednu a dijete pola vekne hljeba. Ukupno n

osoba nose vekne. Napisati program kojim se za dati prirodan broj n ispisuje redom broj

muškaraca, žena i djece. Ispisati sva rješenja

#include <iostream> using namespace std; int main() {int n; //broj vekni cout<<"Upisite koliko vekni zelite prenijeti"; cin>>n; for(int i=1;i<n;i++) {for(int j=1;j<n;j++) {for(int k=1;k<n;k++) if((i*2+j+0.5*k)==n) {cout<<i<<" muskarca, "<<j<<"zena, "<<k<<" djece."<<endl;}}} system("PAUSE"); return EXIT_SUCCESS; } ______________________________________________________________________________

Program daje sljedede rješenje:

Upisite koliko vekni zelite prenijeti6

1 muskarca, 2zena, 4 djece.

1 muskarca, 3zena, 2 djece.

2 muskarca, 1zena, 2 djece.

Press any key to continue . . .

Page 27: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

27

Primjer 18. Prost broj

Ispisati da li je uneseni broj prost. Broj je prost ako je djeljiv samo sa 1 i sa samim sobom.

#include <iostream>

#include <cmath>

using namespace std;

int Broj;

bool prostBroj; bool prost(int broj) { int i; bool prostbroj; if ((broj==1) || (broj==2) || (broj==3)) { prostbroj=true; } else { if (broj%2!=0) { for (i=3; i<= (int)sqrt((double)broj)+1; i+=2) { if (broj%i==0) {prostbroj=false;} else {prostbroj=true;} } } else {prostbroj=false;} } return prostbroj; } int main() { bool prostbroj; int broj; cout << "Unesi broj za koji zelis provjeriti da li je u skupu prostih brojeva."<<endl; cin>> broj; //poziv funkcije prostbroj=prost(broj); if (prostbroj==true) { cout <<"Broj " << broj<<" je prost." <<endl; system("Pause"); } else { cout <<"Broj " << broj<<" nije prost." <<endl; system("Pause"); } return 0;}

Page 28: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

28

Program daje sljedede rješenje: Unesi broj za koji zelis provjeriti da li je u skupu prostih brojeva. 59 Broj 59 je prost. Press any key to continue . . .

Primjer 19. Cifre petocifrenog broja

Uradite zadatak koji ispisuje petocifrene brojeve čiji je zbir zadnje četiri cifre jednak prvoj

cifri

#include <iostream> using namespace std; int main() { int br=0,sledeca,s,k; int niz[5]; for (int i=10000; i<=99999; i++) { sledeca=i; s=0; for (int j=1; j<=4;j++) { k=sledeca%10; //zadnja cifra je modul sa 10 sledeca=sledeca/10; //slededa je ono sto je cjelobrojni kolicnik sa 10 s=s+k;} if(s==i/10000) {cout<<i<<endl; } } system("PAUSE"); return EXIT_SUCCESS; } _________________________________________________________________________________

Rezultat koji program vraća

... 96021 96030 96102 96111 96120 96201 96210 96300 97002 97011 97020 97101 97110 97200

Page 29: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

29

98001 98010 98100 99000 Press any key to continue . . .

Primjer 20. Broj 32759

Broj 32759 ima zanimljivo svojstvo: pri deljenju sa 2 daje ostatak 1, pri deljenju sa 3 daje

ostatak 2, ... . , pri deljenju sa 10 daje ostatak 9. Ipak, to nije najmanji broj sa tim svojstvom.

Načinite program za utvrđivanje najmanjeg prirodnog broja sa navedenom osobinom

#include <iostream> using namespace std; int main() { int i; for(i=10;i<32759;i++) { if (i%2==1 && i%3==2 && i%4==3 && i%5==4 && i%6==5 && i%7==6 && i%7==6 && i%8==7 && i%9==8 && i%10==9) cout<<i<<endl;} system("PAUSE"); return EXIT_SUCCESS; } _________________________________________________________________________________

Program vrada rješenje:

2519

5039

7559

10079

12599

15119

17639

20159

22679

25199

27719

30239

Press any key to continue . . .

Page 30: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

30

TREĆI NIVO ZADATAKA

Primjer 21. Fibonačijev niz Program računa vrijednost Fibonačijevog niza ako se učita index niza.

Vrijednoast fibonačijevog niza za učitani index je

Fn=Fn-1+Fn-2

Kroz ovaj primjer želim prikazati:

funkciju koja računa vrijednost člana i prosjeđuje ga programu

#include <iostream>

using namespace std;

//definisanje funkcije

int fja(int n) //funkcija koja izracunava vrijednost

{

if (n<=1)

{return 1; //vrijednost koju koji funkcija vraca ako je n manji od 0

}

else

{

return ((n-1)+(n-2));} //vrijednost koju funkcija vraća za član niza

}

int main() //glavni program

{

int n,f;

cout<<"Ucitajte index za koji zelite vrijednost Fibonacijevog niza ";

cin>>n;

cout<<"Vrijednost fibonacijevog niza za index "<<n<<" je "<<fja(n);

cout<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Program ispisuje sljedeće rješenje:

Ucitajte index za koji zelite vrijednost Fibonacijevog niza 123

Vrijednost fibonacijevog niza za index 123 je 243

Press any key to continue . . .

Page 31: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

31

Primjer22. Aritmetička sredina niza

Uradite program koji računa aritmetičku sredinu niza.

Funkcija za formiranje niza i računanje aritmetičke sredine

#include <iostream> using namespace std; float fja(int n) //funkcija za unos članova i računanje aritmetičke sredine { int niz[50]; int s=0; float asrs; for (int i=0; i<n; i++) { cout <<"Unesite "<<i+1<<". clan niza"; cin>>niz[i]; } for(int i=0; i<n; i++) { s=s+niz[i]; } asrs=(float)s/n; return asrs; //funkcija vraca aritmeticku sredinu } int main() //glavni dio programa { int n; float sredina; int niz[50]; cout<<"Unesite broj clanova niza. N= "; cin>>n; sredina= fja(n); //pozivanje funkcije cout<<"Aritmeticka sredina niza je "<<sredina<<endl; system("PAUSE"); return EXIT_SUCCESS; } ______________________________________________________________________________

Rezultat programa: Unesite broj clanova niza. N= 5 Unesite 1. clan niza 5 Unesite 2. clan niza -69

Page 32: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

32

Unesite 3. clan niza 159 Unesite 4. clan niza -753 Unesite 5. clan niza 654 Zbir clanova niza je -4 Aritmeticka sredina niza je -0.8 Press any key to continue . . .

Primjer23. Sortiranje niza u opadajućem redoslijedu Načini program koji sortira niz u opadajućem redoslijedu

Kroz ovaj primjer želim prikazati:

Bublle sort funkciju

#include <iostream>

using namespace std;

int main()

{

int niz[50];

int n,i;

cout<<" Koliko clanova ima niz? ";

cin>>n;

for (int i=0; i<n; i++) //petlja za unos članova

{

cout<<"Unesite "<<i+1<<". clan niza ";

cin >> niz[i];

}

for (int i=0; i<n-1;i++)

{ for (int j=i+1; j<n; j++)

if (niz[i]<niz[j])

{ swap(niz[i],niz[j]);} //zamjena mjesta clanovima niza

}

cout<<endl;

for (int i=0; i<n; i++) //ispis sortiranog niza

{cout<<niz[i];

cout<<endl;

}

system("PAUSE");

return EXIT_SUCCESS;

}

_______________________________________________________________________

Program daje sljedeće rješenje:

Page 33: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

33

Koliko clanova ima niz? 5

Unesite 1. clan niza -98

Unesite 2. clan niza 65

Unesite 3. clan niza -74

Unesite 4. clan niza 23

Unesite 5. clan niza -14

65

23

-14

-74

-98

Press any key to continue . . .

Primjer 24. Transformacija niza. Ako se sa ulaza učitava n (n<=100) i niz a cijelih brojeva dužine n. Napisati program kojim

se izvršava sljedeća transformacija niza ako su dva susjedna člana niza a[j] i a[j+1] jednaka,

onda se član a[j+1] uvećava za jedan. Poslije izvršene transformacije ispisati promjenjen

niz.

Kroz ovaj primjer želim prikazati:

promjenu vrijednosti članova niza

#include <iostream> using namespace std; int main() { int a[100]; int j,n,i; //ucitavanje niza cout<<"Ucitajte broj clanova niza "; cin>>n; for (i=0;i<n;i++) {cout<<"Ucitajte clanove niza "; cin>>a[i]; } //pristup nizu for(i=0;i<n-1;i++) { if(a[i]==a[i+1]); //provjerava da li su susjedni clanovi jednaki { a[i+1]=a[i+1]+1; //ako su jednaki onda drugi uvecava za jedan } } //ispis novog niza cout<<"Izgled novog niza je: "<<endl; for (i=0;i<n;i++) {cout<<a[i]<<endl;} system("PAUSE"); return EXIT_SUCCESS;}

Page 34: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

34

_______________________________________________________________________________

Program daje sljedede rješenje:

Ucitajte broj clanova niza 7

Ucitajte clanove niza 5

Ucitajte clanove niza 5

Ucitajte clanove niza 6

Ucitajte clanove niza 2

Ucitajte clanove niza 2

Ucitajte clanove niza 3

Ucitajte clanove niza 3

Izgled novog niza je:

5

6

7

3

3

4

4

Press any key to continue . . .

Primjer 25. Formiranje trećeg niza

Učitati dva niza a i b od po n članova. Formirati novi niz c od n članova čiji su članovi zbir

članova na istoj poziciji iz prethodna dva.

Kroz ovaj primjer želim prikazati:

popunjavanje novog niza od vrijednosti prethodnog

#include <iostream> using namespace std; int main() { int a[50], b[50], c[50], n; //unos prvog niza cout<<"koliko clanova ima niz "; cin>>n; for(int i=0;i<n;i++) {cout<<"Unesite clanove prvog niza "<<endl; cin>>a[i]; } //unos drugog niza for(int i=0;i<n;i++) {cout<<"Unesite clanove drugog niza "<<endl; cin>>b[i]; } cout<<"formiranje treceg niza ciji su clanovi zbir prethodnih clanova."<<endl;

Page 35: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

35

//formiranje treceg niza for(int i=0;i<n;i++) {c[i]=a[i]+b[i];} //ispis treceg niza for(int i=0;i<n;i++) {cout<<c[i]<<endl;} system("PAUSE"); return EXIT_SUCCESS; } _______________________________________________________________________________ Program daje sljedederješenje: koliko clanova ima niz 5 Unesite clanove prvog niza 1 Unesite clanove prvog niza 2 Unesite clanove prvog niza 3 Unesite clanove prvog niza 4 Unesite clanove prvog niza 5 Unesite clanove drugog niza 6 Unesite clanove drugog niza 5 Unesite clanove drugog niza 4 Unesite clanove drugog niza 3 Unesite clanove drugog niza 5 formiranje treceg niza ciji su clanovi zbir prethodnih clanova. 7 7 7 7 10 Press any key to continue . . .

Primjer 26. Proizvod matrice sa skalarom Načiniti program koji množi proizvoljnu matricu sa proizvoljnim skalarom.

Kroz ovaj primjer želim prikazati:

definisanje i unos matrice

ispis matrice

#include <iostream> using namespace std;

Page 36: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

36

int A[10][10], i, j, M, N, br; int main() { cout<<"Unesi broj redova matrice: "; cin>>M; cout<<"Unesi broj kolona matrice: "; cin>>N; for(i=0;i<M;i++) //Unos matrice { for(j=0;j<N;j++) { cout<<"A["<<i<<","<<j<<"]="; cin>>A[i][j]; } } cout<<endl; for(i=0;i<M;i++)//Ispis matrice {cout<<endl; for(j=0;j<N;j++) {cout<<" "<<A[i][j]; } } cout<<endl; cout<<"Unesite broj sa kojim zelis pomnoziti matricu: "; cin>>br; cout<<"Proizvod unesene matrice i datog broja je: "<<endl; for(i=0;i<M;i++)//izracunavanje i ispis proizvoda {cout<<endl; for(j=0; j<N; j++) { cout<<" "<<A[i][j]*br; } } cout<<endl; system("Pause"); return 0; }

Program daje sljedede rješenje:

Unesi broj redova matrice: 3

Unesi broj kolona matrice: 3

A[0,0]=1

A[0,1]=2

A[0,2]=3

A[1,0]=6

Page 37: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

37

A[1,1]=5

A[1,2]=4

A[2,0]=9

A[2,1]=8

A[2,2]=7

1 2 3

6 5 4

9 8 7

Unesite broj sa kojim zelis pomnoziti matricu: 4

Proizvod unesene matrice i datog broja je:

4 8 12

24 20 16

36 32 28

Press any key to continue . . .

Primjer 27. Proizvod dvije matrice

Nacini program koji množi dvije matrice. Matrice možemo da pomnožimo ako je broj

kolona prve matrice jednak broju redova druge matrice. Ako neki od ovih uslova nije

zadovoljen javi korisniku.

Kroz ovaj primjer želim prikazati:

formiranje treće matrice do dvije postojeće #include <iostream> using namespace std; //Deklaracija promjenjivih Int A[10][10], B[10][10], C[10][10], i, j, m, k, ar,ak, br,bk; int main() { cout<<"Unesite dimenzije prve matrice:broj kolona i broj redova"<<endl; cin>>ak; cin>>ar; for(i=0;i<ar;i++) {for(j=0;j<ak;j++) {cout << "A[" << i << "," << j << "]=" ; cin >> A[i][j]; } } cout<<endl<<"Unesi dimenzije druge matrice: broj kolona i broj redova"<<endl; cin>>bk; cin>>br; for(i=0;i<br;i++) {for(j=0;j<bk;j++) { cout << "B[" << i << "," << j << "]=" ;

Page 38: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

38

cin >> B[i][j]; } } //ako je broj kolona prve jednak broju redova druge if(ak!=br) { cout<<"Dimenzije matrica su takve da mnozenje nije moguce"; system("Pause"); goto kraj; } //mnozim ove dvije matrice for(i=0;i<ar;i++) //dve petlje sluze da u rezultnoj matrici pomjera rezultnu vrijednost { for(k=0;k<bk;k++) //parametar koji pravi pomak u matrici { m=0; //index trece for(j=0;j<br;j++) { m=m+A[i][j]*B[j][k]; //prethodni zbir + proizvod brojeva } C[i][k]=m; // –upisujemo vrijednost, } } cout<<endl<<"Rezultat mnozenja ove dvije matrice je: "<<endl; for(i=0;i<ar;i++) { cout<<endl; for(j=0;j<bk;j++) { cout<<" "<<C[i][j]; } } system("Pause"); kraj:return 0; } _____________________________________________________________________________

Program vrada sljededu vrijednost:

unesite dimenzije prve matrice:broj kolona i broj redova

3 3 A[0,0]=1 A[0,1]=2 A[0,2]=3 A[1,0]=4 A[1,1]=5 A[1,2]=6 A[2,0]=7 A[2,1]=8

Page 39: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

39

A[2,2]=9 Unesi dimenzije druge matrice: broj kolona i broj redova 2 3 B[0,0]=1 B[0,1]=5 B[1,0]=2 B[1,1]=6 B[2,0]=3 B[2,1]=5 Rezultat mnozenja ove dvije matrice je: 14 32 32 80 50 128 Press any key to continue . . .

Primjer 28. Članovi na glavnoj dijagonali matrice

Načini program koji ispisuje članove koji se nalaze na glavnoj dijagonali matrice.

Kroz ovaj primjer želim prikazati:

kako provjeriti i ispisati članove matrice

#include <iostream> using namespace std; int main() {int A[10][10], i,j,N; cout<<"Unesi dimenzije matrice: "; cin>>N; //unos matrice {for(i=0;i<N;i++) for(j=0;j<N;j++) { cout << "A[" << i << "," << j << "]=" ; cin >> A[i][j]; } //ispis matrice for(i=0; i<N; i++) { cout<<endl; for(j=0;j<N;j++) {cout<<" "<<A[i][j];} } //izdvajanje i ispis clanova dijagonale cout<<endl; cout<<"Clanovi na glavnoj dijagonali su: "<<endl; for(i=0;i<N;i++) for(j=0;j<N;j++)

Page 40: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

40

{ if(i==j) //članovi su na dijagonali ako je i=j { cout<<"A["<<i<<","<<j<<"]="<<A[i][j]<<endl; } } system ("Pause"); return 0; } ________________________________________________________________________________

Program ispisuje sljededi rezultat:

Unesi dimenzije matrice: 4 A[0,0]=1 A[0,1]=5 A[0,2]=2 A[0,3]=3 A[1,0]=6 A[1,1]=5 A[1,2]=9 A[1,3]=8 A[2,0]=1 A[2,1]=5 A[2,2]=4 A[2,3]=2 A[3,0]=3 A[3,1]=6 A[3,2]=5 A[3,3]=4 1 5 2 3 6 5 9 8 1 5 4 2 3 6 5 4 Clanovi na glavnoj dijagonali su: A[0,0]=1 A[1,1]=5 A[2,2]=4 A[3,3]=4 Press any key to continue . . .

Primjer 29. Maximalan član od minimalnih po redovima matrice

U matrici H(M, N) svi brojevi su različiti. Načiniti program kojim se određuje najmanji elemenat u

svakoj vrsti-redu a potom najvedi među njima. Prikazati redni broj vrste matrice u kojoj se taj

elemenat nalazi.

#include <iostream> using namespace std; int main()

Page 41: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

41

{ int n,m,i,j,k,r,b,min,maxi; int h[i][j]; int niz[b]; cout<<"unesite broj kolona"; cin>>k; cout<<"unesite broj redova"; cin>>r; for(i=0;i<k;i++) for(j=0;j<r;j++) { cout<<"A["<<i<<","<<j<<"]="; cin>>h[i][j]; cout<<endl; } //ispis matrice for(i=0;i<k;i++) { cout<<endl; for(j=0;j<r;j++) { cout<<h[i][j]; } } cout<<endl; //dodjeljujem inicijalne vrijednosti krenuvsi od prvog i=0;b=0; j=0; //b je brojac ya niy u koji smjestam najmanje do { min=h[i][j]; for(j=0;j<k;j++) {if(h[i][j]<min) min=h[i][j];} niz[b]=min; //minimalne stavljam u niz cout<<"minimalan clan "<<i<<"kolone je "<<min<<endl; // cout<<niz[b]<<endl; i++; b++; j=0; } while((i<r)&&(j<k)); //ispisnajmanjih clanova cout<<"niz od najmanjih elemenata je;"<<endl; for(b=0;b<r;b++) {cout<<niz[b]<<endl;} //trazenje maximalnog od niza minimalnih maxi=niz[0]; for(int b=0;b<r;b++) {if (niz[b]>maxi) maxi=niz[b];} cout<<"maksimalan clan od minimalnih clanova matrice je="<<maxi<<endl;

Page 42: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

42

system("PAUSE"); return EXIT_SUCCESS; }

___________________________________________________________________________ Program daje sljededi rezultat: unesite broj kolona3 unesite broj redova3 A[0,0]=1 A[0,1]=2 A[0,2]=3 A[1,0]=4 A[1,1]=5 A[1,2]=6 A[2,0]=7 A[2,1]=8 A[2,2]=9 123 456 789 minimalan clan 0kolone je 1 minimalan clan 1kolone je 4 minimalan clan 2kolone je 7 niz od najmanjih elemenata je; 1 4 7 maksimalan clan od minimalnih clanova matrice je=7 Press any key to continue . . .

Primjer 30. Proizvoljna matrica pomnožena sa najvećim članom

Napisati C program koji će s tastature prvo učitati prirodni broj m

koji mora biti između 2 i 10. Nakon toga učitati mxm cijelih brojeva

u matricu A. Odrediti najveći broj u matrici te načiniti matricu B istih

dimenzija koja će za elemente matrice sadržavati produkt najvećeg

elementa i svih ostalih elemenata matrice A.

#include <iostream> #define dim 10 using namespace std;

Page 43: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

43

main() { int n,a[dim][dim],b[dim][dim],max=0,j; cout << "n="; cin >> n; max=0; for (int i=1; i<=n; i++) for (j=1;j<=n; j++) { cout <<"a["<<i<<","<<j<<"]="; cin >>a[i][j]; if ((a[i][j])>max) max=a[i][j];} cout<<"najveci clan matrice je "<<max<<endl; for (int i=1; i<=n; i++) { cout<<endl; {for (j=1;j<=n; j++) cout<<" "<<max*a[i][j]<<" "; } } system ("pause"); return 0; } ________________________________________________________________________________ Program vrada sljededi rezultat: n=3 a[1,1]=9 a[1,2]=5 a[1,3]=6 a[2,1]=2 a[2,2]=5 a[2,3]=6 a[3,1]=4 a[3,2]=9 a[3,3]=8 najveci clan matrice je 9 81 45 54 18 45 54 36 81 72 Press any key to continue . . .

Page 44: Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u  c++

Seminarski rad-Borka Pavlović

Viši programski jezici rad u C++

44

Literatura: 1. Stanly B. Lippman, OSNOVE JEZIKA C++, Svetlost Čačak, 2000

2. OSNOVE PROGRAMIRANJA U C++

3. Jesse Libarty, Naučite C++ za 21 dan, Kompjuter biblioteka, 1999

4. internet tutorijali

http://download.tutoriali.org/Tutorials/C/C++_tutorial_sa_primjerima.pdf

http://www.mikroknjiga.rs/Knjige/CPJJ/P01_CPJJ/P01_CPJJ.html (20.4.2012)

http://sr.wikipedia.org/wiki/C%2B%2B (20.4.2012.)