![]() Ласло Краус |
Објектно програмирање - колоквијуми Први колоквијум Прва група 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.