#include <iostream>
using namespace std;

class ImpedanceCalculation
{
private:
	float real, img;
public:
	ImpedanceCalculation totalImpedance(ImpedanceCalculation, ImpedanceCalculation, ImpedanceCalculation);
	float capacitiveReactance(float, float);
	float inductiveReactance(float, float);
	void display(void);
	ImpedanceCalculation(void);
	ImpedanceCalculation (float,float);
	~ImpedanceCalculation(void);
};
ImpedanceCalculation ImpedanceCalculation::totalImpedance(ImpedanceCalculation Xr, ImpedanceCalculation Xl, ImpedanceCalculation Xc)
{
  ImpedanceCalculation temp;
  temp.real = Xr.real + Xl.real + Xc.real;
  temp.img = Xr.img + Xl.img + Xc.img;
  return (temp);
}
float ImpedanceCalculation :: capacitiveReactance (float C, float f)
{
	float Xc;
	Xc = 1 /( 2 * 3.142 * f * C);
	cout << "The capacitive reactance is " << Xc << " 270 degrees out of phase with the resistance \n";
	return Xc;
}
float ImpedanceCalculation :: inductiveReactance (float L, float f)
{
	float Xl;
	Xl = 2 * 3.142 * f * L;
	cout << "The inductive reactance is " << Xl << " 90 degrees out of phase with the resistance \n";
	return Xl;
}
void ImpedanceCalculation :: display(void)
{
	cout << "Real part : " << real << endl;
	cout << "Imaginary part : " << img << endl;
}
ImpedanceCalculation :: ImpedanceCalculation(void)
{
}
ImpedanceCalculation :: ImpedanceCalculation(float a, float b)
{
	real = a;
	img = b;
}
ImpedanceCalculation :: ~ImpedanceCalculation(void)
{
}
void main (void)
{
	ImpedanceCalculation circuit;
	float  V, f, R, C, L, Rc, Rl;
	cout << "Enter the source voltage : ";
	cin >> V;
	cout << "Enter the source frequency : ";
	cin >> f;
	cout << "Enter the resistor value ";
	cin >> R;
	ImpedanceCalculation Xr(R,0);
	cout << "Enter the capacitor value ";
	cin >> C;
	Rc = circuit.capacitiveReactance(C, f);
	ImpedanceCalculation Xc(0,-Rc);
	cout << "Enter the inductor value ";
	cin >> L;
	Rl = circuit.inductiveReactance(L, f);
	ImpedanceCalculation Xl(0,Rl);
	ImpedanceCalculation totImpedance;
	totImpedance.totalImpedance(Xr, Xl, Xc);
	totImpedance.display();
}
