Switch и функции

Я пишу программу, которая обрабатывает несколько функций, в зависимости от того, что выбрал пользователь. При компилировании и выборе одного из свитч-кейсов, выводится просто текст. Что я делаю не так?

#include <iostream>
#include <cmath>
#include <stdlib.h>
#include <stdio.h>

const int D = 30;
using namespace std;
int summm;

double func1(double* x)
{
    double summ = 0;
    for (int i = 0; i < 30; i++)
    {
        summ += x[i] * x[i];
    }
    return summ;
}

double func2(double x[D])
{
    double max_x = x[0];
    for (int i = 0; i < D; i++)
    {
        if (abs(x[i]) > max_x)
        {
            max_x = abs(x[i]);
        }
    }
    return max_x;
}

double func3(double* x)
{
    double max_xx = x[0];
    for (int i = 0; i < D; i++)
    {
        max_xx = abs(x[i] + x[i]) + abs(x[i] * x[i]);
    }
    return max_xx;
}

double func4(double* x)
{
    double max_xxx = x[0];
    double max_p = 1;
    for (int i = 0; i < D; i++)
    {
        max_xxx += (x[i] * x[i]) / 4000 - cos(max_p) * cos(max_p/sqrt(2));
    }
    return max_xxx;
}

double func5(double* x)
{
    double max_xxxx = x[0];
    for (int i = 0; i < D; i++)
    {
        max_xxxx += -20 * exp(-0.2 * sqrt(1 / D * x[i] * x[i])) - exp(1 / D * cos(2 * 3.14 * x[i])) + 20 + exp(1);
    }
    return max_xxxx;
}

int main()
{
    int n;
    cin >> n;
    switch (n)
    {
    case 1:
        cout << "User select case 1." << endl;
        func1;
        break;
    case 2:
        cout << "User select case 2." << endl;
        func2;
        break;
    case 3:
        cout << "User select case 3." << endl;
        func3;
        break;
    case 4:
        cout << "User select case 4." << endl;
        func4;
        break;
    case 5:
        cout << "User select case 5." << endl;
        func5;
        break;
    default:
        break;
    }
}

Ответы (1 шт):

Автор решения: Davidaa_WoW

даже если вы вызываете функцию без параметров, то скобки всё равно нужно ставить:

func1();
func2();
func3();
func4();

UPD: очевидно, что код не ваш, т.к. вы не понимаете, как он работает... Давайте исходить из того, что указанные вами функции работают. Смотрите на входной параметр этих функций - он должен быть указателем на массив double, соответственно в него также должен передаваться указатель на double. Для этого в основной функции вы создаёте такой массив, делаете в него ввод, и передаёте его в параметрах при вызове функции

double *a = new double[2];
    cin >> a[0] >> a[1];
    func(a);
→ Ссылка