C言語の累乗計算とテイラー展開に関するプログラミングの課題

このQ&Aのポイント
  • C言語の課題で、累乗計算とテイラー展開に関する2つの問題があります。解けない部分について質問します。
  • 問題1では、任意の整数nを入力して4のn乗を計算するプログラムを作成する必要があります。
  • 問題2では、テイラー展開によるeのx乗の項の係数を求めるプログラムを作成する必要があります。
回答を見る
  • ベストアンサー

C言語 累乗の計算

プログラミングの課題が出たのですが どうしても解けない問題が2問あったのでここで質問させてもらいます。 尚、私が書けた範囲で書いているので 根本的な間違えがありましたらご指摘ください。 「□」の部分がわかりません。 (1)任意の整数nを入力して4^nを計算するプログラミングを完成させよ #include <stdio.h> main(){ int i,n,x; i=1;x=1; printf("n="); schanf("%d",&n); while(i<=□){         x=4*□; i++; } printf("Answer=%d\n",x); } (2)e^xをテーラー展開したときのx^nの項の係数を求めるプログラミングを書け。 #include <stdio.h> main(){ int i,n; float x; printf("Input Nunber"); scanf("%d",&n); x=0 for(i=1;i<=n;i++){ x=□*x; } x=1/□; purintf("Answer%f\n",x); } 回答をお待ちしております。

  • N-kami
  • お礼率70% (178/254)

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

  • ベストアンサー
  • Tort_Capa
  • ベストアンサー率21% (19/88)
回答No.5

No.2およびNo.3のTort_Capaです。 >累乗をどのように表せばいいのでしょうか?  printf()関数で出力する部分のことでしょうか?  printf()関数では計算した結果の値を出力します。たとえば、(1)では、整数nに3を入力して4^3を計算する場合は、printf()関数で   Answer=64 と出力されます。  (2)の   purintf("Answer%f\n",x); というのは、   printf("Answer%f\n",x); でないとエラーが出ますね。  書式を(1)と合わせるのであれば、   printf("Answer=%f\n",x); となっていたほうが良いと思います。

その他の回答 (4)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.4

> 累乗をどのように表せばいいのでしょうか? 4^n (nは0以上の整数)を例にすると n=0のとき: 1 n=1のとき: 1×4 n=2のとき: 1×4×4 n=3のとき: 1×4×4×4 (以下続く) ですから、1を初期値として、それに4をn回繰り返して掛ければいいだけです。ある処理をn回繰り返す方法はご存知ですね? あとは重箱の隅つつき。 > main(){ まだ習っていないのかもしれませんが、main()の返り値型(int)を書く習慣をつけたほうがいいと思います。 > プログラミングを完成させよ > プログラミングを書け 「プログラミング」=「プログラムを組むこと」なので、違和感のある表現です。「プログラムを完成させよ」「プログラムを書け」のほうが普通。 main()も「プログラミング」も教科書にそのように書かれているのであれば、私なら放り捨てます。

  • Tort_Capa
  • ベストアンサー率21% (19/88)
回答No.3

No.2のTort_Capaです。少し追加します。 (2)に関してですが、for文の前にある   x=0 というのは誤りであると思います。正しくは、   x=1; でしょう。

N-kami
質問者

お礼

訂正ありがとうございます。

  • Tort_Capa
  • ベストアンサー率21% (19/88)
回答No.2

大学等の課題のようですから、ヒントだけ教えてあげましょう。 (1)に関しては、  「任意の整数nを入力して」 となっていますが、   n<0 の場合は、「□」に穴埋めするだけでは正しいAnswerを出力することができません。   n≧0 の場合だけ考えて、「n<0の場合は解答不能」と記述するのが良いでしょう。 (2)に関しては、「e^xをテーラー展開したとき」というのは、   e^x=1+x/1!+x^2/2!+x^3/3!+…+x^n/n!+… のことでしょうから、x^nの項の係数を求めればよいのですが、この際注意しなければいけないのが、プログラム中の   float x; の「x」は、「e^x」や「x^n」の「x」とは異なるということです。  あとは自分で考えてください。

N-kami
質問者

お礼

回答ありがとうございます。 (1),(2)もそうなのですが 累乗をどのように表せばいいのでしょうか?

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

「自分で計算するならどう計算するか」を考える.

関連するQ&A

  • C言語のIF関数のアドバイスお願いします。

    #include <stdio.h> int main(){ int x,i,div=0; printf("x="); scanf("%d",&x); for(i=1;i<=x;i++){ if(x%i == 0){ div++; } } if(ここがわかりません) printf("%dは素数です\n",x); else printf("%dは素数でありません\n",x); return 0; }

  • C言語のソースコードについて教えてください。

    以下のソースコードを学習用C言語開発環境で行ったのですが、 『ファイル「C:/Users/ユーザー名/AppData/Local/EasyIDEC/project/タイトル/main.c」の 「41行目」で記述エラーを発見しました。 「,」を付け忘れています。』 という、コンパイルエラーが表示されました。 何度も見直したのですが、よくわかりません。 #include <stdio.h> int main(int argc, char *argv[]) { char answer ; answer = 'n' ; while(answer =='n') { int input ; input = 0 ; int add ; add = 1 ; int sum ; sum = 0 ; printf("数値を入力して下さい。:") ; scanf("%d", &input ) ; int i ; i = 0 ; while(i < input) { sum =sum + add ; printf("\n%d",sum) ; i++ ; add++ ; } printf("\n1から%dまでの総和は、%dです。" , input , sum) ; while(1) { printf("\n終了しますか? y/n:") ; scanf(" %c , &answer) ; if( (answer != 'y') && (answer != 'n') ) { printf( "y or nを入れてください。") ; } else { break ; } } } return 0 ; }

  • C言語 プログラミングで行詰まりました…

    標準入力(キーボード)からi,jk,nの値を入力し、次の漸化式を計算し、X_0からX_nまで求めるプログラムを作成したいのですが、うまく表示されません。どかがおかしいのかご指摘お願いします。 <漸化式> X_n=(a+b)/X_(n-1) , X_0=c(n=0) ================================================================== #include<stdio.h> float f_X(int a,int b,float c) { float y; y=(a+b)/c; return y; } int main (void) { int number,i,j; float k,l,n,X; printf("i:"); scanf("%d", &i); printf("j:"); scanf("%d", &j); printf("k:"); scanf("%f", &k); printf("n:"); scanf("%f", &n); X=k; printf("X_0= %.6f\n",X); for(number=1;number<=n;number++) { l=f_X(i,j,X); printf("X_%d= %.6f \n",number,l); X=l; } return 0; } ===================================================================

  • C言語でmからnまでの合計を求めるプログラム

    これで動かないのですが、何が違っているのか、教えていただけますか。 #include <stdio.h> int main(void) { int m, n, sum, i, w ; printf("mからnまでの合計を求めます\n\n"); printf("m >> "); scanf(" %d", &m); printf("n >> "); scanf(" %d", &n); sum=0; if(m>n){ w=m; m=n; n=w; } sum=0; i=m; while(i<=n){ sum=sum+i; i=i+1; } printf("%d から %d の合計 = %d\n",m,n,sum); return 0; }

  • C言語の、sinxのマクローリン展開を教えて下さい

    C言語の、sinxのテイラー(マクローリン)展開を求めるプログラムを教えて下さい。 sinx=x-(x^3)/3!+(x^5)/5!-(x^7)/7!+(x^9)/9!・・・ となっており、 整数nと実数xを入力すると 第n項までの和を求めるプログラムを作らないといけません。 以下は、私が作ったプログラムです。 #include<stdio.h> #include<math.h> int main(void) { int i,n; double x,kotae,tmp; printf("n=? \n"); scanf("%d",&n); printf("x=? \n"); scanf("%lf",&x); kotae=x; tmp=1; for(i=1;i<n;i++) { tmp=tmp*(-1)*x*x/(2*i)/(2*i+1); kotae=kotae+tmp; } printf("sin%fのテイラー展開第%d項までの和は%f \n",x,n,kotae); return 0; } 作ったのですが、うまくいきません n=2、x=2にすると1.3333・・・とかになってしまいます どうすればいいでしょうか? 分かる方、お願いします。

  • C言語の質問です。

    #include"stdio.h" int main(void){ int a, b, add; scanf_s("%d%d", &a, &b); add = a+b; printf("add=%d\n", add); return 0; } と、------------------------------------------------------------------------------ #include"stdio.h" int tasizan(int x, int y); int main(void){ int a, b, add; scanf_s("%d%d", &a, &b); add = tasizan(a, b); printf("add=%d\n", add); return 0; } int tasizan(int x, int y){ int aa; aa = x + y; return aa; } の違いを教えてください。

  • c言語なのですが

    c言語なのですが #include<stdio.h> main() { int a; printf("整数を5回足し算する\n"); scanf("%d %d",&a); printf("a*5=%d\n",a*5); return(0); } でエラーが起こります どこを修正すればいいのでしょうか

  • C言語

    以下の出力結果はどうなりますか? 教えてください。 #include <stdio.h> #include <stdib.h> int main (void){ int n,f; n=792; f=2; while(f*f<=n){ while(n%f==0){ printf("%d",f); n=n/f; } f++; } if(n !=1) printf("%d",n); printf("\n"); return 0; }

  • c言語 標準体重計算のプログラミング

    標準体重計算のプログラミングを作成しています。身長(m)×身長(m)×22 での計算方法を採用していますが初心者なので全くでくません。全くなっていませんがここにのせます。 どなたか正しいプログラミングを教えてください #include <stdio.h> //標準体重の計算 int main (int argc, const char * argv[]) { int height; int weight; double x; double y; printf("あなたの標準体重を計算します\n\n"); printf("あなたの身長(cm)、体重(kg)を入力してください\n"); scanf("%d %d",&height,&weight); x=height/100; y=x*x*22; printf("これが標準体重です\n"); printf(" %y \n");

  • c言語について

    #include <stdio.h> MakeData(int *a,int n){ int i,b[5]={5,1,4,7,2}; for(i=0;i<5;i++){a[i]=b[i];} } BubbleSort(int n,int *a){ ここに流れ図に沿ったプログラムを作る } main(){ int i,n,a[100]; n=5; MakeData(a,n); for(i=0;i<n;i++){printf("%4d ",a[i]);}printf("¥n"); printf("並べ替え後¥n"); BubbleSort(n,a); for(i=0;i<n;i++){printf("%4d ",a[i]);}printf("¥n"); } この課題が分かりません。 もし詳しい方がいらっしゃいましたら教えて頂けると助かります。

専門家に質問してみよう