2015-05-14 4 views
0

так это мой фрагмент кода:в то время как цикл продолжает работать

double numericalMethod::splineLinearInterpolation(){ 

int n, i=0; 
double x[100], y[100], s[100],a; 
cout << "Enter no. of sample points : \n"; 
cout << "\n"; 
cin >> n; 
cout << "\n"; 
cout << "Enter all values of x and corresponding functional value y : \n"; 
cout << "\n"; 
cout << "x | y \n"; 
for (i=0; i<n; i++){ 
    cin >> x[i] >> y[i]; 
} 
cout << "\n"; 
cout << "Enter the value of x for which you would like to calculate the estimated value of y : \n "; 
cout << "\n"; 
cin >> a; 
while (a<x[0] or a>x[n]){ 
    cout << "The selected value of x must belong to the domain [" << x[0] << "," << x[4] << "] \n" ; 
    cout << "\n"; 
    cout << "Reenter the value of x please : "; 
    cout << "\n"; 
    cin >> a; 
} 
cout << "\n"; 

for (i=0; i<n-1; i++){ 
    s[i]=y[i] + ((y[i+1]-y[i])/(x[i+1]-x[i]))*(a-x[i]); 
    if (a>=x[i] and a<=x[i+1]) 
     cout << "s[" << i << "] =" << s[i] << " when " << x[i] << " <= x <=" << x[i+1] <<endl; 

} 
return 0; 

}

х представляет собой массив

когда-либо моя программа входит в цикл она никогда не выходит из его

хотя когда я переключаю x [0] и x [n] с постоянными номерами, он отлично работает

любой идеал в виде? и благодаря

+0

Мое первое предположение было бы каким-то неявным преобразованием типа, которое будет ошибочным. Можете ли вы опубликовать больше своего кода, чтобы понять все вовлеченные в него типы? –

+0

прямо сейчас ...... я отредактирую сообщение –

+2

у вас есть 'n' числа в массиве, от' x [0] 'до' x [n-1] ', поэтому' x [n] ' in while loop - это всего лишь случайный мусор –

ответ

3

Вы здесь таким образом:

for (i = 0; i < n; i++) { 
    cin >> x[i] >> y[i]; 
} 

Массив х будет иметь значения в позициях: [0, N-1]

Но в этом время:

while (a < x[0] or a > x[n]){ 

Ваша попытка доступа к позиции N массива, которая будет случайным числом, если не инициализирована.

Смежные вопросы