我有一个函数,fx
已命名并且有两个输入变量作为数组和一个double,所以我写了这样的程序,我遇到了以下错误。问题在于输入数组的定义,但我不知道如何解决它。
另一个问题是,当我想用输入调用此fx
函数时,如何将完整数组作为第一个输入变量 - fx(matris[n],x)
?
error : variable-size type declared outside of any function
代码:
#include<iostream>
using namespace std;
int n=1;
double y=1;
double x;
double fx(double matris[], double x){
double f = 0;
for(int i=0;i<n;i++)//e.g f(X)= 3x^2 + 2x -4 = 0 [3 2 -4]
{
y = 1;
for(int k = 0;k<n-i-1;k++){//temp: y = x*x*x or x*x or x ... (calcules powers)
y = y*x;
}
f = f+y*matris[i];// 3 * y((x*x)) + 2 * y((x)) + -4* y(1)
}
return f;
}
double dif(double matris[], double x){
double temp[n];
temp[0] = 0;
for (int i=0;i<n;i++){
temp [i+1] = matris[i] * (n-i-1);
}
return fx(temp[n], x);
}
int main(){
//newton-raphson method to solve a equilibrium
cout << "please enter the degree of your equilibrium: ";
cin >> n;
double matris[n];
cout << "please enter your equlibruim array: ";
for(int i =0; i<n; i++)
cin >> matris[i];
//x = x0 - f(x)/f'(x);
x = 1;
fx(matris,x);
return 0;
}
答案 0 :(得分:2)
由于传递给函数的数组实际上没有大小(变量或其他),因此编译器会将变量n
作为matris
的大小传递给您。
只需从n
表达式中删除double matris[n]
,将方括号留空即可。
[请注意,执行cin > n; double matris[n];
的代码不符合标准C ++ - C ++ 14将引入这样的概念,但对于现有的C ++标准,它是不允许的 - 只有GNU C ++和一些“GNU C ++兼容“编译器支持这种结构”。