Upload
lorena-lora-dzaferbegovic
View
315
Download
34
Embed Size (px)
DESCRIPTION
.
Citation preview
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.
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
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
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.
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.
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
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
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
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 . . .
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= ";
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 . . .
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;
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 {
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
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 . . .
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
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
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
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;}
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; }
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 . . .
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 . . .
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 . . .
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
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
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 . . .
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;}
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
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 . . .
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 . . .
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
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:
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;}
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;
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;
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
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 << "]=" ;
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
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++)
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()
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;
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;
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 . . .
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.)