V
vladis222
Здравствуйте, переделал вот код для программы с наследованием, работает, но когда вычисляет площадь, пишет: S=0,когда площадь не равна нулю. Помогите, понять, что за ошибка.
<!--shcode--><pre><code class='sq1'>#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<locale>
using namespace std;
const float PI=3.14f; //не знаю почему выделывается но можно вот так, компилятор хавает
class CPoint
{
protected:
float X,Y;
public:
CPoint(float iX,float iY);
~CPoint(){}
float GetX(); //Базовый класс-точка
float GetY();
};
class CCircleublic CPoint
{
private:
float Cx,Cy;
public:
CCircle(float iX,float iY,float iCx,float iCy);/*Класс-наследник Окружность*/
~CCircle(){}
float Square(float X, float Cx, float Y, float Cy);
};
CPoint::CPoint(float iX,float iY)
{
X=iX;
Y=iY;
}
float CPoint::GetX()
{
return X;
}
float CPoint::GetY()
{
return Y;
}
CCircle::CCircle(float iX, float iY,float iCx,float iCy):CPoint(iX,iY)
{
Cx=iCx;
Cy=iCy;
}
float CCircle::Square(float X,float Cx, float Y, float Cy)
{
float S;
S=PI*(pow((X-Cx),2)+pow((Y-Cy),2));
return S;
}
int main(void)
{
setlocale(LC_ALL,"Rus");
float X1,Y1,X2,Y2,C1x,C2x,C1y,C2y; float S1,S2,dif;
X1=Y1=X2=Y2=C1x=C2x=C1y=C2y=dif=0;
CCircle C1 = CCircle(X1,C1x,Y1,C1y);
CCircle C2 = CCircle(X2,C2x,Y2,C2y);
cout<<"Введите координаты точки первой окружности : ";
cin>>X1>>Y1;
cout<<"Введите координаты точки второй окружности : ";
cin>>X2>>Y2;
cout<<"Введите координаты центра первой окружности : ";
cin>>C1x>>C1y;
cout<<"Введите координаты центра второй окружности : ";
cin>>C2x>>C2y;
S1=C1.Square(X1,C1x,Y1,C1y);
S2=C2.Square(X2,C2x, Y2,C2y);
dif=S1-S2;
if(dif=0)
cerr<<"Ошибка. Площадь равна нулю";
else
{cout<<"Искомая площадь равна (кв.ед)\n";
cout<<dif;};
getch();
return 0;
}[/CODE]
<!--shcode--><pre><code class='sq1'>#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<locale>
using namespace std;
const float PI=3.14f; //не знаю почему выделывается но можно вот так, компилятор хавает
class CPoint
{
protected:
float X,Y;
public:
CPoint(float iX,float iY);
~CPoint(){}
float GetX(); //Базовый класс-точка
float GetY();
};
class CCircleublic CPoint
{
private:
float Cx,Cy;
public:
CCircle(float iX,float iY,float iCx,float iCy);/*Класс-наследник Окружность*/
~CCircle(){}
float Square(float X, float Cx, float Y, float Cy);
};
CPoint::CPoint(float iX,float iY)
{
X=iX;
Y=iY;
}
float CPoint::GetX()
{
return X;
}
float CPoint::GetY()
{
return Y;
}
CCircle::CCircle(float iX, float iY,float iCx,float iCy):CPoint(iX,iY)
{
Cx=iCx;
Cy=iCy;
}
float CCircle::Square(float X,float Cx, float Y, float Cy)
{
float S;
S=PI*(pow((X-Cx),2)+pow((Y-Cy),2));
return S;
}
int main(void)
{
setlocale(LC_ALL,"Rus");
float X1,Y1,X2,Y2,C1x,C2x,C1y,C2y; float S1,S2,dif;
X1=Y1=X2=Y2=C1x=C2x=C1y=C2y=dif=0;
CCircle C1 = CCircle(X1,C1x,Y1,C1y);
CCircle C2 = CCircle(X2,C2x,Y2,C2y);
cout<<"Введите координаты точки первой окружности : ";
cin>>X1>>Y1;
cout<<"Введите координаты точки второй окружности : ";
cin>>X2>>Y2;
cout<<"Введите координаты центра первой окружности : ";
cin>>C1x>>C1y;
cout<<"Введите координаты центра второй окружности : ";
cin>>C2x>>C2y;
S1=C1.Square(X1,C1x,Y1,C1y);
S2=C2.Square(X2,C2x, Y2,C2y);
dif=S1-S2;
if(dif=0)
cerr<<"Ошибка. Площадь равна нулю";
else
{cout<<"Искомая площадь равна (кв.ед)\n";
cout<<dif;};
getch();
return 0;
}[/CODE]