Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11741
Последний выпуск: 19.06.2015

Командная строка

62K
05 мая 2016 года
Nas_96
19 / / 13.03.2016
В командной строке задается признак фигуры, объем которой необходимо вычислить:

s – шар (аргумент – радиус);

k – куб (аргумент – сторона);

p – параллелепипед (аргументы – стороны a, b и c)

c – цилиндр (аргументы – радиус основания и высота).

Вычислить объем соответствующей фигуры. Обращение к функциям реализуется через указатель.

Это то, что у меня есть.

Код компилируется без ошибок, но ничего не приходит консоль.

Код:
#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) = &parallelepiped;
    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();
}
206
05 мая 2016 года
wanja
1.2K / / 03.02.2003
А без извращений с указателями на функции пробовал(а)?
62K
05 мая 2016 года
Nas_96
19 / / 13.03.2016
Цитата: wanja
А без извращений с указателями на функции пробовал(а)?

Мне нужно сделать с использованием указателей.

400
06 мая 2016 года
grgdvo
320 / / 04.07.2007
Вы сравниваете неправильно. Зачем знак отрицания в условиях проверки s, p и т.д. ???
62K
06 мая 2016 года
Nas_96
19 / / 13.03.2016
Цитата: grgdvo
Вы сравниваете неправильно. Зачем знак отрицания в условиях проверки s, p и т.д. ???

я сделал без знака отрицания, но не работает.

400
07 мая 2016 года
grgdvo
320 / / 04.07.2007
аааа... черт! strcmp возвращает же 0, когда строки равны. извиняюсь за невнимательность, верните все назад! все верно было.
за исключением того, что при "k" и "p" проверку argc надо поменять.
скопилировал на linux, ошибок нет, все выводит.
может вы неверно программу запускаете. опишите, как вы это делаете.
 
Код:
user@host $ ./example c 3 4
 Volume of the cylinder: 113.04
Попробуйте открыть командную строку в windows (cmd.exe) и проделать в ней подобный запуск

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог