• ベストアンサー

Σの計算について

Σの計算についてつぎのようなプログラミングをしてみたんですけど、これって正しいですかね?mのそれぞれの値の時のΣの値が出ますかね?大学でしか実行が出来なくて、今できないので誰か正しいか確認して下さい。 #include <stdio.h> #include <math.h> int main() { int m,i; double h,M; M=0; for(m=1;m<=5;m++){ h=2/m; while(i<=m){ M=M+h; } printf("M%d=%lf",m,M); } return 0; } プログラミングを実行できるフリーのソフトがあれば教えて下さい。

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

  • ベストアンサー
  • squid
  • ベストアンサー率15% (45/284)
回答No.2

Linuxを入れgccを使用するか、 BrolandのBcc5.5または Microsoft .netあるいはCbuilder6体験版をいれる http://www.vector.co.jp/soft/dos/prog/se010138.html

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • khurata
  • ベストアンサー率40% (54/134)
回答No.5

 大学でCならば、おそらくは Windowsでなくて UNIX系の処理系で勉強されていると思います(勝手な推測ですが;)。  しかし家庭で使われている PCは、ほとんどが Windowsですから、なかなか家庭で実行してみるのは難しいと思います。  すでに回答されている皆さんのアプローチは、Windows上でプログラミングをするという方法であって、大学で使われている環境とはだいぶ違うものになると思います。  そこで私は、Windows上で UNIXっぽい処理系を実行出来る cygwinの導入をおすすめします。cygwin導入については、ここが詳しいのでご覧になって下さい。 http://pcweb.mycom.co.jp/special/2002/cygwin/index.html  また、cygwin自体については、ここにユーザーズガイドがあります。 http://www.sixnine.net/cygwin/cygwin-doc/cygwin-ug-net/cygwin-ug-net.html  なお、すでにご回答されている方々のオススメである Borland C++ Compilerの導入については、ここが詳しいです。 http://www.cmagazine.jp/beginner/bcc/index.html

全文を見る
すると、全ての回答が全文表示されます。
  • unchikun
  • ベストアンサー率22% (2/9)
回答No.4

上の式だと、iを初期化していませんからiにはごみのような値がはいっています。なのでwhile(i<=m){}のループは環境によっては条件をみたさないことが出てくるので実行されません。M1=0.000000,M2=0.000000となります。また仮にwhile(i<=m)ループにはいったとしてもそこでのしょりがM=M+hであるので iも mもこのループにいる限り値が変わらないので無限ループにおちいってしまいます。 フリーソフトのコンパイラといえば、 borland C++ が有名です。 http://www.borland.co.jp/cppbuilder/freecompiler/ 簡単なインストール方法はここにのっていますので参考までに。。 http://hp.vector.co.jp/authors/VA017148/pages/install/bcc.html もうひとつはやはりなんといってもGCCでしょう。 おそらく大学でプログラミングの授業をなさっているということはUNIX環境ではないでしょうか?もしそうであれば御自宅のマシンにUNIX系のOSを導入するのも手かもしれません。最近話題のLINUX(例えばfedora core)なんかでもいいですね。このfedora coreを導入すればコンパイラの中でも名高いGCCコンパイラがくっついてきます。もちろんfedora coreは無償です。導入がめんどうですがwindowsとの共存もできるのでUNIX系のOSになれるためにやってみるのもいいとおもいます。

全文を見る
すると、全ての回答が全文表示されます。
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.3

プログラムを見る限り、 5   2 Σ  ―― m=1  m を求めたいのですか? まずiの初期化がされていませんので、 while(i<=m){ が判断出来ませんね。 また、このwhileループの必要性がわかりません。 whileループ無しで、 M=M+h; または M+=h; で良いのでは・・・。 次に h=2/m; ですが、右辺はint型ですので、正しいhが求められません。 h=2.0/m; とする事をお勧めします。 あと、 include <math.h> ですが、とくにmath.hで定義されている関数を使っていないので、必要ないでしょうね。 最後に、このWeb上ではどうにもならないかもしれませんが、Cはフリーフォーマットですので、タブやスペースを入れて見やすくしましょうね。 参考URLはBorlandのフリーのコンパイラです。

参考URL:
http://www.borland.co.jp/cppbuilder/freecompiler/
全文を見る
すると、全ての回答が全文表示されます。
  • apple-man
  • ベストアンサー率31% (923/2913)
回答No.1

 うまく行くかわかりませんが、 Borlandの無料のコンパイラーが あります。

参考URL:
http://www.borland.co.jp/cppbuilder/freecompiler/bcc55download.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • webでプログラミング repl.itの利用

    Web上でC++の実行をしようとrepl.itを使いました。 しかし、C++でプログラミングを実行しようとしても exited with non-zero status というエラーが出てしまいます。 これの解決方法をお願いします。 また、単にソースがおかしいことも考えられるので載せます。 #include <stdio.h> #include <math.h> int main(){ int x,y,i; printf("xに代入する値を決めてください。x="); scanf("%d",x); for(i=0;i<x;i++){ y=y+2; } printf("y=%dです。",y); return 0; }

  • プログラムの作成

    Cで、キ-ボ-ドから整数を1個(mとする)、実数を1個(xとする)それぞれ入力し、 S=Σ(n=0からmまで)1/2n+1×(x-1/x+1)^2n+1 の値を求めるプログラムを作ってみたのですが、あってるかどうかわかりますか? #include<stdio.h> #include<math.h> main() { double y=0; int i,m,x; printf(\" Input m: \") scanf(\"%lf\", &m); printf(\" Input x: \") scanf(\"%lf\", &x); for(i=0; i <= m; i++) { y += 1/(2*i+1)*pow((x-1)/(x+1),2*i+1) } printf(\" S = %d\n\", y) }

  • プログラムについて教えて下さい。

    ある値を入力し、0以上100以下のときだけ平方根を計算するプログラムで、負の値や100よりも大きな値を入力したときは何も表示せず、 再度入力するようなプログラムを教えて下さい。 #include <stdio.h> #include <math.h> main() { int n,i; printf("0から100までの値を入力してください。"); scanf("%d",&n); i=0; do{ i++;} while(i<=100); if(100>=0) printf("%dの平方根は%dです。\n",n,sqrt(i)); return(0); } どうか、お願いします。

  • 数値計算法を勉強しているんのですが…

    Shimpson公式を用いて計算したときに何故mが大きいところで誤差が大きくなりました。プログラムは下に示しました。なぜこのような結果になったか分かりません。 #include <stdio.h> #include <math.h> #define PI 3.141592653589793 double sum(long m) { double n,sum,h,x; h=(PI/2)/m; sum=0; n=0;x=0; while( n<m ){ sum+=2*sin(x);/*項の加算*/ sum+=4*sin(x+h/2); n++; x+=h; } sum+=-sin(0)+sin(PI/2); sum*=h/6; return sum; } int main(void) { double s; long m; int i; m=1; for(i=0;i<8;i++){ s=sum(m); printf("%2d m=%10ld sum= %22.16e err= %22.16e \n",i,m,s,s-1.0); m*=10;/*次のmは10倍*/ } return 0; }

  • log(0)と-1.#INF00Pの関係

    #include<stdio.h> #include<math.h> main() { double y; y=log(0); printf("%lf",y); return 0; } 上のプログラムを実行すると -1.#INF00P という結果が出力されます。 これは一体何なのでしょうか?値なのですか? http://www.okweb.ne.jp/kotaeru.php3?q=648430 ではlog(0)の影響で 1.#INF00 という結果になっているようですが、何が違うのでしょうか?

  • 関数とポインタ

    整数Mを素因数分解して、その素因数を*primeに入れておきたいんですが、mainの方で呼び出すと違う値になってしまいます。。 同じ値になるようにしたいのですが…どなたかお願いします(>_<) #include<stdio.h> #include<stdlib.h> #define MAX 256 int prime_fac(int M, int* prime) { int i, n; i = 1; n = 2; while(M != 1){ while(M % n == 0){ *(prime+i) = n; printf("%d\n", *(prime+i)); M = M / n; i++; } n++; } return i; /*素因数の個数(重複あり)*/ } int main(){ int M; int *prime; prime = (int *)malloc(sizeof(int) * MAX); printf("M: "); scanf("%d", &M); prime_fac(M, prime); printf("%d\n", *prime); printf("%d\n", *prime+1); free(prime); return 0; }

  • プログラミングの課題で困ってます。

    正弦関数x=sintのグラフを■で描きなさい(31行程度で)。数値xに対する■の数はウインド各行に表示される しきれる範囲内で任意に定めてよい。 という課題が出ました。よくわからなくて困っています。 下記に書いてるプログラミングを参考に答えを教えていただきたいと思い、質問させていただきました。よろしくお願いします。 また、下記を参考にしなくてもよいです。 プログラミングはvisual C++ 2008を使ってます。 #include "stdafx.h" #include<stdio.h> #include<math.h> int _tmain(int argc, _TCHAR* argv[]) { double x[100]; int i , j; for(i=0; i<31; i++){ x[i]=sin(0.1*i); } // for(j=0; j<31; j++){ // printf("%lf\n",y[j]); // } for(i=0; i<31; i++){ for(j=0; j<x[i]*20; j++){ printf("■"); } printf("\n"); } return 0; }

  • pow

    「1~10までの数、 その2乗、 その3乗」を10行出力するものです。 なぜか5^2 = 24 なってしまいました。なぜですか。お願いします。 #include <stdio.h> #include <math.h> int main(void) { int i, j; for (i = 0; i < 10; i++) { for (j = 0; j < 3; j++) { printf("%4d ", (int)pow(i+1, j+1)); } printf("\n"); } return 0; }

  • while文について、c言語です。

    ぼくはプログラム始めたばかりです。ミスを見つけられた方、ご指導お願いします。 正整数nを入力して、nの階乗をもとめるプログラムを作りたいのですが、実行結果がいつも1になります。どこがおかしいか教えてください。以下のプログラムです。 #include <stdio.h> int main(void) { int i, n, s; printf("n = ?"); scanf("%lf", &n); s = 1; i = 1; while(i <= n) { s = s * i; i = i + 1; } printf("s = %3d\n", s); return 0; }

  • 乱数について

    C の入門書を1冊読み終え、簡単なプログラムを作成しようとしているのですが、 早速分からないことが出たので教えて頂ければと思います。 --------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int num; int i = 0; while( i < 4 ){ srand(time(NULL)); num = rand()%100; printf("%d\n", num); i++; } return 0; } --------------------------------------------- 上記を実行したのですが、秒数を乱数の種としているため4回とも同じ値を取得してしまいます。 より高精度に秒数を取得することは可能でしょうか? もしくはこのようなかたちで4回ともに異なる数を得ることが出来る方法がありましたら教えて頂きたいと思います。

このQ&Aのポイント
  • 充電が少ないときにLogitec Wireless DVD PlayerのアプリでDVDを観ていると映像が乱れることがあります。
  • 充電ができない状況で映像が乱れても観たいとき、表示させない方法はありますか?
  • 問題なくDVDを観たい場合、充電が必要ですが、充電が少ないと映像が乱れることがあります。
回答を見る