Показать сообщение отдельно

  #7  
Старый 15.05.2007, 00:17
Benzin
Познающий
Регистрация: 15.01.2007
Сообщений: 41
Провел на форуме:
267196

Репутация: 6
По умолчанию

Попробовал вот тут сделать первую.., но че то запара (да и кстати просили же на С++, а не на С)
Проблема скорее всего в последних строках, кароче не те функции выбирает..., подправьте, мне влом разбираться...


Код:
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;

class Benzin
{
   public:
	double x0, xk, dx; //***** интервал [x0; xk] и шаг dx
	

   public:
	   virtual double func1 (double)=0; //***** 1-я виртуальная
	   virtual double func2 (double)=0; //***** 2-я виртуальная
	   virtual double func3 (double)=0; //***** 3-я виртуальная

	   double tab1(); //***** функция табулирования №1
	   double tab2(); //***** функция табулирования №2
	   double tab3(); //***** функция табулирования №3

	   void input();
	   double cnt(double);
	   void output(double, double);
	   
};


//*****
double Benzin::tab1()
{
	double x, y;
	for (x=x0; x<=xk; x+=dx)
	{
		y =func1(x);
		output(x,y);
	}
	return 0;
}

//*****
double Benzin::tab2()
{
	double x, y;	
	for (x=x0; x<=xk; x+=dx)
	{
		y =func2(x);
		output(x,y);
	}
	return 0;
}

//*****
double Benzin::tab3()
{
	double x, y;	

	for (x=x0; x<=xk; x+=dx)
	{
		y =func3(x);
		output(x,y);
	}
	return 0;
}

//***** Метод ввода значений интервала и шага
void Benzin::input()
{
	cout<<"Input\n\n";
	cout<<"x0="; cin>>x0; cout<<"\n";
	cout<<"xk="; cin>>xk; cout<<"\n";
	cout<<"dx="; cin>>dx; cout<<"\n";
	cout<<"Output:\n\n";
}

//***** Метод условий
double Benzin::cnt(double x)
{ 
	double z;

	if (x<0.9)
		z=tab1();
	
	if (x==0.9)
		z=tab2();
	else
		z=tab3();

	return 0;
}

//*****Метод вывода
void Benzin::output(double x, double y)
{
	cout<<"x= "<<x<<'\t';
	cout<<"f("<<x<<")= "<<y<<'\n';
}

//***** Производный класс
class Proizv : public Benzin
{
	//***** 1-я виртуальная
    virtual double func1 (double x) 
	{
		double G1, G2, G3, G4;
		
		G1=x*x;
		G2=pow(G1,3)+(x*x);
		G3=sqrt(x+1);
		G4=G2/G3;

		return G4;
	}

	//***** 2-я виртуальная
	virtual double func2 (double x)  
	{
		double G1, G2;
		
		G1=sqrt(x+1);
		G2=1./(pow(x,2));

		return G2;
	}

	//***** 3-я виртуальная
	virtual double func3 (double x)  
	{
		double G1, G2, G3, t=1.9;
		
		G1=cos(x);
		G2=pow(G1,2);
		G3=G1+(t*G2);

		return G3;
	}
}; 

//MAIN
void main()
{
	Proizv S;
	S.input();

	double r; // Здесь ошибка, и я это знаю, но как исправить...
	S.cnt(r); //вот с этим методом у меня возникает проблема!!!
	
	_getch();
}