Не могу получить значение переменной класса
Имеется следующие задание.
//Задание 7. Решите с помощью классов следующую задачу:
//даны две бочки известного объема. В одной бочке в начальный момент
//времени содержится спирт (96%), в другой – вода.
//Кружкой емкостью 1л переливаем итеративно содержимое из одной бочки
//в другую следующим способом: на каждой итерации
//зачерпнули из первой бочки -> вылили во вторую
//зачерпнули из второй бочки -> вылили в первую.
//Требуется определить номер итерации, на которой концентрация спирта в
//первой бочке станет меньше 50%.
cout << "Задание 7 \n" << endl;
Bochka spirt(5, 96);
Bochka water(5, 0);
int sum = 0; // счётчик итераций
int Vkr = 1; // объём кружки
while(/*концентрация спирта в бочке*/ spirt.prSpirt() > 50)
{
sum+=1;
spirt.Pereliv(water, Vkr); //или spirt.Pereliv(water, объем_кружки);
spirt.PrintBochka();
water.Pereliv(spirt, Vkr); // аналогично
spirt.PrintBochka();
}
std::cout << "номер итерации = " << sum << std::endl;
Создал класс.
class Bochka
{
int VB=0;// объём бочки
double pr=0;// процент спирта
public:
Bochka(int a, double b);// конструктор с параметрами
double prSpirt(); //процент спирта в бочке
Bochka Pereliv(Bochka& x, int& y);
};
Определил всё.
//Bochka::Bochka() // конструктор без параметров
//{
// VB = 0;
// pr = 0;
//}
Bochka::Bochka (int a, double b) // конструктор с параметрами
{
int VB = a; // объём бочки
double pr = b; // процент спирта
}
//Bochka::Bochka(Bochka& other)// конструктор копирования
//{
// pr = other.pr;
// VB = other.VB;
//}
double Bochka::prSpirt() //процент спирта в бочке
{
return this->pr;
}
Bochka Bochka::Pereliv(Bochka& x, int& y)
{
pr = ((pr * VB) + (y * x.pr)) / (VB + y);
VB = VB;
return *this;// возвращаем адрес объекта для которого вызван метод
}
Метод prSpirt() не возвращает значение переменной класса. Подскажите пожалуйста где ошибка?