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
Embed
Seminarski rad - BorkaPavlovic - Visi programski jezici i RAD alati programiranje u c++
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
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++
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,
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.
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
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
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; } _________________________________________________________________________________
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
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;}
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
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.
{ if(i==j) //članovi su na dijagonali ako je i=j { cout<<"A["<<i<<","<<j<<"]="<<A[i][j]<<endl; } } system ("Pause"); return 0; } ________________________________________________________________________________
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