![]() Ласло Краус |
Објектно програмирање - колоквијуми Први колоквијум Друга група 25. 4. 2004. |
|---|
Пројектовати на језику C++ класу за скупове целих бројева. Предвидети:
skup1=skup2),+skup),skup%br),skup+=br),skup1+skup2),skup(i)),d<<skup).Саставити на језику C++ главни програм који:
studentx (x је број радне станице за којим се ради). Лозинка на свакој радној станици је student.N: (Nastava on \\Xs200-2) у каталогу ObjektnoProg\RSx (x је број радне станице за којим се ради).
// skup.h
#include <iostream.h>
#include <stdlib.h>
class Skup {
int *niz, duz;
void kopiraj (const Skup& s);
void brisi () { delete [] niz; niz = 0; duz = 0; }
public:
Skup () { niz = 0; duz = 0; }
Skup (const Skup& s) {kopiraj(s);}
~Skup () { brisi (); }
Skup& operator= (const Skup& s) {
if (this != &s) { brisi (); kopiraj (s); }
return *this;
}
int operator+ () const { return duz; }
bool operator% (int b) const;
Skup& operator+= (int b);
friend Skup operator+ (const Skup& s1, const Skup& s2);
int operator() (int i) {
if (i<0 || i>=duz) exit (1);
return niz[i];
}
friend ostream& operator<< (ostream& d, const Skup& s);
};
// skup.cpp
#include "skup.h"
void Skup::kopiraj (const Skup& s) {
niz = new int [duz = s.duz];
for (int i=0; i<duz; i++) niz[i] = s.niz[i];
}
bool Skup::operator% (int b) const {
for (int i=0; i<duz; i++)
if (niz[i] == b) return true;
return false;
}
Skup& Skup::operator+= (int b) {
if (! (*this % b)) {
int *n = new int [duz+1];
for (int i=0; i<duz; i++) n[i] = niz[i];
n[duz++] = b;
delete [] niz;
niz = n;
}
return *this;
}
Skup operator+ (const Skup& s1, const Skup& s2) {
Skup s (s1);
for (int i=0; i<s2.duz; s+=s2.niz[i++]);
return s;
}
ostream& operator<<
(ostream& d, const Skup& s) {
d << '{';
for (int i=0; i<s.duz; i++) {
if (i > 0) d << ',';
d << s.niz[i];
}
return d << '}';
}
// skupt.cpp
#include "skup.h"
#include <iostream.h>
int main () {
Skup s1, s2;
int n, i;
cout << "n1? "; cin >> n;
cout << "niz1? ";
for (i=0; i<n; i++) { int b; cin >> b; s1 += b; }
cout << "n2? "; cin >> n;
cout << "niz2? ";
for (i=0; i<n; i++) { int b; cin >> b; s2 += b; }
cout << "s1 = " << s1 << endl;
cout << "s2 = " << s2 << endl;
Skup s3 (s1+s2);
cout << "s3 = " << s3 << endl;
double sr = 0;
for (i=0; i<+s3; sr+=s3(i++));
if (+s3) sr /= +s3;
cout << "Sr. vr.= " << sr << endl;
return 0;
}
(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 4.10.2010.