#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
using namespace std;
double pi = 3.14;
double sphere(double r)
{
return (4 * pi * pow(r,3))/3;
}
double cube(double s)
{
return pow(s,3);
}
double parallelepiped(double a, double b, double c)
{
return a * b * c;
}
double cylinder(double r, double h)
{
return pi * pow(r, 2) * h;
}
int main(int argc, char* argv[])
{
double (*psphere)(double r) = &sphere;
double (*pcube)(double s) = &cube;
double (*pparallelepiped)(double a, double b, double c) = ¶llelepiped;
double (*pcylinder)(double r, double h) = &cylinder;
if (argc > 1)
{
if (!strcmp(argv[1], "s"))
{
if(argc == 3) {
cout << " Volume of the sphere: " << psphere(atoi(argv[2])) << endl;
}
}
else if (!strcmp(argv[1], "k"))
{
if (argc == 5)
{
cout << " Volume of the cube: " << pcube(atoi(argv[2])) << endl;
}
}
else if (!strcmp(argv[1], "p"))
{
if (argc == 3)
{
cout << "Volume of the parallelepiped: " << parallelepiped(atoi(argv[2]),atoi(argv[3]),atoi(argv[4])) << endl;
}
}
else if (!strcmp(argv[1], "c"))
{
if (argc == 4)
{
cout << " Volume of the cylinder: " << pcylinder(atoi(argv[2]),atoi(argv[3])) << endl;
}
}
}
_getch();
}
Командная строка
s – шар (аргумент – радиус);
k – куб (аргумент – сторона);
p – параллелепипед (аргументы – стороны a, b и c)
c – цилиндр (аргументы – радиус основания и высота).
Вычислить объем соответствующей фигуры. Обращение к функциям реализуется через указатель.
Это то, что у меня есть.
Код компилируется без ошибок, но ничего не приходит консоль.
Код:
А без извращений с указателями на функции пробовал(а)?
Цитата: wanja
А без извращений с указателями на функции пробовал(а)?
Мне нужно сделать с использованием указателей.
Вы сравниваете неправильно. Зачем знак отрицания в условиях проверки s, p и т.д. ???
Цитата: grgdvo
Вы сравниваете неправильно. Зачем знак отрицания в условиях проверки s, p и т.д. ???
я сделал без знака отрицания, но не работает.
за исключением того, что при "k" и "p" проверку argc надо поменять.
скопилировал на linux, ошибок нет, все выводит.
может вы неверно программу запускаете. опишите, как вы это делаете.
Код:
user@host $ ./example c 3 4
Volume of the cylinder: 113.04
Volume of the cylinder: 113.04