![]() Ласло Краус |
Објектно програмирање - колоквијуми Први колоквијум Прва група 24. 4. 2005. |
---|
Пројектовати на језику C++ класу за верижне разломке са реалним коефицијентима, задате формулом: v(x) = a0 / (x+a1 / (x+a2 / (…+an−1 / (x+an)…))). Предвидети:
vr1=vr2
),
+vr
),
vr[i]
– недозвољени индекс прекида програм),
vr(x)
),
dat<<vr
) у облику vr[
a0,
a1,…,
an]
.
Саставити на језику C++ главни програм који:
studentx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.N:
(Nastava
on
\\Xs200-2
) у каталогу ObjektnoProg\RSx
(x
је број радне станице за којим се ради).// verizni.h #include <iostream> #include <cstdlib> using namespace std; class Verizni { double* a; int n; void kopiraj (const Verizni& v); void brisi () { delete [] a; } public: explicit Verizni (int nn=5); Verizni (const Verizni& v) { kopiraj (v); } ~Verizni () { brisi (); } Verizni& operator= (const Verizni& v) { if (this != &v) { brisi (); kopiraj (v); } return *this; } int operator+ () const { return n; } 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]; } double operator() (double x) const; friend ostream& operator<< (ostream& d, const Verizni& v); };(садржај)
// verizni.cpp #include "verizni.h" void Verizni::kopiraj (const Verizni& v){ a = new double [n = v.n+1]; for (int i=0; i<=n; i++) a[i] = v.a[i]; } Verizni::Verizni (int nn) { a = new double [(n=nn) + 1]; for (int i=0; i<=n; i++) a[i] = i+1; } double Verizni::operator() (double x) const { double s = a[n]; for (int i=n-1; i>=0; s=a[i--]/(x+s)); return s; } ostream& operator<< (ostream& d, const Verizni& v) { d << "vr["; for (int i=0; i<=v.n; i++) { if (i) d << ','; d << v.a[i]; } return d << ']'; }
// veriznit.cpp #include "verizni.h" #include <iostream> using namespace std; int main () { while (true) { cout << "n? "; int n; cin >> n; if (n <= 0) break; Verizni v(n); while (true) { cout << "i,a[i]? "; int i; cin >> i; if (i<0 || i>+v) break; double a; cin >> a; v[i] = a; } cout << v << endl; cout << "xmin, xmax, dx? "; double xmin, xmax, dx; cin >> xmin >> xmax >> dx; for (double x=xmin; x<=xmax; x+=dx) cout << x << '\t' << v(x) << endl; } return 0; }
n? 3 i,a[i]? 2 1 i,a[i]? 1 5 i,a[i]? -1 vr[1,5,1,4] xmin, xmax, dx? 0 4 .25 0 0.05 0.25 0.0947595 0.5 0.134715 0.75 0.167913 1 0.193548 1.25 0.211816 1.5 0.223565 1.75 0.229945 2 0.232143 2.25 0.231231 2.5 0.228099 2.75 0.223452 3 0.217822 3.25 0.211603 3.5 0.20508 3.75 0.198453 4 0.19186 n? 0
Copyright © 2010, Laslo Kraus
Последња ревизија: 4.10.2010.