![]() Ласло Краус |
Објектно програмирање - колоквијуми Први колоквијум Прва група 12. 4. 2006. |
---|
Саставити на језику C++ класу изломљених линија које се представљају низом реалних бројева који чине дужине узастопних сегмената. Предвидети:
lin1=lin2
),
lin[i]
– недозвољен индекс прекида програм),
lin1==lin2
),
lin1<lin2
),
dat<<lin
) у облику lin[
d,
d,…,
d]
, где је d дужина једног сегмента.
Саставити на језику C++ главни програм који:
studentx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.N:
(Nastava
on
\\Xs200-2
) у каталогу ObjektnoProg\RSx
(x
је број радне станице за којим се ради).// linija.h #include <cstdlib> #include <iostream> using namespace std; class Linija { double* a; int n; void kopiraj (const Linija& lin); void brisi () { delete [] a; } public: explicit Linija (int k=1); Linija (const Linija& lin) { kopiraj (lin); } ~Linija () { brisi (); } Linija& operator= (const Linija& lin) { if (this != &lin) { brisi (); kopiraj (lin); } return *this; } double duz () const; double& operator[] (int i) { if (i<0 || i>=n) exit (1); return a[i]; } const double& operator[](int i) const { if (i<0 || i>=n) exit (1); return a[i]; } friend bool operator== (const Linija& lin1, const Linija& lin2); friend bool operator< (const Linija& lin1, const Linija& lin2) { return lin1.duz () < lin2.duz (); } friend ostream& operator<< (ostream& dat, const Linija& lin); };(садржај)
// linija.cpp #include "linija.h" void Linija::kopiraj (const Linija& lin) { a = new double [n = lin.n]; for (int i=0; i<n; i++) a[i]=lin.a[i]; } Linija::Linija (int k) { a = new double [n = k]; for (int i=0; i<n; a[i++]=1); } double Linija::duz () const { double d = 0; for (int i=0; i<n; d+=a[i++]); return d; } bool operator== (const Linija& lin1, const Linija& lin2) { if (lin1.n != lin2.n) return false; for (int i=0; i<lin1.n; i++) if (lin1[i] != lin2[i]) return false; return true; } ostream& operator<< (ostream& dat, const Linija& lin) { dat << "lin["; for (int i=0; i<lin.n; i++) { if (i) dat << ','; dat << lin.a[i]; } return dat << ']'; }
// test.cpp #include "linija.h" #include <iostream> using namespace std; int main () { while (true) { cout << "Broj linija? "; int n; cin >> n; if (n <= 0) break; Linija* linije = new Linija [n]; for (int i=0; i<n; i++) { cout << i << ". linija? "; int m; cin >> m; linije[i] = Linija (m); for (int j=0; j<m; cin>>linije[i][j++]); } Linija min = linije[0], max = min; for (int i=1; i<n; i++) { if (linije[i] < min) min = linije[i]; if (max < linije[i]) max = linije[i]; } cout << "min= " << min << endl << "max= " << max << endl; delete [] linije; } return 0; }
Broj linija? 4 0. linija? 3 2 4 3 1. linija? 5 1 2 2 1 1 2. linija? 2 5 6 3. linija? 4 1 1 1 1 min= lin[1,1,1,1] max= lin[5,6] Broj linija? 0
Copyright © 2010, Laslo Kraus
Последња ревизија: 4.10.2010.