Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Помогите написать программу

Павел Хейсин Ученик (137), закрыт 3 недели назад
Лучший ответ
Николай Веселуха Высший разум (333888) 1 месяц назад
 #include  
#include
#include

using namespace std;

double input(istream& inp, const string msg) {
cout << msg;
double value;
inp >> value;
inp.ignore(0x1000, '\n');
return value;
}

class Detail {
public:
Detail()
: h(0), r(0), b(0), g(0) {}
Detail(const double h, const double r)
: h(h), r(r), b(0), g(0) {}
void density(const double value) {
g = value;
}
void thickness(const double value) {
b = value;
}
double weight()const {
const auto ov = volume(r);
const auto iv = volume(r - b);
const auto v = ov - iv;
return v * g;
}
private:
double h;
double r;
double b;
double g;
double volume(const double rad)const {
static const auto pi = 3.1415926535897932;
return pi * pow(rad, 2) * h;
}
};

int main() {
cout << "N: ";
size_t n;
cin >> n;
auto details = new Detail[n];
if (details == nullptr) exit(1);
const auto h = input(cin, "H: ");
const auto r = input(cin, "R: ");
Detail detail(h, r);
fill(details, details + n, detail);
for (size_t i = 0; i < n; ++i) {
auto txt = to_string(i + 1) + ": ";
details[i].density(input(cin, "G" + txt));
details[i].thickness(input(cin, "B" + txt));
}
const auto p = input(cin, "P: ");
size_t count = 0;
auto sum_weight_all = 0.0;
auto sum_weight = 0.0;
for (size_t i = 0; i < n; ++i) {
auto weight = details[i].weight();
if (weight <= p) {
++count;
sum_weight += weight;
}
sum_weight_all += weight;
}
// ср. вес деталей, которые не тяжелее P
const auto average = sum_weight / count;
// ср. вес всех деталей
const auto average_all = sum_weight_all / n;
cout << "Count: " << count << '\n';
if (count) cout << "Average: " << average << '\n';
cout << "All average: " << average_all << '\n';
}
P.S. Не совсем понятно средней вес каких деталей следует рассчитывать. Рассчитал оба.

P.P.S. Методы ввода и вывода объектов не реализованы ввиду отсутствия указаний преподавателя.
Остальные ответы
Похожие вопросы