Написать программу, которая с помощью указателей на функцию выполняет задание:
Вычислить объём четырёх тел:
1.Параллелепипеда (по площади основания и высоте)
2.Пирамиды (по площади основания и высоте)
3.Цилиндра (по радиусу основания и высоте)
4.Конуса (по радиусу основания и высоте)
Благодарю
C/C++
Задание в языке Си
#include<stdio.h>
#include<unistd.h>
double V(float s, float h, int type)
{
double v=0;
switch(type)
{
case 1:v=s*h;break;
case 2:v=s*h/3;break;
case 3:v=3.14*s*s*h;break;
case 4:v=3.14*s*s*h/3;break;
default: v=0;
}
return v;
}
int main()
{
double (*pfunc)(float s,float h,int type);
pfunc=V;
printf("\n variant 1: %.4lf",pfunc(5,6,1));
printf("\n variant 2: %.4lf",pfunc(5,6,2));
printf("\n variant 3: %.4lf",pfunc(5,6,3));
printf("\n variant 4: %.4lf",pfunc(5,6,4));
printf("\n\n");
sleep(10);
return 0;
}

#include<unistd.h>
double V(float s, float h, int type)
{
double v=0;
switch(type)
{
case 1:v=s*h;break;
case 2:v=s*h/3;break;
case 3:v=3.14*s*s*h;break;
case 4:v=3.14*s*s*h/3;break;
default: v=0;
}
return v;
}
int main()
{
double (*pfunc)(float s,float h,int type);
pfunc=V;
printf("\n variant 1: %.4lf",pfunc(5,6,1));
printf("\n variant 2: %.4lf",pfunc(5,6,2));
printf("\n variant 3: %.4lf",pfunc(5,6,3));
printf("\n variant 4: %.4lf",pfunc(5,6,4));
printf("\n\n");
sleep(10);
return 0;
}

#include <stdlib.h>
#include <stdio.h>
#define PI 3.1415926535897932
double real(const char* msg) {
double value;
printf(msg);
scanf_s("%lf", &value);
return value;
}
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) {
return PI * r * r * h;
}
double cone(double r, double h) {
return cylinder(r, h) / 3;
}
typedef double(*ptr)(double, double);
double volume(double a, double b, ptr fn) {
return fn(a, b);
}
int main(void) {
double sp, hp, vp;
double ps, ph, pv;
double rc, hc, vc;
double cr, ch, cv;
system("chcp 1251 > nul");
sp = real("Введите основание параллелепипеда: ");
hp = real("Введите высоту параллелепипеда: ");
vp = volume(sp, hp, parallelepiped);
printf("Объём параллелепипеда: %.2lf\n\n", vp);
ps = real("Введите основание пирамиды: ");
ph = real("Введите высоту пирамиды: ");
pv = volume(ps, ph, pyramid);
printf("Объём пирамиды: %.2lf\n\n", pv);
rc = real("Введите радиус основания цилиндра: ");
hc = real("Введите высоту цилиндра: ");
vc = volume(rc, hc, cylinder);
printf("Объём цилиндра: %.2lf\n\n", vc);
cr = real("Введите радиус основания конуса: ");
ch = real("Введите высоту конуса: ");
cv = volume(cr, ch, cone);
printf("Объём конуса: %.2lf\n\n", cv);
system("pause > nul");
return 0;
}
#include <stdio.h>
#define PI 3.1415926535897932
double real(const char* msg) {
double value;
printf(msg);
scanf_s("%lf", &value);
return value;
}
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) {
return PI * r * r * h;
}
double cone(double r, double h) {
return cylinder(r, h) / 3;
}
typedef double(*ptr)(double, double);
double volume(double a, double b, ptr fn) {
return fn(a, b);
}
int main(void) {
double sp, hp, vp;
double ps, ph, pv;
double rc, hc, vc;
double cr, ch, cv;
system("chcp 1251 > nul");
sp = real("Введите основание параллелепипеда: ");
hp = real("Введите высоту параллелепипеда: ");
vp = volume(sp, hp, parallelepiped);
printf("Объём параллелепипеда: %.2lf\n\n", vp);
ps = real("Введите основание пирамиды: ");
ph = real("Введите высоту пирамиды: ");
pv = volume(ps, ph, pyramid);
printf("Объём пирамиды: %.2lf\n\n", pv);
rc = real("Введите радиус основания цилиндра: ");
hc = real("Введите высоту цилиндра: ");
vc = volume(rc, hc, cylinder);
printf("Объём цилиндра: %.2lf\n\n", vc);
cr = real("Введите радиус основания конуса: ");
ch = real("Введите высоту конуса: ");
cv = volume(cr, ch, cone);
printf("Объём конуса: %.2lf\n\n", cv);
system("pause > nul");
return 0;
}
Похожие вопросы
- Решить задачу на языке СИ
- Написать код на языке си
- Написать программу на языке Си
- Помогите с решением задачи на языке СИ
- Написать программу в языке Си, которая с помощью указателей на функцию выполняет задание
- Си!!! БЕЗ УКАЗАТЕЛЕЙ, ЯЗЫК СИ
- Упорядочить элементы массива по возрастанию на языке Си
- Создать файл ABONENT.dat, содержащий записи следующей структуры: ФИО абонента; его номер телефона. на языке си++
- Помогите с задачей на языке СИ
- Написать код на языке Си