//даны две бочки известного объема. В одной бочке в начальный момент
//времени содержится спирт (96%), в другой – вода.
//Кружкой емкостью 1л переливаем итеративно содержимое из одной бочки
//в другую следующим способом: на каждой итерации
//зачерпнули из первой бочки -> вылили во вторую
//зачерпнули из второй бочки -> вылили в первую.
//Требуется определить номер итерации, на которой концентрация спирта в
//первой бочке станет меньше 50%.
Задача на классы Vc++
текст задачи в оригинале
Код:
соображения:
Код:
class Barell
{
public:
Barell(double m_volume,double m_conc);
private:
double m_volume;
double m_conc;
}
{
public:
Barell(double m_volume,double m_conc);
private:
double m_volume;
double m_conc;
}
знаю что надо создать два метода,слить,залить(спасибо _north_),и метод доступа:получить спиртность.Помогите пожалуйста,спасибо.
Код:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#define VOLUME 100
class Barell
{
public:
Barell(){ m_volume = 0; m_conc = 0;};
Barell(double in_volume,double in_conc)
{
m_volume = in_volume;
m_conc = in_conc;
};
double pourOff(double in_volume, double &out_conc)
{
double d = (m_volume < in_volume) ? m_volume : in_volume;
m_volume-=d;
m_conc = m_conc;
return d;
};
double fillUp(double in_volume, double in_conc)
{
m_conc = (m_conc*m_volume + in_volume*in_conc)/(m_volume+in_volume);
m_volume+=in_volume;
return m_conc;
}
double getConc()
{
return m_conc;
};
double getVolume()
{
return m_volume;
};
private:
double m_volume;
double m_conc;
};
int main()
{
Barell bar1(VOLUME, 96);
Barell bar2(VOLUME, 0);
double conc = 96;
int iter = 0;
while(conc>=50)
{
iter++;
double volume = bar1.pourOff(1.0, conc);
conc = bar2.fillUp(volume, conc);
volume = bar2.pourOff(1.0, conc);
conc = bar1.fillUp(volume, conc);
cout << "iter :" << setw(3) << iter << " conc " << bar1.getConc() << endl;
}
getch();
return 0;
}
#include <iostream.h>
#include <iomanip.h>
#define VOLUME 100
class Barell
{
public:
Barell(){ m_volume = 0; m_conc = 0;};
Barell(double in_volume,double in_conc)
{
m_volume = in_volume;
m_conc = in_conc;
};
double pourOff(double in_volume, double &out_conc)
{
double d = (m_volume < in_volume) ? m_volume : in_volume;
m_volume-=d;
m_conc = m_conc;
return d;
};
double fillUp(double in_volume, double in_conc)
{
m_conc = (m_conc*m_volume + in_volume*in_conc)/(m_volume+in_volume);
m_volume+=in_volume;
return m_conc;
}
double getConc()
{
return m_conc;
};
double getVolume()
{
return m_volume;
};
private:
double m_volume;
double m_conc;
};
int main()
{
Barell bar1(VOLUME, 96);
Barell bar2(VOLUME, 0);
double conc = 96;
int iter = 0;
while(conc>=50)
{
iter++;
double volume = bar1.pourOff(1.0, conc);
conc = bar2.fillUp(volume, conc);
volume = bar2.pourOff(1.0, conc);
conc = bar1.fillUp(volume, conc);
cout << "iter :" << setw(3) << iter << " conc " << bar1.getConc() << endl;
}
getch();
return 0;
}
_north_ Дружище!Благодарности моей нет предела!