[問題] 用陣列做SinX泰勒展開式 (麻煩除錯)

看板C_and_CPP作者 (ㄆ王耑)時間13年前 (2011/04/30 15:30), 編輯推噓4(4020)
留言24則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DevC++ ---------- #include <stdio.h> #include <stdlib.h> #include <math.h> double s(double num); int main (void) { double x; printf("歡迎來到sinX的泰勒展開式,請輸入X的值\n"); scanf("%f",&x); printf("所求=%f\n",s(x)); scanf(" "); return 0; } double s(double num) { int i; double k=0; double a[90],c[90]; a[0]=1; c[0]=1; for (i=1;i<=89;i++) { a[i]=a[i-1]*(2*i)*(2*i+1)*pow(-1,i); } for(i=1;i<=89;i++) { c[i]=(pow(num,2*i+1)/a[i]); } for (i=0;i<=89;i++) { k=k+c[i]; } return k; } -- 這是目前的code -- -- 麻煩各位C語言版友 幫忙除錯 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.177.105

04/30 15:34, , 1F
2i => 2*i, 寫程式的語法和數學慣用寫法不見得全相同:)
04/30 15:34, 1F

04/30 15:35, , 2F
另外, 你的c[]與a[]開int[]合適嗎?? 請記得C語言裡,
04/30 15:35, 2F

04/30 15:36, , 3F
整數/整數還是整數: double d = 3/2; // 結果是1.0非1.5
04/30 15:36, 3F

04/30 15:38, , 4F
相對的int i=3.0/2.0; 雖然是算出1.5但放進i裡會因為轉
04/30 15:38, 4F

04/30 15:38, , 5F
型而無條件捨棄讓i值為1.
04/30 15:38, 5F

04/30 15:40, , 6F
話說, 是scanf還是printf在處理double時得用 %lf 啊@_@"
04/30 15:40, 6F

04/30 15:50, , 7F
若用double a[] c[]可以嗎?
04/30 15:50, 7F

04/30 15:51, , 8F
對了 還未向您謝謝 :)麻煩您了
04/30 15:51, 8F

04/30 15:54, , 9F
不是printf??
04/30 15:54, 9F

04/30 16:00, , 10F
我改了double a[] c[]可是我輸入進去全部只會跑1出來
04/30 16:00, 10F

04/30 16:01, , 11F
請問問題出在哪裡
04/30 16:01, 11F

04/30 16:04, , 12F
k也要改吧, func return double型態, 可是你code裡
04/30 16:04, 12F

04/30 16:05, , 13F
return的k可是int, 會有我4F提到的問題@_@"
04/30 16:05, 13F

04/30 16:05, , 14F
至於printf或scanf, 小弟我個人的習慣是凡是用double的
04/30 16:05, 14F

04/30 16:05, , 15F
不管是scanf還是printf都用%lf, 印象中至少不會錯XD
04/30 16:05, 15F

04/30 16:09, , 16F
修改了 他還是只能跑1而已QQ
04/30 16:09, 16F
※ 編輯: Ray0215 來自: 61.231.177.105 (04/30 16:11)

04/30 16:15, , 17F
scanf那邊要改%lf, 第一個pow的參數-1改成-1.0
04/30 16:15, 17F

04/30 16:17, , 18F
這樣改我這邊用VC2005跑就可以算出東西了; 只是對不對
04/30 16:17, 18F

04/30 16:17, , 19F
我也不曉得XD
04/30 16:17, 19F

04/30 16:19, , 20F
哇哇哇 真的跑初其他數字了!!我等下用EXCEL驗算 感激涕零
04/30 16:19, 20F

04/30 16:24, , 21F
有錯就是演算法理解與實作的問題了我猜Orz
04/30 16:24, 21F

04/30 16:24, , 22F
另外建議, 以後貼code可以考慮用置底的貼code網站@_@"
04/30 16:24, 22F

04/30 16:30, , 23F
好 剛來這裡還有點不懂XDDD 謝謝
04/30 16:30, 23F

04/30 16:30, , 24F
c[0]=1好像要改成c[0]=num
04/30 16:30, 24F
文章代碼(AID): #1DkxgIzU (C_and_CPP)