C/C++

Написать программу в языке Си, которая с помощью указателей на функцию выполняет задание

Вычислить объём четырёх тел:
1.Параллелепипеда (по площади основания и высоте)
2.Пирамиды (по площади основания и высоте)
3.Цилиндра (по радиусу основания и высоте)
4.Конуса (по радиусу основания и высоте)
Спасибо за любую помощь
Макс
Макс
156
#include <iostream>
#include <iomanip>
using namespace std;
using pfn = double (*)(double a, double b);
double parallelepiped(double s, double h) {
return s * h;
}
double pyramid(double s, double h) {
return parallelepiped(s, h) / 3;
}
double cylinder(double r, double h) {
static const auto pi = 3.1415926535897932;
return pi * r * r * h;
}
double cone(double r, double h) {
return cylinder(r, h) / 3;
}
double volume(double a, double b, pfn p) {
return p(a, b);
}
double input(const char* msg) {
cout << msg;
double value;
cin >> value;
return value;
}
void output(const char* msg, double x) {
cout << msg << fixed << setprecision(3) << x << '\n';
}
int main() {
double h, s, r, v;
system("chcp 1251 > nul");
s = input("Введите площадь основания параллелепипеда: ");
h = input("Введите высоту параллелепипеда: ");
v = volume(s, h, parallelepiped);
output("Объём параллелепипеда: ", v);
puts("");
s = input("Введите площадь основания пирамиды: ");
h = input("Введите высоту пирамиды: ");
v = volume(s, h, pyramid);
output("Объём пирамиды: ", v);
puts("");
r = input("Введите радиус цилиндра: ");
h = input("Введите высоту цилиндра: ");
v = volume(r, h, cylinder);
output("Объём цилиндра: ", v);
puts("");
r = input("Введите радиус конуса: ");
h = input("Введите высоту конуса: ");
v = volume(r, h, cone);
output("Объём конуса: ", v);
system("pause > nul");
}
Андрей Миронов
Андрей Миронов
83 281
Лучший ответ
Ты знаешь как работают указатели на функции в С?
По объёмам:
1: V = S h
2: V = S h / 3
3: V = п r^2 h
4: V = п r^2 h / 3