Ошибка "Выражение имеет константное значение"
Выбивает ошибки при объявлении масивов: N - должно быть константное, хотя объявляю его константным. Почему ?
#include <stdio.h>
#include <math.h>
double f(double x)
{
return sin(x);
}
void progonka(double* y, double* h, const int N, double* c)
{
int i = 1;
double alfa[N + 1], beta[N + 1], hamma[N + 1], delta[N + 1], A[N + 1], B[N + 1];
alfa[1] = hamma[1] = delta[1] = 0.0;
beta[1] = 1.0;
for (i = 2; i <= N; i++)
{
alfa[i] = h[i - 1];
beta[i] = 2 * (h[i - 1] + h[i]);
hamma[i] = h[i];
delta[i] = 3 * (((y[i] - y[i - 1]) / h[i]) - ((y[i - 1] - y[i - 2]) / h[i - 1]));
}
hamma[N] = 0.0;
A[1] = -hamma[1] / beta[1];
B[1] = delta[1] / beta[1];
for (i = 2; i <= N - 1; i++)
{
A[i] = -hamma[i] / (alfa[i] * A[i - 1] + beta[i]);
B[i] = (delta[i] - alfa[i] * B[i - 1]) / (alfa[i] * A[i - 1] + beta[i]);
}
c[N] = (delta[N] - alfa[N] * B[N - 1]) / (alfa[N] * A[N - 1] + beta[N]);
for (i = N; i > 1; i--)
{
c[i - 1] = A[i - 1] * c[i] + B[i - 1];
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Константное в данном контексте означает - известное во время компиляции!
Ну не поддерживает Visual Studio (вы же им пользуетесь?) возможность VLA...
Или выделяйте массивы размера, достаточного при любом вашем N, либо выделяйте их динамически (только потом не забывайте удалять, освобождая память).