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 шт):
даже если вы вызываете функцию без параметров, то скобки всё равно нужно ставить:
func1();
func2();
func3();
func4();
UPD: очевидно, что код не ваш, т.к. вы не понимаете, как он работает... Давайте исходить из того, что указанные вами функции работают. Смотрите на входной параметр этих функций - он должен быть указателем на массив double, соответственно в него также должен передаваться указатель на double. Для этого в основной функции вы создаёте такой массив, делаете в него ввод, и передаёте его в параметрах при вызове функции
double *a = new double[2];
cin >> a[0] >> a[1];
func(a);