menu

arrow_back Why vivae the same result?And how to fix it?

by
1 vote
Good day!
Need help..
The conclusion is the same result
#include <iostream>
#include <conio.h>
#include <locale.h>
using namespace std;

int main() {
const int n=7;
float *z=new float[800];
float *x = new float[n]{ -3.2, -2.1, 0.4, 0.7, 2, 2.5, 2.77 };
float *y =new float[n]{ 10, -2, 0, -7, 7, 0, 0 };
int i, j, k;
int ni =(int) (x[n - 1] - x[0]) / 0.1;
for (k = 0; k < ni; k++)
{
float z1 = k*0.1;
float S = 0;
for (i = 0; i < n; i++) {
double P = 1;
for (j = 0; j < n; j++) {
if (i != j) {
P = P * (z1 - x[j]) / (x[i] - x[j]);
}
}
S = S + y[i] * P;
}
z[800] = S;
cout << z[k] << endl;

}
system("pause");
}

1 Answer

by
 
Best answer
0 votes
z[800] = S;
cout << z[k] << endl;

Вы заносите переменную S в 800-тую ячейку массива, а выводите с 0 по ni. Для решения проблемы вместо 800 следует написать k.
z[k] = S;
cout << z[k] << endl;