![]() Ласло Краус |
Објектно програмирање - колоквијуми Први колоквијум Друга група 24. 4. 2005. |
---|
Пројектовати на језику C++ класу за редове целих бројева са ограниченим капацитетима. Предвидети:
red1=red2
),
+red
– није капацитет реда!),
red+=b
– стављање у пун ред прекида програм),
--red
– узимање из празног реда прекида програм),
red[i]
– први податак у реду има индекс 0 – недозвољени индекс прекида програм),
dat<<red
) у облику r[
a0,
a1,
…,
an−1]
, где је n број података у реду (није капацитет реда!).
Саставити на језику C++ главни програм који:
studentx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.N:
(Nastava
on
\\Xs200-2
) у каталогу ObjektnoProg\RSx
(x
је број радне станице за којим се ради).// red.h #include <iostream> #include <cstdlib> using namespace std; class Red { int *a, kap, duz, prvi, posl; void kopiraj (const Red& r); void brisi () { delete [] a; } public: explicit Red (int k=5) { a = new int [kap = k]; duz = prvi = posl = 0; } Red (const Red& r) { kopiraj (r); } ~Red () { brisi (); } Red& operator= (const Red& r) { if (this != &r) { brisi (); kopiraj (r); } return *this; } int operator+ () const { return duz; } bool pun () const { return duz == kap; } bool prazan () const { return duz == 0; } Red& operator+= (int b) { if (duz == kap) exit (1); a[posl++] = b; duz++; if (posl == kap) posl = 0; return *this; } int operator-- () { if (duz == 0) exit (2); int b = a[prvi++]; duz--; if (prvi == kap) prvi = 0; return b; } int& operator[] (int i) { if (i<0 || i>=duz) exit (3); return a[(prvi+i)%kap]; } const int& operator[] (int i) const { if (i<0 || i>=duz) exit (3); return a[(prvi+i)%kap]; } friend ostream& operator<< (ostream& d, const Red& r); };(садржај)
// red.cpp #include "red.h" void Red::kopiraj (const Red& r) { a = new int [kap = r.kap]; for (int i=0; i<kap; i++) a[i] = r.a[i]; duz = r.duz; prvi = r.prvi; posl = r.posl; } ostream& operator<< (ostream& d, const Red& r) { d << "r["; for (int i=0; i<r.duz; i++) { if (i) d << ','; d << r.a[(r.prvi+i)%r.kap]; } return d << ']'; }
// redt.cpp #include "red.h" #include <iostream> int main () { while (true) { cout << "k? "; int k; cin >> k; if (k < 3) break; Red r (k); for (int i=0; i<k-2; i++) { cout << "Dva broja? "; int a, b; cin >> a >> b; (r += a) += b; cout << "Uzeto= " << --r << endl; } cout << "Red= " << r << endl; } return 0; }
k? 6 Dva broja? 1 2 Uzeto= 1 Dva broja? 3 4 Uzeto= 2 Dva broja? 5 6 Uzeto= 3 Dva broja? 7 8 Uzeto= 4 Red= r[5,6,7,8] k? 0
Copyright © 2010, Laslo Kraus
Последња ревизија: 4.10.2010.