![]() Ласло Краус |
Објектно програмирање - колоквијуми Први колоквијум Прва група 22. 4. 2007. |
---|
Скуп целих бројева садржи једноструко спрегнуту неуређену листу чији сви елементи садрже различите бројеве. Написати на језику C++ класу за скупове целих бројева. Предвидети:
skup1=skup2
),
skup+=br
– нови бројеви се стављају на крај листе),
skup1+=skup2
и skup1+skup2
),
it<<skup
).
Написати на језику C++ програм који:
ispitx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.N:
(Nastava
on
\\Xs200-2
) у каталогу ObjektnoProg\RSx
(x
је број радне станице за којим се ради).// skup.h #include <iostream> using namespace std; class Skup { struct Elem { int broj; Elem* sled; Elem (int b) { broj = b; sled = 0; } }; Elem *prvi, *posl; int duz; void kopiraj (const Skup& s); void brisi (); public: Skup () { prvi = posl = 0; duz = 0; } Skup (int b) { prvi = posl = new Elem (b); duz = 1; } Skup (const Skup &s) { kopiraj (s); } ~Skup () { brisi (); } Skup& operator= (const Skup& s) { if (this != &s) { brisi (); kopiraj (s); } return *this; } int brElem () const { return duz; } Skup& operator+= (int b); Skup& operator+= (const Skup& s); friend Skup operator+ (const Skup& s1, const Skup& s2) { return Skup (s1) += s2; } friend ostream& operator<< (ostream& it, const Skup& s); };(садржај)
// skup.cpp #include "skup.h" void Skup::kopiraj (const Skup& s) { prvi = posl = 0; duz = s.duz; for (Elem* tek=s.prvi; tek; tek=tek->sled) posl = (!prvi ? prvi : posl->sled) = new Elem (tek->broj); } void Skup::brisi () { while (prvi) { Elem* stari = prvi; prvi = prvi->sled; delete stari; } posl = 0; duz = 0; } Skup& Skup::operator+= (int b) { Elem* tek = prvi; while (tek && tek->broj != b) tek = tek->sled; if (!tek) { posl = (!prvi ? prvi : posl->sled) = new Elem (b); duz++; } return *this; } Skup& Skup::operator+= (const Skup& s) { for (Elem* tek=s.prvi; tek; tek=tek->sled) *this += tek->broj; return *this; } ostream& operator<< (ostream& it, const Skup& s) { it << '{'; for (Skup::Elem* tek=s.prvi; tek; tek=tek->sled) { it << tek->broj; if (tek->sled) it << ','; } return it << '}'; }
// test.cpp #include "skup.h" #include <iostream> using namespace std; Skup citaj () { cout << "n? "; int n; cin >> n; Skup s; cout << "s? "; for (int i=0; i<n; i++) { int b; cin >> b; s += b; } return s; } int main () { Skup s1 (citaj ()); Skup s2 (citaj ()); cout << "s1= " << s1 << endl; cout << "s2= " << s2 << endl; Skup s3 (s1+s2); cout << "s3= " << s3 << endl; }
n? 5 s? 2 6 3 4 1 n? 7 s? 0 3 9 5 4 3 8 s1= {2,6,3,4,1} s2= {0,3,9,5,4,8} s3= {2,6,3,4,1,0,9,5,8}
Copyright © 2010, Laslo Kraus
Последња ревизија: 4.10.2010.