Witam,
Jako że dopiero liznąłem C++ i nie czuję się w nim najlepiej, mam do Was pytanie o mój program
#include<iostream>
#include<cstdlib>
#include<math.h>
using namespace std;
class calka
{
protected:
double pocz, kon, a, b, c, d, e, f;
int dok;
public:
calka();
calka(double p, double k, int n)
{
pocz=p;
kon=k;
dok=n;
}
void wprowadz();
void prostokat();
void trapez();
void simpson();
private:
double fun(double x)
{
return a*pow(x,5) + b*pow(x,4) + c*pow(x,3) + d*pow(x,2) + e*x +f ;
}
};
calka::calka()
{
pocz=kon=dok=0;
}
void calka::wprowadz()
{
cout << "Ax^5 + Bx^4 + Cx^3 + Dx^2 + Ex + F"<<endl;
cout << "Podaj parametr a = "; cin >> a;
cout << "Podaj parametr b = "; cin >> b;
cout << "Podaj parametr c = "; cin >> c;
cout << "Podaj parametr d = "; cin >> d;
cout << "Podaj parametr e = "; cin >> e;
cout << "Podaj wyraz wolny= "; cin >> f;
cout << "Podaj początek = "; cin >> pocz;
cout << "Podaj koniec = "; cin >> kon;
cout << "Podaj dokladnosc = "; cin >> dok;
}
void calka::prostokat()
{
double dx, calka;
int i;
dx=(kon-pocz)/dok;
calka =0;
for(i=1; i<=dok; i++)
{
calka+=fun(pocz+i*dx);
}
calka*=dx;
cout<<"Wartosc calki metoda prostakatow wynosi: "<<calka<<endl;
}
void calka::trapez()
{
double dx, calka;
int i;
dx=(kon-pocz)/dok;
calka =0;
for(i=1; i<=dok; i++)
{
calka+=fun(pocz+i*dx);
}
calka+=(fun(pocz)+fun(kon))/2;
calka*=dx;
cout<<"Wartosc calki metoda trapezow wynosi: "<<calka<<endl;
}
class calka_wyk: public calka
{
public:
void wprowadz();
double fun(double x)
{
return pow(a, x);
}
};
void calka_wyk::wprowadz()
{
cout << "A^x"<<endl;
cout << "Podaj parametr a = "; cin >> a;
cout << "Podaj początek = "; cin >> pocz;
cout << "Podaj koniec = "; cin >> kon;
cout << "Podaj dokladnosc = "; cin >> dok;
}
int main()
{
calka c1;
c1.wprowadz();
c1.prostokat();
c1.trapez();
calka_wyk w1;
w1.wprowadz();
w1.prostokat();
w1.trapez();
cout << endl;
return 0;
}
Problem jest taki, że po wywołaniu metody prostokat dla obiektu w1, metoda ta korzysta z funkcji fun z klasy bazowej,
double fun(double x)
{
return a*pow(x,5) + b*pow(x,4) + c*pow(x,3) + d*pow(x,2) + e*x +f ;
}
a ja bym chciał aby skorzystała z funkcji fun z klasy pochodnej
double fun(double x)
{
return pow(a, x);
}
poprawienie tytułu wątku + lekkie sformatowanie posta - fp