用c++設計程式,求解多項式函式:P(x)=a0x^n+a1x^(n-1)+......+a(n-1)x+an謝謝各位了


uj5u.com熱心網友回復:
先把a0到an存盤到一個陣列里面,在用一個回圈求解,回圈里用pow求各項的值,并且要在回圈里進行累加,最后到的累加值即為p(x)uj5u.com熱心網友回復:
#include <iostream>using namespace std;
int main() {
int n;
float c[20];
cout << "Please Input n(1<=n<20):";
cin >> n;
if (n>=20) return 1;
cout << "Please coef\n";
for ( int i=0; i<=n; i++ ) cin >> c[i];
float x;
cout << "Please input x:";
cin >> x;
for (int i=0; i<n; i++) {
cout << c[i] << "x" << x << "^" << n-i << " + ";
};
cout << c[n] << " = ";
float result = 0;
for (int i=0; i<=n; i++)
result = result*x + c[i];
cout << result << endl;;
return 0;
}
運行結果:
Please Input n(1<=n<20):3
Please coef
1.1 2.2 3.3
4.4
Please input x:2.5
1.1x2.5^3 + 2.2x2.5^2 + 3.3x2.5^1 + 4.4 = 43.5875
uj5u.com熱心網友回復:
謝謝!????
uj5u.com熱心網友回復:
謝謝!????
uj5u.com熱心網友回復:
for (int i=0; i<=n; i++)result = result*x + c[I];
你要看懂這個, 這個可比pow效率高多了。
不用一次次的求 x的i次方,
而是把公式變化成
an + x*(an-1 + x*(an-2. + x*( an-3 + ..... *x(a0))).)))
這樣轉化的結果是運算量最小的
uj5u.com熱心網友回復:
其實剛剛一開始有點迷惑,看了一會就好像懂了點,第一次回圈之后result的值應該是c[0]
我大一,才開始學c++感覺好難??????
uj5u.com熱心網友回復:
還有一個問題就是為啥n是小于20的?

uj5u.com熱心網友回復:
因為c陣列只定義到了20了啊潛在的擔心 : 太大了運算會溢位
uj5u.com熱心網友回復:
第二次回圈之后應該是a[0]*x+a[1],然后就以此類推!!哇!!厲害厲害????謝謝!謝謝!
uj5u.com熱心網友回復:
因為c陣列只定義到了20了啊
潛在的擔心 : 太大了運算會溢位
好的????
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134387.html
標籤:C++ 語言
上一篇:咋子解決那
下一篇:C語言中陣列的基本操作(插入元素、洗掉元素、定位元素)我在寫代碼時出現了一些問題,希望能得到大佬們的解答!感謝!
