Ласло Краус |
ПЈМП Први парцијални испит 8. 3. 2001. |
---|
=
), да се приступи елементу са задатим индексом ([]
) и да се дохвати дужина низа (унарни +
). У случају недозвољеног индекса, пријављује се изузетак целобројног типа са вредношћу једнаком том недозвољеном индексу.
()
) и уписивање симболичког облика те функције (на пример формулу) у неки излазни ток (<<
).
VRazl[
a0,
a1,
...,
an-1]
. У случају покушаја дељења нулом, пријављује се изузетак целобројног типа са вредношћу нула.
X
:
а) Шта се постиже дефиницијом класе class X {
X() {};
public:
static X* c() { return new X;}
};
X
на горњи начин?
б) Написати пример креирања објекта класе X
у функцији main()
.
// klase.h - Definicije klasa.
#include <iostream.h>
class Niz {
protected:
double *a; int n;
private:
void kopiraj (const Niz &niz);
public:
Niz (int k=10) { a = new double[n=k]; }
Niz (const Niz &niz) { kopiraj (niz); }
~Niz () { delete [] a; }
Niz & operator= (const Niz &niz) {
if (this != &niz) { delete [] a; kopiraj (niz); }
return *this;
}
double & operator[] (int i) const {
if (i<0 || i>=n) throw i;
return a[i];
}
int operator+ () const { return n; }
};
class Fun {
virtual void pisi (ostream &d) const=0;
public:
virtual double operator() (double x) const =0;
friend ostream & operator<< (ostream &d, const Fun &f)
{ f.pisi (d); return d; }
};
class VRazlomak: public Niz, public Fun {
virtual void pisi (ostream &d) const;
public:
VRazlomak (int n);
double operator() (double x) const;
};
// klase.cpp - Definicije metoda klasa.
#include "klase.h"
void Niz::kopiraj (const Niz &niz) {
a = new double [n=niz.n];
for (int i=0; i<n; i++) a[i] = niz.a[i];
}
VRazlomak::VRazlomak (int n): Niz (n) {
for (int i=0; i<n; i++) a[i] = i+1;
}
void VRazlomak::pisi (ostream &d) const {
d << "VRazl[";
for (int i=0; i<n; i++) {
d << a[i]; if (i < n-1) cout << ',';
}
d << ']';
}
double VRazlomak::operator() (double x) const {
double s=0;
for (int i=n-1; i>=0; i--) {
if (x + s == 0) throw 0;
s=a[i]/(x+s);
}
return s;
}
// glavni.cpp - Glavni program.
#include "klase.h"
#include <iostream.h>
int main () {
cout << "n? "; int n; cin >> n;
VRazlomak v (n);
try {
while (1) {
cout << "i, a[i]? "; int i; cin >> i; cin >> v[i];
}
} catch (int) {}
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 << ' ';
try { cout << v(x) << endl; }
catch (int) { cout << "Ne moze!\n"; }
}
return 0;
}
(⇒ почетак)
Copyright © 2001, Laslo Kraus
Последња ревизија: 15.7.2001.