1 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 06:27:59 ] あなたが解けない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++の宿題片付けます 136代目 pc12.2ch.net/test/read.cgi/tech/1274827528/
90 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 20:24:13 ] ?1から10までの積を計算するプログラムを書け。このとき,whileループを用いて、 画面に 1*2*3*・・・・*10 = という風に表示されるようにすること。 期限は6/22までです。お願いします。
91 名前:デフォルトの名無しさん [2010/06/20(日) 20:24:33 ] 与えられた零以上の実数(a,b,c,d)と正の実数(e,f)に対して つぎのロンバーグ表と積分値を求めるプログラムを作成せよ (分割数:n=2^k≧16,推定回数:m≧3) I=∫ 1/(a*x^3+b*x^2+c*x+d)dx (e≦x≦f) ただし、キーボードから(a,b,c,d,e,f)を入力すれば 上記の定積分のロンバーグ表の値と積分値が画面表示 されるようなプログラムを作ること。 この問題を解ける方教えていただけませんか?
92 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 20:35:12 ] >>90 #include <stdio.h> int main(void) { int i=10,sum=1; while(i--)printf(i?"%d*":"%d=%d\n",i+1,sum*=(i+1)); return 0; }
93 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 20:41:29 ] >>1 >>1 大事なことなので2回言いました。最近守らないやつが多すぎる。
94 名前:デフォルトの名無しさん mailto:sage [2010/06/20(日) 20:44:42 ] >>78 char src[32], dst[32]; int *ptr_i,*ptr; double *ptr_d; int i; // src[i]配列にデータを格納 for(i=0; i<32; i++){ src[i] = i; } // dst[i]配列へのコピー for(i=0; i<32; i++){ dst[i] = src[i]; } // ptr_cにsrcの先頭アドレスをコピー ptr_d = (double *)src; // ptrを使用してsrc[i]のデータを内容を出力する。 for(i=0; i<4; i++){ printf("ptc_d:%#6x) = 0.%x\n", ptr_d, *ptr_d); ptr_i = (int *)ptr_d; printf(" :%#6x) = 0.%x\n", (ptr_i+1), *(ptr_i+1)); ptr_d++; } 図2 ptr_d:0x22ccc8) = 0.b0a0306 は>>79 のソース内容から外れるので考慮していない
95 名前:91 [2010/06/20(日) 20:58:11 ] [1] 授業単元:数値計算法 [2] 問題文(含コード&リンク): 与えられた零以上の実数(a,b,c,d)と正の実数(e,f)に対して つぎのロンバーグ表と積分値を求めるプログラムを作成せよ (分割数:n=2^k≧16,推定回数:m≧3) I=∫ 1/(a*x^3+b*x^2+c*x+d)dx (e≦x≦f) ただし、キーボードから(a,b,c,d,e,f)を入力すれば 上記の定積分のロンバーグ表の値と積分値が画面表示 されるようなプログラムを作ること。 [3] 環境 [3.1] OS:vista [4] 期限: 無期限
96 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 05:37:05 ] >>89 適当に選ぶと正解じゃない場合は常に行き詰まる模様
97 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 07:33:49 ] エロゲの選択肢よりシビアだな
98 名前:023 mailto:sage [2010/06/21(月) 09:02:14 ] decrypt 窓が、文字の無いところを表示するから、常に横スクロールが必要。
99 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 13:31:35 ] >>95 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10726.txt
100 名前:87 の修正を修正 mailto:sage [2010/06/21(月) 16:05:27 ] int ch, ch2, ch3; bool slash = false; /****/ try{ while(1){ ch = skip(); if(ch == EOF) break; plane_put(ch); scroll(IDC_EDIT3); // add 2010.6.21 他のscroll()呼び出しは削除 kouhosu = 0; bslash = 0; ch2 = fgetc(fp1); if(!kigou(ch2) && (ch2 == ch + 1)){ bslash=1;} ungetc(ch2, fp1); if(slash) { // add 2010.6.20 ch = ch3; slash = false; }else{ ch = fukugou(ch);} dec_put(ch); fputc(ch, fp3); if(ch=='/'){ kouhosu = 0; // add 2010.6.10 候補を消す ch3 = fukugou(ch2 - 1); angou(ch3); slash = true; // add 2010.6.20 }else{ deb("angou=%c\n",ch); angou(ch); } }}
101 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:08:25 ] そろそろ別にスレでも作ってそっち行ってくんないかな
102 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:17:56 ] >>99 間違ってるぞw
103 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:33:42 ] >>102 本からの丸写しなんだが。間違ってる点があるなら指摘よろしく
104 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:37:28 ] 本当に丸写しなら、出版社に言って謝礼をもらうべきw どうせ問題にあわせていじったところでミスってるだけだろうけど。
105 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:38:51 ] >>104 嫌味なら誰にでも言える どこがどう間違っているのか具体的に指摘よろしく それかお前が正しいプログラムを書いて示せ
106 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:40:47 ] 間違いの存在教えてもらっただけでも感謝して、自分で探せよw
107 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:41:28 ] まあどこが間違っているか示せないだろうけどな >>99 は何度も検証したし結果も合ってる ただケチを付けてみたいだけだろう>>102 は
108 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:45:23 ] そんな検証の仕方じゃ話になんないなw
109 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:45:57 ] 以降放置勝手に言ってろ
110 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:46:36 ] >h = b - a; これはなんですか?w
111 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:49:57 ] >>110 それで合ってんだよ
112 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:52:32 ] え?w
113 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:53:29 ] >>20 の問題だけでスレ立てるのもアレなのでこちらでどうぞ スレ立てるまでもない質問はここで 106匹目 pc12.2ch.net/test/read.cgi/tech/1276215571/
114 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:53:29 ] wてなに
115 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:53:30 ] どうせ台形公式とかルンゲ・クッタ法のhと混同してるんだろうこの馬鹿は ロンバーグ積分も知らない馬鹿は口出しすんな
116 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 16:58:01 ] ロンバーグ積分は台形公式利用するものだし、hの意味は同じなんだがw aとbは係数として関数に渡すもので、始点・終点じゃない h = f - e; が正しい。
117 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 17:05:21 ] >>99 のやり方はミス抜かしてもロンバーグ積分としては微妙だけどな。 毎回台形公式で求めなおしてるから計算回数無駄に多いし。
118 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 17:06:54 ] >>116 確かにその通りだスマン >>117 だから文句タラタラ言うなら自分でプログラムを書いて示せっつーの
119 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 17:09:36 ] スマンですますなよ、この低脳がw 教えてくださいって土下座しろよこのマヌケ
120 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 17:11:47 ] >>110 で指摘されてもなお>>111 と言える心の強さは素晴らしい
121 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 17:14:36 ] >>113 まともに機能してるスレに関係ないもの誘導すんなよ。 過疎ってるスレがいくらでもあまってるんだから、そっちにしようぜ。 例えば C言語を勉強しあおう pc12.2ch.net/test/read.cgi/tech/1190599975/ とかさ
122 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 17:15:12 ] そこまで言わなくてもいいと思うが、丸写しした本を教えてほしい。 それから、 > 何度も検証したし結果も合ってる というところも詳しく。
123 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 17:30:15 ] 台形公式で刻み数を倍にするときは前回の計算結果を利用して、 関数の計算回数を減らすのが普通。 減らすって言っても、前回の計算がなかったとして直接計算したときと同じなんだけど。 少なくとも、前回の計算分丸々計算しなおすよりはマシになる。
124 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:01:03 ] >>123 だから言葉で言わずにプログラムで書けっつーの ここはプログラム板だ
125 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:03:59 ] ググれカス
126 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:05:22 ] >>124 先に>>122 の質問に答えたら?
127 名前:デフォルトの名無しさん mailto:sage [2010/06/21(月) 18:25:50 ] >>90 #include <stdio.h> int main(void) { int i = 1, sum = 1; while (i < 10) { sum *= i; printf("%d*", i); i++; } printf("%d = %d\n", i, sum *= i); return 0; }
128 名前:113 mailto:sage [2010/06/21(月) 20:05:45 ] >>121 了解した >>20 の問題に関しては是非こちらへ C言語を勉強しあおう pc12.2ch.net/test/read.cgi/tech/1190599975/168-
129 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 00:46:57 ] wってなに?
130 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 01:03:40 ] waraiのw
131 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 04:04:39 ] sumって変数名に乗算の結果を入れるのは気持ち悪い
132 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 10:09:40 ] product
133 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 11:05:37 ] [1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク): [1] 授業単元: char buf[80]; int main(int ac, char ** av) { int i; buf[0] = '\0'; for(i = 1; i < ac; i++){ printf("%3d \"%s\"\n", strlen(av[i]), av[i]); strcat(buf, av[i]); } printf("%3d \"%s\"\n", strlen(buf), buf); これを入力した文字列を逆順に表示できるように書き換えよ [3] 環境 [3.1] Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 本日三時 [5] その他の制限:なし おねがいします
134 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 11:39:40 ] for(i = strlen(buf) - 1; i >= 0; i--) printf("%c", buf[i]);
135 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 11:49:15 ] 配列a[n],配列b[n] と配列の大きさn を渡すと配列の 要素を入れ換えるプログラムをポインタを用いて作成せよ. 例えば,a[3]={1,2,3},b[3]={101,102,103}とすると き,結果として,a[3]={101,102,103},b[3]={1,2,3}と なるようにせよ. よろしくお願いします!
136 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 11:50:29 ] void f(int *a, int *b, int size) { while(size--) { int temp = *a; *a++ = *b; *b ++ = temp; } }
137 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 12:06:39 ] >>136 早速の回答感謝します ありがとうございました!
138 名前:デフォルトの名無しさん [2010/06/22(火) 14:55:24 ] 1] 授業単元:システムコール [2] 問題文(含コード&リンク): コマンドライン引数で指定された文字列のいずれかと一致する名前の環境変数についてのみ、 #include <stdio.h> #include <stdlib.h> extern char **environ; main() { char **p; for (p = environ; *p != NULL; p ++) { printf("%s\n", *p);} return 0;} や #include <stdio.h> #include <stdlib.h> main(int argc, char *argv[], char *envp[]) { char **p; for (p = envp; *p != NULL; p ++) { printf("%s\n", *p);} return 0;} のように変数名と値を表示するプログラムを書け。 ただし、コマンドライン引数に重複があっても、対応する環境変数について複数回表示してはならない [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限:2010年5月24日12:59まで [5] その他の制限:特になし よろしくお願いします
139 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 15:05:45 ] 期限が過ぎているのでスキップされました
140 名前:デフォルトの名無しさん [2010/06/22(火) 15:17:58 ] >>138 すいません!期限6/24です
141 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 17:56:42 ] ワイルドカードのマッチを、正規表現使って行うにはどう変換すればいいですか。 . や * や ? で機能が違うのですが。
142 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:01:55 ] ワイルドカード → 正規表現 ? → . * → .*
143 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 18:05:12 ] サンクス。あと正規表現の特殊文字に\つけとけばいいですかね。
144 名前:デフォルトの名無しさん [2010/06/22(火) 18:47:03 ] [1] 授業単元:C・プログラミング [2] 問題文(含コード&リンク): 深さ優先探索をリスト表現で表すプログラムを作成せよ。 制限は特にないです。 [3] 環境 [3.1] Windows 7 [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2010年6月25日迄 よろしくお願いします。
145 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:41:07 ] >.144 めっちゃ抽象的だな…
146 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 19:44:08 ] まずは要件定義から始めること。 という実践的な問題なんだろ。
147 名前:デフォルトの名無しさん [2010/06/22(火) 20:09:28 ] >>138 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char *argv[], char *envp[]) { char **p, **v; int lth; for (p = envp; *p != NULL; p++) { lth = strchr(*p, '=') - *p; for (v = argv; *v != NULL; v++) { if (!strncmp(*p, *v, lth)) { printf("%s\n", *p); *p = '\0'; break; } } } return 0; }
148 名前:デフォルトの名無しさん [2010/06/22(火) 20:30:24 ] [1] 応用プログラミング [2] 問題文(含コード&リンク):構造体の基礎 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10733.txt [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Microsoft Visualstadio 2008 [3.3] 言語:C [4] 期限:24日まで [5] その他の制限:プログラミングやってまだ半年しか経ってません。 構造体の授業の宿題です。 どうか宜しくお願いします。
149 名前: ◆QZaw55cn4c mailto:sage [2010/06/22(火) 20:43:07 ] >>148 codepad.org/nXIJMHE8
150 名前:デフォルトの名無しさん [2010/06/22(火) 22:25:31 ] [1] 授業単元:C++プログラミング [2] 問題文(含コード&リンク):三目並べを作成せよ。ポインタとクラスを使用。 [3] 環境 [3.1] OS:WinodwsVista [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition [3.3] 言語:C++ [4] 期限:6/23(水)8時半まで [5] その他の制限:C++触り始めた所です。どうかお願いします。
151 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 22:27:42 ] >>150 GUIでいいのか
152 名前:デフォルトの名無しさん [2010/06/22(火) 22:30:13 ] >>151 言い忘れてた。CUIでお願いします。 こんな感じにしてほしいです。 1 2 3 1 2 3 ○の横座標を入力してください: ○の縦座標を入力してください:
153 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:04:32 ] >>152 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10734.txt
154 名前:デフォルトの名無しさん [2010/06/22(火) 23:16:46 ] >>153 出来ればクラスとメソッドをしっかりと分けてほしいです。 クラスの中にメソッドが入ってる感じなのでこう分けてくれると助かります。 class game{ public: void init(); bool Player(int x, int y); }; void Game::init() { ・・・ } 他のメソッドもこんな感じに処理毎に分けてくれると助かります。あと○に座標だけでなく ×の座標も入力できるようにしてほしいです。
155 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:18:02 ] www
156 名前:デフォルトの名無しさん [2010/06/22(火) 23:18:30 ] >>154 ミス。「○に座標」じゃなくて「○の座標」でした。 入力した座標をポインタで受け取る感じにしてほしいです。 申し訳ありません。
157 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:31:38 ] 座標をポインタで受け取りたいってのがよくわからんが。。 ってかドローゲーム忘れてたw
158 名前:デフォルトの名無しさん [2010/06/22(火) 23:39:19 ] >>157 自分の中のイメージとしてg.player(&width, &height)って感じでメソッド呼び出して 座標データを取得したいのですが。。。。。 すいません。なかなか上手く説明できないです。初心者なので。。。。。。
159 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:42:24 ] クラスとメソッドを分けてほしいって表現がすごいけど、その例を書けるんならそんぐらい直せw
160 名前:デフォルトの名無しさん [2010/06/22(火) 23:45:28 ] >>159 クラスとメソッド分けるのちょっとやってみます。 挫折したらすみません。あと途中で解説欲しくなるかもしれないです。
161 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:48:40 ] >>158 こんなんでどう? get_posってヤツで座標を取るんで、これなら意味分かるわ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10735.txt
162 名前:デフォルトの名無しさん [2010/06/22(火) 23:52:37 ] >>161 おおおおおおおおおおお。けっこうスマートになってるwwww 助かります。ちょっとソースコード読んでみます。解説欲しくなったら言うので。
163 名前:デフォルトの名無しさん mailto:sage [2010/06/22(火) 23:54:19 ] どんだけ上から言ってんだよw ってかもうねる。
164 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 00:01:03 ] >>163 乙。 釣りなのかと思っちゃうよね。
165 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 00:15:45 ] インライン関数は使わない流儀
166 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 03:27:12 ] [1] 授業単元:プログラミング応用 ;構造体 [2] 問題文(含コード&リンク): 以下コピペ 表示例のように,名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を 表示するプログラムを作成しなさい. プログラムでは,名前,性別,身長,体重,腹囲をまとめて 個人データとして表すための構造体を定義して利用すること. 注意 " 体重はkg, 身長,腹囲はcmで入力する. " 性別は 1 で男性,2で女性を表す. " BMI値 = 体重(kg) / 身長(m)2 " 男性は腹囲85cm以上,女性は腹囲90cm以上でメタボリック症候群の疑い がある 表示例 データ1を入力してください 名前: Hanako 性別: 2 身長: 156.4 体重: 65.3 腹囲: 93.4 名前: Hanako, 性別: 女, 身長: 156.4, 体重: 65.3, 腹囲: 93.4, BMI: 26.7, メタボリック症候群の疑いがあります コピペ終わり 本当はデータ3つです。改行制限で割愛 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (cc 3.4) [3.3] 言語: (どちらでも可) [4] 期限: (6月23日15時まで) [5] その他の制限: (構造体でデータを個々で格納してお願いします。) よろしくお願いします。
167 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 10:51:24 ] >>>166 codepad.org/z3vbEcex
168 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 11:20:14 ] >>166 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10736.c
169 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 12:33:36 ] >>167 >>168 ありがとうございました。参考にさせていただきます。
170 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 15:18:36 ] 【質問テンプレ】 [1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク): 1.関数sqrtを使って1〜10までの二乗根の和を求めなさい。 2.16進数ABC.DEを10進数にしなさい。 [3] 環境 [3.1] OS: Windows XP [ [3.3] 言語: C言語 [4] 期限: 6月24日15時まで よろしくお願いします。
171 名前:デフォルトの名無しさん [2010/06/23(水) 15:33:07 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10737.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:6月28日まで [5] その他の制限:なし よろしくお願いします
172 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 15:55:30 ] 【質問テンプレ】 [1] 授業単元: プログラミングB [2] 問題文(含コード&リンク):実行したい処理を選ぶことが可能なプログラムを作りなさい。このとき、実 行できる処理は以下の三つとする。 処理1:複数の2択問題への回答に応じた結果を表示する。(例:職種選択、旅行先選び 処理2:文字コード一覧表を出力する。(文字コード32~126を一行に8文字ずつ) 処理3:本のページ数を入力し、その本を読み切るために必要な日数を表示 する。このとき、初日は10ページ、2日目は20ページ,,,と読むページ 数は増加するものとする。 以下の仕様で作成すること キーボードから入力された数に応じて、switch文で各処理に移動する。 処理1:if文を使って 処理2:for文を使って 処理3:while文またはdo・while文を使って。 [3] 環境 [3.1] OS: WindowsXP [3.3] 言語: C言語 [4] 期限: 6月25日まで よろしくお願いします。
173 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 16:03:04 ] >>171 (1)j-1 (2)printf(" ");
174 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 16:07:11 ] >>170 1. #include <stdio.h> #include <math.h> int main(void) { int i; double sum = 0; for(i = 1; i <= 10; i++) sum += sqrt(i); printf("%f\n", sum); return 0; }
175 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 16:45:32 ] >>170 2. kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10738.c
176 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 17:34:30 ] >>172 自己解決しました。
177 名前:デフォルトの名無しさん [2010/06/23(水) 21:05:54 ] >>149 ありがとうございました、参考にさせていただきました。 それにしてもわずか10分でするとは…
178 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:17:16 ] 質問させてください 当方、エントロピー値の計算するプログラムをperlで作成したのですが わけあってC++に書き直すことになりました しかし、C++にはハッシュ(連想配列)などは自分で作らなければならなく どうしてもうまく行きませんでした・・・ perlで作ったプログラムをここに張るのは良くない思うのですが どうかC++動くようにご教授お願いします
179 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:20:11 ] こちらがperlのプログラムです #! c:/perl/bin/perl open(FILE,"IPsource.txt"); #ファイル読み込み use strict; use warnings; use utf8; print "Content-type: text/html\n\n"; my $count; my $t; my $key; my $ref_freq; my %ref_freq; my @x; my $v; $count = 0; #全体IPカウント while ($t = <FILE>){ #IPファイル展開 #IP集計 if($t) { $count += 1; #全体IPカウント ++$ref_freq{$t}; } }
180 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:21:17 ] @x = values %ref_freq; print"@x \n"; close(IN); #my @x= map $_ ,$key; #エントロピー計算 my $y=$count; my $num; my @pi = map $_ / $y, @x; my $i; print"@pi \n"; #テスト用プリント #print"@x \n"; for($i=0;$i<=$#pi;$i++){ $num += -($pi[$i]*log($pi[$i]) / log(2)); } #print"@pi\n\n"; print "-Σpi*log2(pi) = $num \n";
181 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:27:16 ] std::hash_map, std::mapはC++にもある
182 名前:178 mailto:sage [2010/06/23(水) 21:32:30 ] プログラムの動きですが >>179 でtxtに入れられたIPアドレスの種類と数をカウントします ここでハッシュ(連想配列)を用いています ここを出力するとこのようになります IP 数 202.・・・ 20 そして>>180 でエントロピー計算を行います エントロピーの計算方法はlog(対数)とΣ(for文)で my $y=$count; my $num; my @pi = map $_ / $y, @x; この部分に先ほどカウントしたIPが入り for($i=0;$i<=$#pi;$i++){ ←カウントしたIP分だけループさせ $num += -($pi[$i]*log($pi[$i]) / log(2)); ←エントロピーの計算をします }
183 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:36:16 ] 文字列をキーとした連想配列はmapで代用できる。 もちろん、>>181 の言うようにhash_mapでもいい。(あれば)
184 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:39:16 ] std::tr1::unordered_map も忘れないでください。
185 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 21:55:08 ] >>178 元のコードにできるだけ合わせたつもり kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10740.cpp
186 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 22:17:25 ] CでなくC++でよかったな
187 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 22:18:45 ] 余計な言い訳せずにC++のコードくださいって言えばいいのにね。
188 名前:185 mailto:sage [2010/06/23(水) 22:54:11 ] >>185 の訂正 途中で @x 相当の変数使うの忘れてたw kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10741.cpp
189 名前:178 mailto:sage [2010/06/23(水) 23:11:42 ] >>181 、183、184 ご指摘ありがとうございます その範囲を調べてみます。 >>185 わざわざコードを作っていただき 本当にありがとうございます このコードを参考に勉強させていただきます。
190 名前:デフォルトの名無しさん [2010/06/24(木) 00:22:32 ] モンテカルロ法で√2の近似値を求めたいのですが、 ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・ どなたか教えてくださいませ