2017-04-02 5 views
0

forループに無効な配列型を取得して、配列を埋めることができなくなりました。それは文句を言わないあなたがsivalues[x]を書くとき、あなたは配列のインデックスとしてdoubleを使用しているX配列型の無効なエラーを取得する

int main() { 
    double a,b,increment,para; 
    int N; 
    cout<< "enter values for (a,b,N)"; 
    cin>>a; 
    cin>>b; 
    cin>>N; 
    increment= (b-a)/(N-1); 
    double sivalues[N]; 
    for (double x=a;x<=b;x+=increment){ 
     sivalues[x]=si(x); 
     cout<<"si("<<x<<") = "<< sivalues[x]; 
    } 

    system("PAUSE"); return 0; 

} 
+0

私は盲目だ場合を除き、 'increment'は決して初期化されません。これは問題かもしれません。 – Carcigenicate

+0

正確なエラーは何ですか? – Carcigenicate

+0

私はコードを更新しました。 – joe

答えて

2

を持つ配列をpoulate。配列の2.5番目の要素を取得する意味がないため、これは無効です。したがって、doubleintにキャストする必要があります。

あなたは例えば、デフォルトのキャスト(使用することができます。sivalues[int(x)]=si(x);を、xが5.99であるならば、それはまだ5に変換されますので、このキャストはラウンドをしませんのでご注意ください(C++: How to round a double to an int?を参照)

関連する問題