1 名前:デフォルトの名無しさん [2008/10/30(木) 07:49:39 BE:113605834-PLT(24065)] あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。 【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。 ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 前スレ C/C++の宿題を片付けます 116代目 pc11.2ch.net/test/read.cgi/tech/1222813731/
2 名前:デフォルトの名無しさん [2008/10/30(木) 09:38:19 ] 2
3 名前:775 ◆00BY157eo6 mailto:sage [2008/10/30(木) 19:42:33 ] さっぱりわからないので少しだけでもお願いします [1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク): LU分解法を用いて、 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip のmatrix2.datファイル(内容は下のtxtにまとめました) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7892.txt を参照して、 その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。 AX=I(Iは単位行列)となることをしめしてください、 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip に含まれるmat_aux(内容は) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7889.txt に含まれる補助関数を使ってください。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: ([2008年11月6日まで]
4 名前:911 [2008/10/30(木) 20:52:37 ] すいません 回答してくれたプログラムを立ち上げてみたんですが、エラーがかえってきて困ってます。 #include<stdio.h> int gcd3(x, y, z){ return gcd( gcd(x,y), z); } でいいんですか?
5 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 21:19:41 ] [1] 授業単元:配列 [2] 問題文(含コード&リンク): 複数の整数値を入力して、それらを配列data に格納し、一番小さい値と一番大きい値がそ れぞれ格納されている配列の添え字と、その値を出力するプロググラムを作成しなさい。 <プログラム実行例> 何個の整数値を入力しますか: 5 1 4 3 5 2 一番大きい値は配列data[3]に格納されている5 です。 一番小さい値は配列data[0]に格納されている1 です。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] VC 6.0等 [3.3] C [4] 期限:明日 [5] 関数とかはまだ習ってないです
6 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 21:20:02 ] >>4 立ち上げるって、コンパイル通らんだろ?
7 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 21:20:12 ] [1] 授業単元:配列 [2] 問題文(含コード&リンク): 複数の整数値を入力して、それらを配列に格納し、小さい順に並びかえるプログラムを作成しなさ い。 <プログラム実行例> ※赤字の部分をキーボードから入力します 何個の整数値を入力しますか: 5 1 4 3 5 2 これらを小さい順に並びかえると 1 2 3 4 5 です。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] VC 6.0等 [3.3] C [4] 期限:明日 [5] 関数とかはまだ習ってないです
8 名前:911 [2008/10/30(木) 21:51:02 ] 通りませんね・・・
9 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 22:05:59 ] >>5 #include <stdio.h> int main() { int data[100]; int i, n; int max, min; printf("何個の整数値を入力しますか:"); scanf("%d", &n); max = 0; min = 0; for (i = 0; i < n; i++) { scanf("%d", &data[i]); if (data[i] > data[max]) { max = i; } if (data[i] < data[min]) { min = i; } } printf("一番大きい値は配列data[%d]に格納されている%dです。\n", max, data[max]); printf("一番小さい値は配列data[%d]に格納されている%dです。\n", min, data[min]); return 0; }
10 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 22:14:25 ] >>9 ありがとうございます!助かりました
11 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 22:25:21 ] >>7 #include <stdio.h> int main() { int data[100]; int i, j, n; int temp; printf("何個の整数値を入力しますか:"); scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &data[i]); for (j = i; (data[j] < data[j - 1]) && (j > 0); j--) { temp = data[j]; data[j] = data[j - 1]; data[j - 1] = temp; } } printf("これらを小さい順に並びかえると\n"); for (i = 0; i < n; i++) { printf("%d ", data[i]); } printf("です。\n"); return 0; }
12 名前:5 mailto:sage [2008/10/30(木) 22:30:23 ] >>11 ありがとうございます
13 名前:911 [2008/10/30(木) 22:41:06 ] 結局、あの問題の答えってなんなんですか?
14 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:06:29 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7897.txt 連結リストのセルの先頭をdelete_firstで削除して 5 1 1 4 4 → 2 2 3 3 と表示されるのですがメモリの35と23行目の解放がされていないと表示されます。 どこにfree()を入れればいいんでしょうか?
15 名前:911 [2008/10/30(木) 23:26:48 ] やっぱり、C言語の知識がある程度ないと無理みたいですね。。。 出直してきます
16 名前:デフォルトの名無しさん [2008/10/31(金) 00:06:10 ] >>14 /*連結リストの先頭のセルを削除*/ struct cell *delete_first(struct cell *head) { struct cell * next; if(head == NULL){ return NULL; } next = head->next; free(head); return next; } こんなことがしたかったんだろうと妄想
17 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 00:39:22 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 参考プログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7898.txt 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7899.txt [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: Visual stdio2005 [3.3] 言語:C言語 [4] 期限:10月31日 13:00まで [5] その他の制限:特になし よろしくお願いします
18 名前:17 mailto:sage [2008/10/31(金) 00:41:33 ] 問題はA1のみです
19 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 00:53:39 ] [1] 授業単元: 信号処理 [2] 問題文(含コード&リンク): pc11.2ch.net/test/read.cgi/tech/1222813731/832 の問題の続き @ 前回完成させたのプログラムを変更させなさい。 プログラム→kissho6.xii.jp/14/src/1yon14691.c.html DLKey:foo data[cnt] < ave以下のとき 関数powを使って、分散の計算をして標準偏差を求めるように変更させなさい。 ※補足 出力したファイルはこのような感じになっていること peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・ [38]3.4255342 [72]3.214283 [98]2.434924390・・・・ ・ ・ ・ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年10月31日午後1時 [5] その他の制限: 特になし よろしくお願いします。
20 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 02:46:46 ] [1] 授業単元: プログラミング実習2 [2] 問題文(含コード&リンク): 2008年のある月のカレンダー 2008年の任意の月のカレンダー1ヶ月分を表示するプログラムを作成する。 入力:月、出力:該当月のカレンダー ステップ0・月を入力する、次のプログラムを元にします: #include <stdio.h> int main (void) { int year = 2008; int month; printf("表示させる月を入力してください:\n"); scanf ("%d", &month); return 0; } ステップ1・入力された月を元にして、表示する年月を表示する処理を追加してください。 ステップ2・2008年がうるう年であるかどうかの判定を追加し、表示する月の日数を求め、その日数を表示してください。 ステップ3・"Sun~Sat"を表示した後、ステップ2で求めた日数を表示させてください。 注意:曜日はずれていても構いません。 [3] 環境 Visual C++ [3.1] OS:Windows [3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ [3.3] 言語: C言語 [4] 期限: 2008年11月3日(月)までお願いします。 [5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数 逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、 繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=) インクリメント(++)デクリメント(--)は習いました。 お願いします。
21 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 03:34:49 ] >>20 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7902.c
22 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 10:16:06 ] 課題4-1 無限級数 以下の無限級数は0 < |x| < 1 の時に収束することが知られている. f(x) = ∞Σ i=0 xi (1) = 1 1 − x (2) 式(1) において,第N 項までの部分和で打ち切ることによって,級数の近似式が得られる.第 N 部分和により級数f(x) を近似するプログラムを作成し,適当なx (0 < |x| < 1) に対して,項 数N の増加につれて,部分和が真値1 1−x に収束していく過程を観察せよ. 誰か助けてください。
23 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 11:06:36 ] printf(" Sun Mon Tue Wed Thu Fri Sat\n"); (笑)
24 名前:22 mailto:sage [2008/10/31(金) 11:11:43 ] #include <stdio.h> int main (void) { double x, i, n, sum ,prod; sum=0; prod=1; printf("代入するxの値を入力してください。"); scanf("%lf",&x); printf("第何項までの和を求めますか?"); scanf("%lf",&n); for (i=1;i<=n;i++) {prod = prod * x ; sum=sum + prod; printf( "n= %d %d\n ",i ,sum); } return 0; } これでできない理由を誰か教えてください。
25 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 14:59:36 ] >>21 本当に有難う御座いました。 大変助かりました。
26 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 15:16:33 ] [1] 授業単元: プログラミング実習2 [2] 問題文(含コード&リンク): 以下の実行結果になるプログラムの作成 条件1:"*"で三角形を描く。 条件2:底辺が10個の"*"となるようにする。 [3] 環境 Visual C++ [3.1] OS:Windows [3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ [3.3] 言語: C言語 [4] 期限: 2008年11月3日(月)までお願いします。 [5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数 逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、 繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=) インクリメント(++)デクリメント(--)は習いました。 お願いします。
27 名前:775 ◆00BY157eo6 mailto:sage [2008/10/31(金) 15:27:04 ] さっぱりわからないので少しだけでもお願いします [1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク): LU分解法を用いて、 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip のmatrix2.datファイル(内容は下のtxtにまとめました) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7892.txt を参照して、 その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。 AX=I(Iは単位行列)となることをしめしてください、 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip に含まれるmat_aux(内容は) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7889.txt に含まれる補助関数を使ってください。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: ([2008年11月6日まで]
28 名前:デフォルトの名無しさん [2008/10/31(金) 15:39:32 ] 授業で言っていることはおぼろげにわかる気がするんですが、どんなプログラムを書けばいいのかまったくわかりません。。。 おねがいします! [1] 授業単元:JPEGの読み込み等 [2] 問題文(含コード&リンク): JPEGファイルを読んで ブロック(マーカ単位)で表示するプログラム(16進) (JPEGでないときエラーが出るとなおよい) [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 11月3日まで
29 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 15:48:09 ] #include <stdio.h> int main(void) { int i, j; for(i=1; i<=10; i++){ for(j=0; j<i; j++){ printf("*"); } printf("\n"); } return 0; }
30 名前:29 mailto:sage [2008/10/31(金) 15:49:26 ] >>26
31 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 15:56:56 ] >>27 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7903.c
32 名前:775 ◆00BY157eo6 mailto:sage [2008/10/31(金) 16:03:39 ] >>31 ありがとうございました。
33 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 19:26:22 ] ここCASLの宿題はやってもらえませんかね?
34 名前:デフォルトの名無しさん [2008/10/31(金) 19:52:09 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): ★下記の仕様を満たすプログラムをC言語で作成しなさい 【仕様】 表計算ソフト簡易プログラム ▽ Excelのように2次元配列で10人分の3教科の素点表示する。なお、素点は100点満点でランダムに作るものとする。 ▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から順に)を表示する。なお平均は少数第1位までの表示とする。 ▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の行を作り、各行についてそれぞれ求めて表示する。 (表示例:空欄にはそれぞれ計算結果が入ることになる) 番号| 国語 数学 英語 |合計 |平均 |順位 1 | 75 35 40 | | | 2 | 69 75 82 | | | (中 略) 10 | 57 48 36 | | | --------------------------------------------------- 合計 | 平均 | 最高 | 最低 | [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: 分かりません [3.3] 言語: C言語 [4] 期限: 来週中ぐらい [5] その他の制限: 繰り返し、条件処理、配列を勉強しました。これらを使って、一次元配列でお願いします。 初心者なので初心者でも分かるようなプログラムをお願いします。
35 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:37:26 ] >>34 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7906.c
36 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:44:59 ] >>34 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7907.txt
37 名前:デフォルトの名無しさん [2008/10/31(金) 21:28:33 ] >>35 >>36 ありがとうございます。
38 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 00:20:57 ] >>24 #include <stdio.h> int main (void) { double x, sum, prod; int i, n; sum = 0; prod = 1; printf("代入するxの値を入力してください。"); scanf("%lf",&x); printf("第何項までの和を求めますか?"); scanf("%d",&n); for (i = 1; i <= n; i++) { prod *= x; sum += prod; printf( "n = %d %lf\n ",i ,sum); } return 0; }
39 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 03:54:17 ] このスレで回答してる人って何者なの? 学生? 何気にこのスレで出た宿題をこなしてけばそれなりに実力がつきそうだな
40 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 10:20:49 ] こんなんじゃ実力つかないよ。 もっと難しい問題プリーズ。
41 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 11:51:17 ] >>29-30 本当に有難う御座いました。 大変助かりました。
42 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 11:56:48 ] >>39 ・演習のための明らかに簡単なプログラム こんなんじゃ実力は付かない ・プログラムのためのプログラミング ・実用的な計算 とかじゃないとダメだろ
43 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:15:54 ] 実力がつくかどうかはわからないが、こなしていけば学生の勉強くらいにはなると思う
44 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:05:56 ] そもそも学生の宿題なんだからな。 できる奴は自力でできるわけだし。
45 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:46:19 ] これくらいのことができなきゃ、プログラムのためのプログラミング、実用的な計算? なんて無理。というか、プログラミングと数値計算は多少分野が異なる。
46 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:52:06 ] つってもある程度難しかったり、面倒だとだれもやらないくせにwwwwww
47 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 14:14:16 ] 計算に関しては、計算式を把握していれば、あとは標準ライブラリを用いるなり 多少拡張するなら、変数の扱い方をしっかりしていれば良い。
48 名前:デフォルトの名無しさん [2008/11/01(土) 16:44:27 ] [1] 授業単元:プログラムC [2] 問題文(含コード&リンク): gnuplotを呼び出し、 y=sin(x**2)のグラフを描くプログラム [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC2005 [3.3] 言語:C [4] 期限: 11/5 よろしくお願いします。
49 名前:48 [2008/11/01(土) 16:59:46 ] 自己解決しました。
50 名前:48 mailto:sage [2008/11/01(土) 17:01:44 ] 止めてください どなたかお願いします
51 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 17:09:25 ] 奇数と偶数の和を求めます。関数を使わなかったら答えは出たのですが・・・。 どこが変なのか、お願いします。 #include<stdio.h> void calc(int x[],int num) { int kisu=0,gusu=0; int i; for(i=0;i<num;i++);{ if(x[i]%2==1) kisu+=x[i]; else gusu+=x[i]; } printf("奇数%d\n",kisu); printf("偶数%d\n",gusu); } int main(void) { int hai[10]={1,2,3,4,5,6,7,8,9,10}; //偶数30 奇数25 calc(hai,10); return 0; }
52 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 17:13:31 ] ((x[i]%2)==1)
53 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 17:15:03 ] for(i=0;i<num;i++);{ for(i=0;i<num;i++){
54 名前:51 mailto:sage [2008/11/01(土) 17:18:40 ] これは恥ずかしい・・・。ありがとうごさいます!
55 名前:デフォルトの名無しさん [2008/11/01(土) 19:00:21 ] 【質問テンプレ】 [1] 授業単元:計算機プログラミングII 「ポインタと文字列」 [2] 問題文(含コード&リンク):課題1 2つの任意の長さの文字列をポインタ変数pxとpyを使って入力し, pxとpyの文字列を結合した文字列を他のポインタ変数に記憶し,その 結果を出力するプログラムを作成せよ.ただし,ヘッダファイル string.hで定義されている関数およびsprintfを使用してはいけない. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年11月6日10:30まで [5] その他の制限:ポインタの基礎を習い始めたところだと思います。 配列や文字列、for文、if文、関数ぐらいは簡単に習っています。
56 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 19:16:55 ] >>55 #include <stdio.h> #include <stdlib.h> int string_length(char *s) { int i = 0; while(*s++) i++; return i; } int main(int argc, char *argv[]) { char *px = argv[1]; char *py = argv[2]; int len_x = string_length(px); int len_y = string_length(py); int len = len_x + len_y; char *pz = malloc(len + 1); memcpy(pz, px, len_x); memcpy(pz + len_x, py, len_y); pz[len] = '\0'; puts(pz); free(pz); return 0; }
57 名前:お願いします [2008/11/01(土) 20:32:50 ] [1] 授業単元: アルゴリズムデータ構造2 [2] 問題文(含コード&リンク): 課題 (乱数とシミュレーション、分布に従った乱数) 設問1 0から100までの一様乱数を1000回発生させ、 その頻度分布を求めよ。 設問2 いわゆる成績(偏差値)の分布の例として平均 50、標準偏差10の正規分布乱数を1000回発生させ、その頻度分布を求めよ。 なお、頻度分布は次の10種類とする。 0点から10点まで、10点から20点まで、30点から40点まで、 50点から60点まで、70点から80点まで、80点から90点まで、 90点から100点まで、 設問3、設問1で求めたデータの平均と標準偏差を求めよ。 設問4、設問2で求めたデータの平均と標準偏差を求めよ。 設問5、設問1および設問2の頻度分布をヒストグラムとして表として 見やすく作成せよ。 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: すいません、コマンドプロンプトとしか・・ [3.3] 言語: (C言語) [4] 期限: 11月3日までで お願いします [5] その他の制限: (できるとこまででいいのでお願いします、制限は、乱数表記で) 問題は下に張ります
58 名前:お願いします [2008/11/01(土) 20:37:05 ] /* distran.c */ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> float nrand(void) { return(float)rand()/RAND_MAX; /* 0.0 --- 1.0に正規化された乱数 */} float urand(float a,float b) { /*区間[a,b]の一様乱数*/ return a+(b-a)*nrand();} float nmrand(float mu,float sigma) { /*正規分布乱数*/ int i; float a; for(a=0,i=0;i<12;i++) a+=nrand(); return mu+sigma*(a-6.0);} float nmrand_n(float mu,float sigma,int n) { /*観測数nをもつ正規分布乱数No.2*/ int i; float a; for(a=0,i=0;i<n;i++) a+=nrand(); return mu+sigma*sqrt(12.0/n)*(a-n/2.0);} void main(void) /*観測数nを変化させたときの正規分布の乱数の分布の推移*/ { int i,j,k,f[10]; float mu=5.0,sigma=1.0; srand(time(NULL)); for(k=1;k<=32;k*=2) { for(i=0;i<10;i++) f[i]=0; for(i=0;i<1000;i++) f[(int)(nmrand_n(mu,sigma,k))]++; for(i=0;i<10;i++) { printf("\n %2d=%6.3f ",i+1,f[i]/1000.0); for(j=0;j<f[i]/20;j++)printf("*");} printf("\n");}} >57 この文の書き換えでよろしくお願いします^^
59 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 22:34:10 ] >>57 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7909.c 1と3のみ。 > 頻度分布は次の10種類とする。 分からんので0〜9、10〜19、20〜29・・・区切りで。 発生させた乱数と、0〜100までそれぞれ出た回数を 最初に表示しているので、不要なら削除。
60 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 10:16:13 ] [1] 授業単元:プログラミング入門 [2] 問題文:ポインタと構造体を使って,各要素が文字列を保持するリスト構造を実装しなさい. ただし,保持している文字列がアルファベット順になるものとする.(例えば"America"→"Japan"→"UK"など) また,機能として,「保持している文字列を先頭から表示する」「新しい要素の挿入(挿入後に新しい要素もアルファベット順に並ぶ)」「指定した文字列を保持する要素の削除」を実装せよ. [3] 環境 [3.1] OS: Mac OS 10.5.5 [3.2] コンパイラ名とバージョン:分かりません [3.3] 言語: C [4] 期限: 11月3日まで [5] その他の制限:ポインタと構造体まで習いました。 お願いします。アルファベット順に並び替える、というのがどうすれば良いのか・・・
61 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 13:42:54 ] アルファベット順になる場所に挿入をすれば、結果的にソートされた状態になる。 挿入するデータと要素のデータを先頭から順番に比較していき、 挿入するデータの方が小さくなるような要素の前に、新しく要素を追加すればよい。 挿入するデータよりも大きいデータが無かったら末尾に追加。
62 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 14:01:17 ] >>60 空気を読まず、Windowsで作ったプログラムを登校してみる kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7912.txt [OS]Win Vista [コンパイラ]gcc 3.4.2(Mingw) 役に立たなかったらごめんなさい
63 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 16:59:16 ] [1] 授業単元: 信号処理 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7914.txt の問題の続き @ 前回完成させたのプログラム以下のように変更させなさい。 プログラム→kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7915.c 変更箇所 data[cnt] < ave以下のとき 関数powを使って、分散の計算をして標準偏差を求めるように変更させなさい。 ※補足 出力したファイルはこのような感じになっていること peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・ [38]3.4255342 [72]3.214283 [98]2.434924390・・・・ ・ ・ ・ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年11月4日午前8時まで [5] その他の制限: 特になし 何回やっても出力がうまくいきません。 それとdata.txtはDLするときDLKeyが必要になりますが お手数かけて申し訳ありません。 よろしくお願いします。
64 名前:help me [2008/11/02(日) 17:44:54 ] 授業単元:C言語 問題文(含コード&リンク):1から10までの任意の整数値を複数個(20〜30個)程度入力し、 入力した数値がそれぞれ何個ずつだったかを表示するプログラムを作成せよ。 ただし、入力は0を入力しない限り永遠に続くものとする。 なんか*を数字の横に出力 するみたいに表示するようです。 OS: (Linux) 言語:C 期限: ([2008年11月5日23:59まで] [5] その他の制限: あまりないようです。 なんか授業が難しくてついていけません。助けてください。
65 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 18:22:27 ] #include <stdio.h> int main() { char buf[1024]; int i,j, count[11] = {0}; while(fgets(buf, sizeof(buf), stdin)){ int n = atoi(buf); if(n == 0) break; if(n < 1 || n > 10) continue; count[n]++; } for(i=1; i<=10; i++){ printf("%02d ", i); for(j=0; j<count[i]; j++) putchar('*'); putchar('\n'); } return 0; }
66 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 20:29:49 ] >>63 問題文が意味不明すぎて答えが出ない。この際、仕様に間違いがあるのはスルー。 1.とりあえず、出力は、ソースから想像すると、 ・縦に全部ならべる(最大1024個)。横は1列。 ・各行は、入力データ(data[i])がave未満の時だけ出力する ・出力の各行は、[i]に続いて、data[i]の標準偏差 が1セットで、これをファイル終端まで繰り返すで、OK? +出力を横に並べるなら、横1列に並んでいる出力を、横方向にいくつか並べたいのだと推測されるが、いくつ並べるかが不明。 2.十分なメモリを確保のところ 読込先が2次元の配列になっているが、ソースは1次元。−> 2次元のほうはスルーでOK? +ファイル丸ごとメモリに展開する(らしい)仕様は、スルーでOK? それとも、配列サイズを最初に固定で取らずに何かしようとしてる? (の前に、入力データの範囲が規定されてないので、配列すら確保できない仕様だが・・・) mallocでメモリを確保したい、までは読めた。ただ、何に使うメモリを確保したいのかが書かれていないので、追記が必要です。 3.5行209921列のデータなら、1024で割り切れないのは明らかだが、 最後の1024個に満たないデータは、他と同じ処理でよい? データ自体も、データの個数が2で割り切れない+209920行しかないのだが・・ 行と列が違うのは、華麗にスルーできなかった。残念。 データ自体の不良でなければ、ここの処理の改造も必要です。 頭の中を整理するために書いたが、ここまで来て、やっと前回の@の部分の意味が分かった ・平均値は計算するだけ。ファイルには出力はしない。 ・データが(平均値+5*ρ)以上の場合だけ、計算した最大値をファイルに出力する ->元の問題文だと、どうみても、全データの最大値と変わらなかった気が・・ って、こんな事書いてる間に、プログラム何本か書けるんだが。。
67 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 20:58:47 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7918.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:11月4日 [5] その他の制限:特になし 関数内でのポインタの使い方がさっぱりです、お願いします
68 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 21:03:05 ] mul(&n1, &n2); void mul(int *x,int *y){ int temp; temp = *x; *x = *x * *y; *y = temp/*y; }
69 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 21:03:29 ] >>67 #include<stdio.h> void mul(int *x,int *y); void main(){ int n1=10; int n2=5; printf("変数n1の値は%dです。\n",n1); printf("変数n2の値は%dです。\n",n2); printf("変数n1と変数n2の積をn1に、商をn2に入れます。\n"); mul(&n1,&n2); printf("変数n1の値は%dです。\n",n1); printf("変数n2の値は%dです。\n",n2); } void mul(int *x,int *y){ int temp; temp = *x; *x *= *y; *y = temp/(*y); }
70 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 21:30:10 ] >>68 >>69 助かりました、ありがとうございます
71 名前:60 mailto:sage [2008/11/02(日) 23:33:35 ] >>61 ,62さん ありがとうございます。strcmpで比較して正負が変わる位置に挿入すれば良い、 というのは分かったので、テキストのサンプルをコピペしつつ自分で書いてみたのですが、実行するとBus errorになってしまいます。ちょっと見ていただけないでしょうか? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7919.txt InsertFruitsの中でprevを挿入したい要素の一つ前を指すポインタに、ptrを一つ後を指すポインタにして、そこからポインタをつなぎ変えて挿入をさせようとしてるのですが・・・ また 1.c:67: error: incompatible type for argument 1 of ‘InitList’ 1.c:69: error: incompatible type for argument 1 of ‘InsertFruits’ 1.c:70: error: incompatible type for argument 1 of ‘InsertFruits’ 1.c:71: error: incompatible type for argument 1 of ‘InsertFruits’ 1.c:74: error: incompatible type for argument 1 of ‘PrintList’ とも出てしまいます。これはどういうことなのでしょうか? 長くなってしまいましたが、よろしくお願いします・・・
72 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 23:46:15 ] >>71 newて変数名は使えないよ。 67からのエラーは引数の渡し方が間違ってるって事。もちっとポインタ渡しについて復習してみそ。
73 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:00:01 ] c だから使えるだろう
74 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:05:31 ] ぐはそうだっけ?すまん。。。
75 名前:デフォルトの名無しさん [2008/11/03(月) 00:09:20 ] [1] 授業単元:ループ [2] 問題文(含コード&リンク):y=x*xの座標を*でプロットするプログラムを作ります。 縦をy軸とみなし、範囲は-5<=x<=5とします。使うのはループとputcharで、計算していいのは、 x*xだけ(y=x*xを変形してはいけない)です。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:11月3日 [5] その他の制限:使うのはループとputchar よろしくお願いします。
76 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:27:23 ] >>71 ポインタが欲しいところに中身を渡してる。 くだものよりも、67行目〜74行目の*が、いらない子。 あ、くだものは一覧だったw といっても、InitList()に渡す前に、listの初期化必要でない? どこも指してないのに、そこのアドレスを使って何かを入れようとしても、 だめだと思います。 あ、配列の使い方だ。これを覚えようw
77 名前:60=71 mailto:sage [2008/11/03(月) 00:44:50 ] すみません、main関数の中身が間違ってました。 int main(void) { List list; InitList(&list); InsertFruits(&list, "orange"); InsertFruits(&list, "grape"); InsertFruits(&list, "apple"); puts("くだものいちらん"); PrintList(&list); return(0); } こうでした。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7920.txt エラーは出なくなったのですが、Bus errorはやはり出ます。 InsertFruitsの中身がおかしいのだと思うのですが、どなたか助言をお願いします。。
78 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:52:12 ] >>75 #include <stdio.h> int main(void){ int x,y; for(y=25;y>=0;y--){ for(x=-5;x<=5;x++){ if(y==(x*x)) {putchar('*');} else {putchar(' ');} } putchar('\n'); } return 0; } x,yともにintだけどこれでいーの?
79 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:05:20 ] >>77 callocのあたりじゃないかと予言をして俺は寝る。限界だ
80 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:08:55 ] >>77 InitList()で、list->headまたはlist->tailのnextメンバをNULLにしておくなどあるべきだと思う。 InsertFruits()のFruits型へのポインタ変数newが明らかに無効なポインタだと思う。 while(strcmp()) {}で、ptr = ptr->nextとかあるが、ptrが例えばNULLのときどうするのか。 List型のtailメンバは使わないのか。
81 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:13:20 ] >>77 InsertFruits()でataraにallocしてないのでは? Fruits *atara; atara = (Fruits*)calloc( 1, sizeof(Fruits) );
82 名前:デフォルトの名無しさん [2008/11/03(月) 01:27:34 ] <<78 ちなみにifを使わないとしたら、どうなるでしょうか。
83 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:34:45 ] >>82 三項演算子使うぐらいしか思いつかん if(y==(x*x)) {putchar('*');} else {putchar(' ');} のとこを y==(x*x) ? putchar('*') : putchar(' '); にするとか。意味が感じられんが つーかなんでそんな偏屈じみた制約がついてるんだ
84 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:52:33 ] ふふふ、switchがあるぜよ?
85 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:55:04 ] >>77 さん kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7921.txt 試してみてください。 修正箇所はソースにコメントで記載してあります。
86 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:10:56 ] >>85 です コメント忘れましたが、PrintList()のwhileの中身の順番を入れ替えてました
87 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:12:34 ] >>77 =76 でおくれた! とりあえず途中まで書いた。直してるうちに、原型がなくなったとかは内緒。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7922.txt 登録、表示まで実装。 ごめん、76で配列っていうのは、ただの勘違いw 制約条件のリスト構造忘れてたorz
88 名前:76=87=88 mailto:sage [2008/11/03(月) 02:25:58 ] >>77 もう一個。元のソースをいじるなら。 メモリの実体を確保せずにポインタを渡しても・・・ が、どこかでおきています。 【対策する所】 List list; //ここに何か。 InitList(&list); 【原因】、 /*headとtail初期化*/ void InitList (List *list) { list->head = list->tail = AllocFruits(); } で、listがどこもポイントしていないのに、 list->head、list->tailに値を代入していること。
89 名前:76=87=88=89 mailto:sage [2008/11/03(月) 02:29:16 ] うあ、いかん。読み違えた。 おとといから寝てないの、ひびいとるな・・・ 88は忘れて下さいorz
90 名前:デフォルトの名無しさん [2008/11/03(月) 03:27:32 ] [1] 授業単元:グラフの利用、データの可視化 [2] 問題文: @: 電気双極子の作る静電ポテンシャルは φ=(q/4πε){1/(x^2+y^2+(z-d/2)^2)^(1/2)-1/(x^2+y^2+(z+d/2)^2)^(1/2)} で与えられる。ここで、正負の電荷は、(0,0,5),(0,0,-5)に存在するとしたとき、つまりd=10のときのポテンシャルの概形を描け。ただし、q/4πε=1とせよ。 また、y=0として、x-z平面におけるポテンシャルのみを書けば良い。 図示する範囲は、xは-20と20の間、zは-40と40の間とし、その範囲を各々20等分、40等分して、21×41のデータとして入力せよ。 A: @と同様に+qの電荷が(0,0,5)、(0,0,-5)に、-2qの電荷が(0,0,0)に存在するとしたときのポテンシャルの概形を描け。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年11月4日16:00まで [5] その他の制限: 問題@だけでもいいのでお願いします。
91 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 03:43:36 ] gccでグラフ書くってgnuplotとかかな
92 名前:87=92 mailto:sage [2008/11/03(月) 04:23:40 ] >>77 削除部分も実装。参考程度に。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7923.txt >>91 なにかちがうきがする・・
93 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 04:33:39 ] グラフィカルにプッロトするのもあるけど、単に * で表すとか。
94 名前:=92 mailto:sage [2008/11/03(月) 05:27:07 ] >>90 環境の情報が足りないかと。 授業単元からして、、グラフの作成ソフトが別にありそう。 あとX-Windowは立ち上がってる? それと、使うライブラリ、何か指定は? これはどうみても、Cというより物理の問題になってる気がw 91の補足。 gnuplotを使うなら、Cから標準出力に、gnuplotのコマンドを吐いて、 パイプでつなぐ。 = Cの宿題ではなさそう とりあえず時間がないので、早めに情報出したほうが良いと思われ。 もう一個。 Cで書く前に、グラフ作成ソフトである程度結果をつかんでから始めたほうが早いです。
95 名前:=92 mailto:sage [2008/11/03(月) 05:36:14 ] >>90 う" 問題よく見たら、ただのトラップかw この式、グラフを書く時はほとんど定数扱いで、 変数はφとxとzだけ・・・ 2次元の平面(x-z)で、21x41のマスをつくって、そこの値を計算。 って、表計算と同じw ただ、マス目の中のデータ(数値)を可視化する要素が足りない。 とりあえずExcelでも立ち上げて、各マス目のデータ計算してくるか。。 問題はExcelが手元にない事だが。
96 名前: ◆NiyDyBDWQM mailto:sage [2008/11/03(月) 05:46:19 ] [1] 授業単元:プログラミングC [2] 問題文(含コード&リンク): <関数 配列渡し> 以下のようなプログラムを作成しなさい. 2つの整数配列(要素数は任意)、配列Aと配列Bを受け取り,配列AとBの要素の値 の平均値(実数)をそれぞれ計算し、平均値が大きい方の配列の内容(整数)と平均 値(小数点第1位まで)を表示する関数を作る。また、この関数を使って以下の2つ の配列の平均値を比較するプログラム. 配列A{1,2,3,4,5} 配列B{2,3,4,5,6} ※関数に配列を渡す時は、関数内では配列の大きさがわからないので、以下の例 のように配列と配列サイズを渡す必要がある。 void func(int vector_a[], int vector_a_size); int vec[3] = {1,2,3}; func(vec, 3); // func(vec, sizeof(vec)/sizeof(int)); [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名 Cygwin [3.3] 言語:C [4] 期限: 11月3日 10時まで [5] その他の制限: まだまだ序の口のほうです。 期限まで時間があまり無いですが、どうか宜しくお願いします。
97 名前:=92 mailto:sage [2008/11/03(月) 06:23:45 ] >>96 期限なさすぎw というか、この時間に誰か起きてることを期待しちゃいけません。 ま、一瞬で終わる問題だが・・
98 名前:=92 mailto:sage [2008/11/03(月) 06:49:10 ] >>96 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7924.txt 釣りかと思ったけど、アップしとく。 ・doubleはどうせあふれないと想定されてるっぽいので、オーバーフローのチェック省略。 必要なら改造しましょう。まだ時間は十分あるw
99 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 07:01:46 ] >>98 ありがとうございました。 非常に助かりました。
100 名前: ◆7777.bQf6c mailto:sage [2008/11/03(月) 08:29:18 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7925.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual stdio 2005 [3.3] 言語: C [4] 期限: 11/3 24:00 [5] その他の制限:2次元配列とfor文を使ったものでお願いします