• ベストアンサー

配列のプログラム(C言語)

実数yの値をキーボードから入力し、数列an=n+1(n=0.1.2.・・・.8.9)を係数にもつ多項式 f(y) = a9yの9乗 + a8yの8乗 +・・・+ a1y + a0 の値を計算して画面に表示するプログラムをforのループを使って教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

{ double y,f; int n=9,i; scanf("%lf",&y); double f=n+1; for(i=n-1;i>=0;i--) f=(i+1)+f*y; printf("%g\n",f); }

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「配列」はどこに関係するの?

関連するQ&A

  • c言語の配列のプログラム

    実数yの値をキーボードから入力し、数列an=1/n!(n=0.1.2.・・・.8.9)を係数にもつ多項式f(y)=a0 + a1y + a2yの2乗 +・・・+ a9yの9乗 の値を計算して画面に表示するプログラムをforのループを使って教えてください。

  • C言語教えてください。

    (1)二次方程式y=a*x*x+b*x+cについて、a=1.0,b=2.0,c=3.0として、x=1.1,2.2,3.3,4.4のときのyをもとめる計算を行い、式と係数値とxと対応するyの値を表示するプログラムを作成せよ。 (2)xを与えて、xの2乗、3乗を計算し、xと対応する結果を表示するプログラムを作成せよ。なお、x=3,5,7,9とする。

  • C言語のプログラム

    C言語で2つの微分方程式をEuler法、Heun法、Runge-Kutta法により求めるプログラムを作りたい。ただし、初期条件はx=0,y=1とする。また、間隔Δxを変えたときの解の変化を調べたい。 Euler法のプログラムはどうにか分かったのですが、Heun法、Runge-Kutta法のプログラムがわかりません。 Euler法のプログラム #include_<stdio.h> #include_<math.h> int_main(){ __double__a=0; __double__b; __int_____m=10; __int_____n; __double__h; __double__x,y; __double__dydx; __int_____k; __double__e; __double__f; __printf("オイラー法計算例:y=e^x,_y=1/e^4x\n\n"); __//_y_=_e^x __b_=_1; __for(n=100;n<=10000;n*=100){ ____h_=_(b-a)/n; ____printf("y'_=_y:_h(=dx)_=_%.1e_(y=e^x)\n",h); ____x_=_a;_y_=_1; ____for(k=0;k<=n;k++)_{ ______x_=_k*h; ______if(k%(n/m)==0)_{ ________f_=_exp(x); ________e_=_fabs(y-f); ________printf("x=%.2f,_y=%f,_e^x=%f_er=%.0e\n", ________x,y,f,e); ______} ______dydx_=_y; ______y_=_y_+_dydx*h; ____} __} __printf("\n"); __//_y_=_1/e^4x __b_=_4; __for(n=100;n<=10000;n*=100){ ____h_=_(b-a)/n; ____printf("y'_=_-4y:_h(=dx)_=_%.1e_(y=1/e^4x)\n",h); ____x_=_a;_y_=_1; ____for(k=0;k<=n;k++)_{ ______x_=_k*h; ______if(k%(n/m)==0)_{ ________f_=_exp(-4*x); ________e_=_fabs(y-f); ________printf("x=%.2f,_y=%f,_1/e^4x=%f_er=%.0e\n", ________x,y,f,e); ______} ______dydx_=_-4*y; ______y_=_y_+_dydx*h; ____} __} __return_0; } 分かる方がいましたら、回答よろしくお願いします。

  • C言語のプログラムを見てください

    ある100行の値がx列、y列の2列あるファイルを読み込んでそれを配列に入れ、yの最小値及びそれと同じ行にあるxの値を表示するプログラムを書きたいのですがy列の最小値を表示するプログラムを書き終えた所でコンパイルして実行してみると正しく値が表示されませんでした。それどころか実行するたびに値が変わってしまいます。どこがおかしいのかわからないため、ご指摘のほどよろしくお願いします。また、できれば同じ行にあるx列の値も表示させるプログラムを教えてください。 よろしくお願いします。 #include <stdio.h> #include <stdlib.h> #define N 100 int main(void) { int x[N],i; double y[N],min; FILE *fp; fp=fopen("book.dat","r"); if(fp==NULL){ puts("can't open file!"); exit(-1); } for(i=0;i<N;i++){ fscanf(fp,"%d %lf", &x[N],&y[N]); printf("x=%d\n y=%lf\n",x[N],y[N]); } min=y[0]; for(i=1;i<N;i++){ if(y[i]<min) min=y[i]; } fclose(fp); printf("最小値:%lf\n",min); return 0; }

  • プログラムについて(C言語)

    #include<stdio.h> int main() { int i,n,total; for(;;){ /* 無限ループ*/ printf("整数n?"); /* nの値の表示 */ scanf("%d",&n); /* ifとbreakを使った終了判定 */ if(n<0)break; total=1; for(i=1;i<=n;i++){ printf("i=%d ",i); total*=i; /* total←total*i(階乗の計算) */ } printf("total=%d\n",total); /* totalの値(結果)の表示 */ } printf("Thanks\n"); /* 終了メッセージの表示 */ return(0); } これは階乗を求めるプログラムなのですが、i++ではなくi--をつかって求める場合 どのように変更すればよいでしょうか? for(i=1;i<=n;i++){ あたりをいろいろ弄ってみたのですが、求めてる結果は得られませんでした

  • 慶應経済入試、等差数列の問題です

    AとDを正の実数とし、{An}を初項A、公差Dの等差数列とする。jを1以上の整数とし、 Bn=(An+j)の2乗-(An)の2乗で数列{Bn}を定めるとき、これらは等差数列になるとき、 数列{Bn}の公差をDとJを使って表すのが問題です。 An=A+(N-1)D Bn=(An+j)の2乗-(An)の2乗=(An+j + An)(An+j - An) を計算していくと、{2A+(2N+J-2)D}JD になるところまではわかるのですが、 {2A+(2N+J-2)D}JD を JD(2A+JD)+(N-1)×2JDの2乗 と変形し、等差数列となり、 JD(2A+JD)が初項で、2JDの2乗が公差となるとのことですが、 この変形がいまいちよくわかりにくいところです。 等差数列になるということは、(N-1)の形を作り出しなさいということだとは思うのですが、 初項や公差は定数でなくてもよいのはなぜかもいまいちよくわかりませんので、わかりやすくお教えお願いします。

  • C言語のプログラムで質問です。

    C言語のプログラムで質問です。 下のプログラム(最小二乗法の計算)を実行したところ -1.#IND00 というエラーが出てしまいます。 どこを直せばいいのでしょうか、教えてください。 #include <stdio.h> #include <math.h> /* gauss33.c */ #define N 3 main(){ double A[N][N],Aa[N][N]; double b[N],x[N], bb[N], e[N]; int n=N; int i, j, k; double akk, aik, s; double y[N]; double xx,yy; for(i=0;i<n;i++){ /*変数の初期化*/ x[i]=y[i]=0; for(j=0;j<n;j++) A[i][j]=0; } for(i=0;i<5;i++){ /*データ点は5点*/ printf("\n(x,y)="); scanf("%lf,%lf",&xx,&yy); A[0][0]+=xx*xx*xx*xx; /*Σx^4*/ A[0][1]+=xx*xx*xx; /*Σx^3*/ A[0][2]+=xx*xx; /*Σx^2*/ A[0][1]=A[1][0]; A[0][2]=A[1][1]=A[2][0]; A[1][2]+=xx; /*Σx*/ A[1][2]=A[2][1]; A[2][2]=n; y[0]+=xx*xx*yy; /*Σx^2y*/ y[1]+=xx*yy; /*Σxy*/ y[2]+=yy; /*Σy*/ } /* save original coefficients */ for(i=0; i<n; i++){ for(j=0; j<n; j++){ Aa[i][j]=A[i][j]; } bb[i]=b[i]; } /* forward operation */ for(k=0; k<n-1; k++){ akk=1/A[k][k]; for (i=k+1; i<n; i++){ aik=-A[i][k]*akk; for (j=k+1; j<n; j++){ A[i][j]+=aik*A[k][j]; } b[i]+=aik*b[k]; } for(j=k+1; j<n; j++){ A[k][j]*=akk; } b[k]*=akk; } /* backward operation */ x[n-1]=b[n-1]/A[n-1][n-1]; for(k=n-2; k>=0; k--){ s=0.0; for (j=k+1; j<n; j++){ s+=A[k][j]*x[j]; } x[k]=b[k]-s; } /* chek */ for(i=0; i<n; i++){ s=0.0; for(j=0; j<n; j++){ s+=Aa[i][j]*x[j];} e[i]=s-bb[i]; printf("\nx(%d)=%f error=%f\n",i, x[i], e[i]); } }

  • C言語プログラミング

    頼る人がいないので助けて下さい。すべてforを用いて下さい。 (1)入力された数だけ*が表示されるプログラムを用いて作成してください。 (2)4つの数が入力されるとその平均を求めるプログラムを作成してください。 (3)数列an = n^2に関して入力された項数までの和を求めるプログラムを作成してください。

  • C言語プログラム

    N次の複素正方行列S,Tの積Uを計算するプログラムを作りたいのですが、実数で正方行列を計算するプログラムと 複素数の積、和のプログラム struct complex { double re; double im; }; を作ったのですが、この二つをまとめるとプログラムができるらしいのですがまとめ方が全然わかりません。どのようにしたらいいかヒントなど教えてください。

  • C++の連立方程式のプログラム

    3元3列の連立方程式の係数を格納し、格納されて結果を表示するプログラムを表示せよ。ただし以下の2通りで行う事 係数を『初期化』を使って配列に入力する キーボードから入れる 上に書いたやつを参考にできると思って載せたんですが、分かる人いますか? 問題の意味って 連立方程式の係数を入力して(9つの係数)それを3*3のマトリックスで出すってだけで解くわけじゃないんですかね?どこにも連立方程式を解くって書いてないわけだし。 つまり 『1つ目の係数を入力せよ 2 2つめの係数を入力せよ 3 … 9つ目の係数を入力せよ 9 2 3 4 8 8 0 4 5 9』 みたいな ヒントの所には、 3*3のマトリックス作って初期化を自分で行う っていうのと 連立方程式の形が書いてありますが a00x+a01y+a02z=α a10x+a11y+a12z=β a20x+a21y+a22z=γ そして、とりあえず、3*3行列はこれで出来ました。 #include <iostream> using namespace std; int main() { int i,j; int vector[]={10,20,30,40}; int matrix[][3] = {{1,2,3},{4,5,6},{7,8,9}}; for(i=0;i<3;i++) { for(j=0;j<3;j++) { cout << matrix[i][j] << ' '; } cout << '\n'; } return 0; } しかし、問題の連立方程式の係数を格納とかキーボードから入力ができないんですよね 多分上に書いたプログラムくらいのレベルだからそんなに複雑にならないはずなんですが

専門家に質問してみよう