View
246
Download
0
Category
Preview:
Citation preview
8/14/2019 Zadace (sve)
1/46
TP
Zadaca 1
1.
#include
#include
using namespace std;
enum Dani {Ponedjeljak,Utorak,Srijeda,Cetvrtak,Petak,Subota,Nedjelja};
enum Mjeseci{Januar,Februar,Mart,April,Maj,Juni,Juli,August,Septembar,Oktobar,Novembar,Decemb
ar};
void StampajKalendar(Mjeseci mjesec,Dani pocetni_dan,bool prestupna){
int a;if (mjesec==Januar) a=31;
if (mjesec==Februar) a=28;
if ((mjesec==Februar)&&(prestupna==true)) a=29;
if (mjesec==Mart) a=31;if (mjesec==April) a=30;
if (mjesec==Maj) a=31;
if (mjesec==Juni) a=30;if (mjesec==Juli) a=31;
if (mjesec==August) a=31;if (mjesec==Septembar) a=30;if (mjesec==Oktobar) a=31;
if (mjesec==Novembar) a=30;
if (mjesec==Decembar) a=31;cout
8/14/2019 Zadace (sve)
2/46
cout n;
for (int i=1;i> x;
a.push_back(x);}
int broj=0;
for (int i=0;i
8/14/2019 Zadace (sve)
3/46
bool c=false;
bool f=false;
for(int j=0;j
8/14/2019 Zadace (sve)
4/46
}
return v;
}
vector ProstiFaktori(int n){
vector v;
int x=n;while(n>1)
{
for(int i=2;i
8/14/2019 Zadace (sve)
5/46
cout
8/14/2019 Zadace (sve)
6/46
}
vector Transponovana(vector A){
TestMatrice(A);
vector B;B.resize(A.size());
for(int i = 0; i < (A.size()); i++)
B[i].resize(A[0].size());for(int i=0;i
8/14/2019 Zadace (sve)
7/46
try {
TestMatrice(a);
double F=FrobeniusovaNorma(a);cout
8/14/2019 Zadace (sve)
8/46
{
a[i].resize(i+1);
}for(int i=0;i
8/14/2019 Zadace (sve)
9/46
for(int i=0;i
8/14/2019 Zadace (sve)
10/46
pocetak:
cout > n;if (n
8/14/2019 Zadace (sve)
11/46
{
cout > x;
cout > y;
int a[x],b[y];
for(int i=0;i
8/14/2019 Zadace (sve)
12/46
}
return x;
}
int main()
{ cout > x;vector a(x); //unos i deklaracija vektora a
cout > y;
vector b(y); //unos i deklaracija vektora b
for(int i=0;i
8/14/2019 Zadace (sve)
13/46
template
struct Matrica {
int broj_redova, broj_kolona;Tip **elementi;
};
template
void UnistiMatricu(Matrica mat) {
if(mat.elementi == 0) return;for(int i = 0; i < mat.broj_redova; i++) delete[] mat.elementi[i];
delete[] mat.elementi;
}
template
Matrica StvoriMatricu(int broj_redova, int broj_kolona) {
Matrica mat;
mat.broj_redova = broj_redova; mat.broj_kolona = broj_kolona;mat.elementi = new Tip*[broj_redova];
for(int i = 0; i < broj_redova; i++) mat.elementi[i] = 0;try {
for(int i = 0; i < broj_redova; i++)
mat.elementi[i] = new Tip[broj_kolona];
}catch(...) {
UnistiMatricu(mat);
throw;}
return mat;
}
template
void UnesiMatricu(char ime_matrice, Matrica &mat) {for(int i = 0; i < mat.broj_redova; i++)
for(int j = 0; j < mat.broj_kolona; j++) {
cout
8/14/2019 Zadace (sve)
14/46
if (treba_brisati==true) UnistiMatricu(mat);
}
template
Matrica ZbirMatrica(const Matrica &m1,const Matrica &m2) {
if(m1.broj_redova != m2.broj_redova
|| m1.broj_kolona != m2.broj_kolona)throw "Matrice nemaju jednake dimenzije!\n";
Matrica m3 = StvoriMatricu(m1.broj_redova, m1.broj_kolona);
for(int i = 0; i < m1.broj_redova; i++)
for(int j = 0; j < m1.broj_kolona; j++)m3.elementi[i][j] = m1.elementi[i][j] + m2.elementi[i][j];
return m3;
}
template
Matrica ProduktMatrica(const Matrica &m1,const Matrica &m2) {
if(m1.broj_kolona != m2.broj_redova)
throw "Matrice nisu saglasne za mnozenje!\n";
Matrica m3 = StvoriMatricu(m1.broj_redova, m2.broj_kolona);for(int i = 0; i < m1.broj_redova; i++)
for(int j = 0; j < m2.broj_kolona; j++)
{double suma(0);
for(int k = 0; k < m2.broj_redova; k++)
suma += m1.elementi[i][k] * m2.elementi[k][j];m3.elementi[i][j] = suma;
}
return m3;}
template
Matrica StepenMatrica(const Matrica &m1, int n) {if(m1.broj_redova != m1.broj_kolona)
throw "Matrica nisu kvadratne";
Matrica m3=StvoriMatricu(m1.broj_redova,m1.broj_redova);m3=m1;
if (n>1)
{for(int i=2; i
8/14/2019 Zadace (sve)
15/46
}
int main() {Matrica a = {0, 0, 0}, b = {0, 0, 0};
int m,n,x,y;
bool brisanje=false;cout > m >> n;
cout > x >> y;try {
a = StvoriMatricu(m, n);
b = StvoriMatricu(x, y);
}catch(...) {
cout
8/14/2019 Zadace (sve)
16/46
}
catch(const char c[]) {
cout
8/14/2019 Zadace (sve)
17/46
if (a==Jug) y=y-korak;
}
void Robot::Nalijevo() {
Pravci a=Orjentacija();
if (a==Sjever) p=Zapad;if (a==Istok) p=Sjever;
if (a==Zapad) p=Jug;
if (a==Jug) p=Istok;}
void Robot::Nadesno() {
Pravci a=Orjentacija();if (a==Sjever) p=Istok;
if (a==Istok) p=Jug;
if (a==Zapad) p=Sjever;
if (a==Jug) p=Zapad;}
void Robot::Ispisi() const {
Pravci a=Orjentacija();
if (a==Sjever) cout
8/14/2019 Zadace (sve)
18/46
cin >> a;
if (a==1) {
r.Nalijevo();r.Ispisi();
}
if (a==2) {r.Nadesno();
r.Ispisi();
}if (a==3) {
int pomak;
cout pomak;r.PomjeriSe(pomak);
r.Ispisi();
}
if (a==0) {r.Ispisi();
break;}
}
system("PAUSE");
return EXIT_SUCCESS;}
4.
#include
#include
using namespace std;
enum Mjeseci {Januar, Februar, Mart, April, Maj, Juni, Juli, August, Septembar,
Oktobar, Novembar, Decembar};enum Dani {Ponedjeljak, Utorak, Srijeda, Cetvrtak, Petak, Subota, Nedjelja};
class Datum {int d, g;
Mjeseci m;
public:Datum(int dan, Mjeseci mjesec, int godina) {Postavi(dan,mjesec,godina);}
void Postavi(int dan, Mjeseci mjesec, int godina);
int Dan() const { return d; }
Mjeseci Mjesec() const { return m; }
8/14/2019 Zadace (sve)
19/46
char *ImeMjeseca() const;
int Godina() const { return g; }
int BrojDanaOdPocetkaGodine() const;Dani DanUSedmici() const;
char *ImeDanaUSedmici() const;
void Sljedeci();void Prethodni();
void PomjeriZa(int broj_dana);
void Ispisi() const;};
void Datum::Postavi (int dan, Mjeseci mjesec, int godina) {
int mj;for(int i=1;i 12 || dan > broj_dana[mj-1])throw "Neispravan datum!\n";
d = dan; m = mjesec; g = godina;}
char *Datum::ImeMjeseca() const {int x;
if (Mjesec()==Januar||Mjesec()==August) x=6;
if (Mjesec()==Februar||Mjesec()==Oktobar) x=7;if (Mjesec()==Mart||Mjesec()==Juni||Mjesec()==Juli) x=4; //ovdje odredjujemo
duzinu znakovnog niza c[]
if (Mjesec()==April) x=5;if (Mjesec()==Maj) x=3;
if (Mjesec()==Septembar) x=9;
if (Mjesec()==Novembar||Mjesec()==Decembar) x=8;char c[x];
if (Mjesec()==Januar) strcpy(c,"Januar");
if (Mjesec()==Februar) strcpy(c,"Februar");if (Mjesec()==Mart) strcpy(c,"Mart");
if (Mjesec()==April) strcpy(c,"April");
if (Mjesec()==Maj) strcpy(c,"Maj");if (Mjesec()==Juni) strcpy(c,"Juni");
if (Mjesec()==Juli) strcpy(c,"Juli");
if (Mjesec()==August) strcpy(c,"August");if (Mjesec()==Septembar) strcpy(c,"Septembar");
if (Mjesec()==Oktobar) strcpy(c,"Oktobar");
if (Mjesec()==Novembar) strcpy(c,"Novembar");
if (Mjesec()==Decembar) strcpy(c,"Decembar");
8/14/2019 Zadace (sve)
20/46
return c;
}
int Datum::BrojDanaOdPocetkaGodine() const {
int broj=0;int mj;
for(int i=0;i
8/14/2019 Zadace (sve)
21/46
broj=BrojDanaOdPocetkaGodine()-1;
for(int i=2007;i
8/14/2019 Zadace (sve)
22/46
g--;
}
}}
void Datum::PomjeriZa(int broj_dana) {int x;
if(broj_dana
8/14/2019 Zadace (sve)
23/46
int y;
if (DanUSedmici()==Ponedjeljak) y=11;
if (DanUSedmici()==Utorak || DanUSedmici()==Subota) y=6;if (DanUSedmici()==Srijeda) y=7;
if (DanUSedmici()==Cetvrtak || DanUSedmici()==Nedjelja) y=8;
if (DanUSedmici()==Petak) y=5;
cout
8/14/2019 Zadace (sve)
24/46
Zadaca 4
1.
#include
#include #include
using namespace std;
class Vodostaji {
Vodostaji(const Vodostaji&);
Vodostaji &operator=(const Vodostaji&);int *niz;
int trenutni_broj,kapacitet; //kapacitet smo mogli definirati i kao const
public:
explicit Vodostaji(int kapacitet) : trenutni_broj(0), kapacitet(kapacitet), niz(newint[kapacitet]) {}
~Vodostaji() {delete[] niz;}void NoviVodostaj(int vodostaj);
int RazlikaVodostaja() const; //inspektori
int BrojDanaVecih(int vodostaj) const;
int BrojDanaManjih(int vodostaj) const;double Prosjek() const;
void Obrisi() {trenutni_broj=0;}
void Ispisi();};
void Vodostaji::NoviVodostaj(int vodostaj) {if(trenutni_broj==kapacitet) throw "Previse unesenih vodostaja!";
niz[trenutni_broj]=vodostaj;
trenutni_broj++;}
int Vodostaji::RazlikaVodostaja() const {
int min=niz[0];int max=niz[0];
for(int i=1;i
8/14/2019 Zadace (sve)
25/46
int broj=0;
for(int i=0;ivodostaj) broj++;}
return broj;
}
int Vodostaji::BrojDanaManjih(int vodostaj) const {
int broj=0;for(int i=0;i
8/14/2019 Zadace (sve)
26/46
cout
8/14/2019 Zadace (sve)
27/46
niz = new Tip[v.broj]; //ovako je uradjeno u predavanju
kapacitet = v.kapacitet;
}broj=v.broj;
for(int i = 0; i < v.broj; i++) niz[i] = v.niz[i];
return *this;}
template void Vreca::Dodaj(Tip element) {
for(int i=0; i
8/14/2019 Zadace (sve)
28/46
cin >> n;
Vreca v(n);
for(int i=0;i
8/14/2019 Zadace (sve)
29/46
friend Polinom operator * (const Polinom &p1, const Polinom &p2);
friend Polinom operator / (const Polinom &p1, const Polinom &p2);
friend Polinom &operator += (Polinom &p1, const Polinom &p2);friend Polinom &operator -= (Polinom &p1, const Polinom &p2);
friend Polinom &operator *= (Polinom &p1, const Polinom &p2);
friend Polinom &operator /= (Polinom &p1, const Polinom &p2);friend bool operator == (Polinom &p1, const Polinom &p2);
friend bool operator != (Polinom &p1, const Polinom &p2);
friend ostream &operator
8/14/2019 Zadace (sve)
30/46
for (int i=0; i=0; i--)
vrijednost=vrijednost*x + elementi[i];
return vrijednost*x;
}Polinom :: Polinom operator * (const Polinom &p1, const Polinom &p2)
{if (p1.ime != p2.ime)
throw "Promjenljive su razlicite!!!";
Polinom temp(p1.stepen+p2.stepen, p1.ime);
for (int i=0; i
8/14/2019 Zadace (sve)
31/46
pomocni=pomocni-kontrolni;
s=kontrolni.stepen-1;pomocni.stepen-=kontrolni.stepen;
}
return temp;}
Polinom :: Polinom &operator += (Polinom &p1, const Polinom &p2)
{return p1=p1+p2;
}
Polinom :: Polinom &operator -= (Polinom &p1, const Polinom &p2)
{return p1=p1-p2;
}
Polinom :: Polinom &operator *= (Polinom &p1, const Polinom &p2)
{ return p1=p1*p2;
}Polinom :: Polinom &operator /= (Polinom &p1, const Polinom &p2)
{
return p1=p1/p2;
}bool operator == (Polinom &p1, const Polinom &p2)
{
if (p1.ime !=p2.ime)throw "Razlicite promjenljive";
if (p1.stepen != p2.stepen )
return false;for (int i=0; i
8/14/2019 Zadace (sve)
32/46
ostream &operator
8/14/2019 Zadace (sve)
33/46
}
catch (const char poruka[])
{cout
8/14/2019 Zadace (sve)
34/46
}
Kvaternion operator-(const Kvaternion &k1,const Kvaternion &k2){return Kvaternion(k1.x - k2.x,k1.y - k2.y,k1.z - k2.z,k1.t - k2.t);
}
Kvaternion operator*(const Kvaternion &k1,const Kvaternion &k2){
Kvaternion k;
k.x = k1.x * k2.x - k1.y * k2.y - k1.z * k2.z - k1.t * k2.t;k.y = k1.x * k2.y + k1.y * k2.z + k1.z * k2.t - k1.t * k2.z;
k.z = k1.x * k2.z - k1.y * k2.t + k1.z * k2.x + k1.t * k2.y;
k.t = k1.x * k2.t + k1.y * k2.z - k1.z * k2.y + k1.t * k2.x;
return k;}
Kvaternion operator/(const Kvaternion &k1,const Kvaternion &k2){
Kvaternion k;k.x = (k1.x * k2.x + k1.y * k2.y + k1.z * k2.z + k1.t * k2.t)/(k2.x * k2.x + k2.y *
k2.y + k2.z * k2.z + k2.t * k2.t);k.y = (-k1.x * k2.y + k1.y * k2.x - k1.z * k2.t + k1.t * k2.z)/(k2.x * k2.x + k2.y *
k2.y + k2.z * k2.z + k2.t * k2.t);
k.z = (-k1.x * k2.z + k1.y * k2.t + k1.z * k2.x - k1.t * k2.y)/(k2.x * k2.x + k2.y *
k2.y + k2.z * k2.z + k2.t * k2.t);k.t = (-k1.x * k2.t - k1.y * k2.z + k1.z * k2.y + k1.t * k2.x)/(k2.x * k2.x + k2.y * k2.y
+ k2.z * k2.z + k2.t * k2.t);
return k;}
Kvaternion &Kvaternion::operator+=(const Kvaternion &k) {x += k.x; y += k.y; z += k.z; t += k.t;
return *this;
}
Kvaternion &Kvaternion::operator-=(const Kvaternion &k) {
x -= k.x; y -= k.y; z -= k.z; t -= k.t;
return *this;}
Kvaternion &Kvaternion::operator*=(const Kvaternion &k) {x *= k.x; y *= k.y; z *= k.z; t *= k.t;
return *this;
}
Kvaternion &Kvaternion::operator/=(const Kvaternion &k) {
x /= k.x; y /= k.y; z /= k.z; t /= k.t;
return *this;
8/14/2019 Zadace (sve)
35/46
}
bool operator==(const Kvaternion &k1, const Kvaternion &k2) {return (k1.x==k2.x && k1.y==k2.y && k1.z==k2.z && k1.t==k2.t);
}
bool operator!=(const Kvaternion &k1, const Kvaternion &k2) {
return (k1.x!=k2.x || k1.y!=k2.y || k1.z!=k2.z || k1.t==k2.t);
}
Kvaternion operator-(const Kvaternion &k) {
Kvaternion k1;
k1.x=-k.x; k1.y=-k.y; k1.z=-k.z; k1.t=-k.t;return k1;
}
ostream &operator> znak2 >> z >> znak3 >> t >> znak4;
if(znak0 != '(' || znak1 != ',' || znak2 != ',' || znak3 != ',' || znak4 != ')')
cin.setstate(ios::failbit);else k = Kvaternion(x, y, z, t);
}
double abs(const Kvaternion &k) {
return sqrt(k.x * k.x + k.y * k.y + k.z * k.z + k.t * k.t);
}
int main() {
Kvaternion k1, k2(3, 4, 2, 5), k3(5), k4;
cin >> k4;cout
8/14/2019 Zadace (sve)
36/46
getch();
return 0;
}
2.
#include
#include #include
#include
using namespace std;
class Razlomak{
int brojnik,nazivnik;
public:
Razlomak(int a,int b=1);Razlomak():brojnik(0),nazivnik(1){}
int Brojnik(){return brojnik;}int Nazivnik(){return nazivnik;}
friend Razlomak operator + (const Razlomak &r1,const Razlomak &r2)
{return
Razlomak(r1.brojnik*r2.nazivnik+r2.brojnik*r1.nazivnik,r1.nazivnik*r2.nazivnik);}friend Razlomak operator - (const Razlomak &r1,const Razlomak &r2)
{return Razlomak(r1.brojnik*r2.nazivnik-
r2.brojnik*r1.nazivnik,r1.nazivnik*r2.nazivnik);}friend Razlomak operator * (const Razlomak &r1,const Razlomak &r2){return
Razlomak(r1.brojnik*r2.brojnik,r1.nazivnik*r2.nazivnik);}
friend Razlomak operator / (const Razlomak &r1,const Razlomak &r2){returnRazlomak(r1.brojnik*r2.nazivnik,r1.nazivnik*r2.brojnik);}
friend Razlomak operator + (const Razlomak &r1){return r1;}
friend Razlomak operator - (const Razlomak &r1){return Razlomak(r1.brojnik*-1,r1.nazivnik);}
friend Razlomak &operator +=(Razlomak &r1,const Razlomak &r2){return r1 = r1
+ r2;}
friend Razlomak &operator -=(Razlomak &r1,const Razlomak &r2){return r1 = r1 -r2;}
friend Razlomak &operator *=(Razlomak &r1,const Razlomak &r2){return r1 = r1 -
r2;}friend Razlomak &operator /=(Razlomak &r1,const Razlomak &r2){return r1 = r1 -
r2;}
friend Razlomak &operator ++(Razlomak &r1){return r1 = Razlomak(r1.brojnik +r1.nazivnik,r1.nazivnik);}
friend Razlomak operator ++(Razlomak &r1,int)
{Razlomak tmp(r1.brojnik,r1.nazivnik);r1 = Razlomak(r1.brojnik +
r1.nazivnik,r1.nazivnik);return tmp;}
8/14/2019 Zadace (sve)
37/46
friend Razlomak &operator --(Razlomak &r1){return r1 = Razlomak(r1.brojnik -
r1.nazivnik,r1.nazivnik);}
friend Razlomak operator --(Razlomak &r1,int){Razlomak tmp(r1.brojnik,r1.nazivnik);r1 = Razlomak(r1.brojnik -
r1.nazivnik,r1.nazivnik);return tmp;}
friend ostream &operator (istream &ulaz,Razlomak &r1);
friend bool operator
8/14/2019 Zadace (sve)
38/46
char znak;
ulaz>>r1.brojnik;
ulaz>>ws;if (ulaz.peek() != '/')
{
r1.nazivnik = 1;}
else
{ulaz>>znak;
if (znak !='/')ulaz.setstate(ios::failbit);
else ulaz>>r1.nazivnik;
}r1 = Razlomak (r1.brojnik,r1.nazivnik);
return ulaz;
}
int main(){
Razlomak r1(10,15);Razlomak r2(1,6);
cout
8/14/2019 Zadace (sve)
39/46
return 0;
}
3.
#include
#include
using namespace std;template
class Skup
{
int broj_elemenata,kapacitet;Tip *elementi;
public:
explicit Skup(int max):broj_elemenata(0),kapacitet(max),elementi(new Tip[max]){}
~Skup(){delete[] elementi;broj_elemenata = 0;}Skup(const Skup &s1);
Skup &operator = (const Skup &s1);void Dodaj(Tip a);
int BrojElemenata(){return broj_elemenata;}
bool JeUSkupu(Tip a)const ;
template
friend bool operator !(Skup &s1){return s1.broj_elemenata == 0;}
template friend ostream &operator
8/14/2019 Zadace (sve)
40/46
friend bool operator >=(const Skup &s1, const Skup &s2){return
s2
8/14/2019 Zadace (sve)
41/46
throw "Nije moguce dodavati nove elemente!\n";
if (!JeUSkupu(a))
{elementi[broj_elemenata] = a;
broj_elemenata++;
}}
template
ostream &operator
8/14/2019 Zadace (sve)
42/46
if (s1.elementi[i] == s2.elementi[j])
s3.Dodaj(s1.elementi[i]);
}}
return s3;
}
template Skup operator - (const Skup &s1, const Skup &s2)
{
Skup s3(s1.broj_elemenata);
for (int i = 0 ; i < s1.broj_elemenata ; i++)if (!s2.JeUSkupu(s1.elementi[i]))
s3.Dodaj(s1.elementi[i]);
return s3;}
template
bool operator
8/14/2019 Zadace (sve)
43/46
cout
8/14/2019 Zadace (sve)
44/46
cout
8/14/2019 Zadace (sve)
45/46
Student_postdiplomac::Student_postdiplomac(string ime, string prezime, int
broj_indeksa, int godina_diplomiranja):Student(ime, prezime, broj_indeksa), godina_diplomiranja(godina_diplomiranja){}
void Student_postdiplomac::IspisiPodatke()const{cout
8/14/2019 Zadace (sve)
46/46
studenti[broj_studenata]=new Student_VII_stepena(ime,prezime,broj_indeksa);
else {
studenti[broj_studenata]=newStudent_postdiplomac(ime,prezime,broj_indeksa,godina_diplomiranja);
}
broj_studenata++;}
void StudentskaSluzba::UpisiOcjenu(int broj_indeksa, int ocjena){for(int i=0; iget_broj_indeksa()==broj_indeksa){
studenti[i]->UpisiOcjenu(ocjena);
return;}
}
}
void StudentskaSluzba::IspisiSpisak(){
for(int i=0; iIspisiPodatke();
}
int main(int argc, char *argv[]){
StudentskaSluzba *etf = new StudentskaSluzba(10);
etf->UpisiStudenta(11,"Ivo","Ivic",6);
etf->UpisiStudenta(12,"Meho","Mehic",1998);
etf->UpisiStudenta(13,"Vaso","Vasic",7);etf->UpisiStudenta(14,"Ibro","Ibric",6);
etf->UpisiStudenta(15,"Marko","Markovic",2001);
etf->UpisiOcjenu(11,8);etf->UpisiOcjenu(11,7);
etf->UpisiOcjenu(11,9);
etf->UpisiOcjenu(12,7);
etf->UpisiOcjenu(12,8);etf->UpisiOcjenu(13,6);
etf->UpisiOcjenu(13,10);
etf->UpisiOcjenu(14,7);etf->UpisiOcjenu(14,8);
etf->UpisiOcjenu(14,8);
etf->UpisiOcjenu(15,9);etf->IspisiSpisak();
system("PAUSE");
Recommended