1 名前:デフォルトの名無しさん [2010/11/16(火) 22:14:58 ] あなたが解けない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++の宿題片付けます 142代目 hibari.2ch.net/test/read.cgi/tech/1288531658/
2 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 22:16:56 ] 【◆QZaw55cn4c 隔離】C/C++の問題を片付けます 1 : ◆QZaw55cn4c :2010/11/14(日) 15:15:49 あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
3 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 22:17:53 ] >>1 infoseekのロダは死んでいるので次のロダを使うと便利です 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi codepad.org/ ←遅い時間は重い事があります ideone.com/
4 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 22:28:06 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 問題1 キーボードから入力した複数個の整数の、加算と積算の計算結果を表示するプログラムを作成しなさい。
ただし、このプログラムは、連続して実行される前半と後半の2部構成で作成してください。 0が入力された時点で、入力処理を終了し結果の表示を行ってください。 すなわち、前半の処理では、キーボードから入力した数値の加算合計の表示を、0が入力されるまで繰返し、後半の処理ではキーボードから入力した数値の積算値の表示を、0が入力されるまで繰返すプログラムを作成してください。 【条件】
前半の「和を求める」繰返しは while 文、後半の「積を求める」繰返しは do-while 文を使用して作成すること。 【実行例】
=加算処理=
値:6
値:8
値:12
値:0
合計は26です。
=積算処理=
値:2
値:6
値:3
値:3
値:0
積算値は108です。 問題2 繰返し処理を用いて、m ÷ nの計算をするプログラム(商を求める)を作成しなさい。
ただし、演算に割り算記号 / を使ってはいけません。また、mとnはキーボードから入力してください。 【ヒント】
・割り算をするとは、mからnを何回引くことができたか?を調べることと等価です 。元の数mが正の間、nを引くことができた回数が、割り算の商となります。 この回数を、 繰返し処理を使って数えさせてください。
・繰返し条件は、「mからnを引いた結果が正の値の間」繰り返し、商を1ずつ増やしていきます。 負の値になったら、繰返しを終了します。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:11月18日 [5] その他の制限: なし よろしくお願いします。
5 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 23:16:03 ] 1] 授業単元: 数値解析 [2] 問題文(含コード&リンク): ランダムに入力された3次元における100点の重心を求めよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC 2008 [3.3] 言語: C [4] 期限: 11月18日 [5] その他の制限: 構造体を使う よろしくお願いします。
6 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 01:02:43 ] [1] 授業単元:C言語基礎 [2] 問題文(含コード&リンク):www.dotup.org/uploda/www.dotup.org1254228.txt.html [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年11月17日12:00まで(一応20:00まででも可ですができれば12:00まで) [5] その他の制限:できればなるべく簡単な(高度ではない)書き方をしてもらえたらと思います。(できればなのであまり気にしないで良いです) 問題数が3問と少し多いのですがどうかお願いします
7 名前:デフォルトの名無しさん [2010/11/17(水) 02:15:33 ] [1] 授業単元:プログラミング [2] 問題文 ・キーボードから入力した整数値が3の倍数かどうかを表示するプログラム ・キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。 ただし、平均値を求める関数 float ave(int a,int b) を利用すること。 ・キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。 ただし、文字を大文字に変換する関数を作成し、それを利用すること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010/11/18までにお願いします [5] その他の制限:
8 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 02:21:46 ] >>6 codepad.org/twiOoHeS codepad.org/AwDSSo3p codepad.org/IukKlXXu
9 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 07:34:30 ] >>8 ありがとうございました!
10 名前:デフォルトの名無しさん [2010/11/17(水) 12:40:56 ] [1] 授業単元:情報通信 [2] 問題文(含コード&リンク): サーバープログラム(英文清書サーバーの作成) クライアントから送信された(大文字小文字が乱雑な)英文字文字列を次のように変換して送り返す。 分の先頭の文字:大文字 分の先頭以外の文字:小文字 アルファベット以外:変換しない 改行、スペース、タブにより単語の区切りとする。また、文末は改行コードではなく、ピリオド"."で判定する。 ポート番号は1202番 クライアントから接続されると、[Beautify Server Ready]を送信する。 "\end"または"\END"を送信すると、[Beautify Server Closed]を送信してコネクションを切断する。 このサーバーの目的(英文の清書)の範囲内で、高機能にすること(例えば単独の"I"を大文字にする、連続した空白文字を1つのスペースにする、など)を歓迎する。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11/19 [5] その他の制限: codepad.org/w4zd0J0t 上記のプログラムを参考に作成してもよいとのことです。 大文字や小文字のプログラムまではできましたが、その後がうまくできません。 よろしくお願いします。
11 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 12:55:22 ] >>10 INExp.hとできてるところまでのコード暮
12 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 13:55:24 ] >>10 質問 ・受信データに全角が混じる可能性は有るの? ・受信データの途中で 0x00 が出現する可能性は有るの? ・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの? ・"\END"も返信するの? ・space + tab + space の場合、space 1つに変換するの? ・1Byte 単位で read() かけても文句言われない?
13 名前:デフォルトの名無しさん [2010/11/17(水) 15:24:40 ] >>11 codepad.org/CHFnxR5p です。 >>12 ・受信データに全角が混じる可能性は有るの? 全角はないと思います。 ・受信データの途中で 0x00 が出現する可能性は有るの? ちょっとわからないです。ごめんなさい。 ・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの? ・"\END"も返信するの? "\END"+エンターキーで終了判定です。 "\END"は送信だけで大丈夫です。 ・space + tab + space の場合、space 1つに変換するの? 区切りが3つできると思います。 ・1Byte 単位で read() かけても文句言われない? ちょっとわからないです。ごめんなさい。
14 名前:デフォルトの名無しさん [2010/11/17(水) 16:47:17 ] 前スレが埋まってしまってたのでもう一度貼っておきます。 [1] 授業単元:自然言語処理 [2] 問題文(含コード&リンク): 曖昧性のないLR 表を利用して、ファイルに記述された「1 桁の数、+、*、(、)で構成される数式」を計算するプログラムを作成せよ。数式は1 行ず つファイルに記述されているとする。 問題文↓ ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/rep2.pdf [3] 環境 [3.1] OS: unix [3.2] コンパイラ名:gcc [3.3] 言語:C [4] 期限:12/3 [5] その他の制限: 資料 ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/nlp05.pdf の5〜15ページ。 またよろしければよろしくお願いします。 変数の役割や処理内容なども解説してくださると有り難いです。
15 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 17:27:22 ] >>13 『ちょっと判らない』とは質問の意味が判らないという意味かい? 『"\END" は送信だけで大丈夫』とは返信の必要は無いと言う事? 区切りが3つできると言う事はtabは文字扱いで良いんだね >>10 で提示されたソースコードは本当に動くの? これTCP/IPでしょ、setup_server() の戻り値は待ち受けソケットだと思うんだけどなぁ...
16 名前:デフォルトの名無しさん [2010/11/17(水) 17:32:24 ] >>15 そうです。ちょっと質問の意味がわからないです。すみません。 "\END"は送信するとサーバー側が[Beautify Server Closed]を送信してコネクションを切断する。 ので返信はいらないです。 >>10 のプログラム単体だと動かないかもです。
17 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 18:27:56 ] >>16 そらまぁサーバー単体では動かないわな サーバーが動いているときにクライアントが接続して初めて通信が開始されるんだからね まぁ動くとの前提で考えようか、バッファがグローバル変数だからマルチプロセスを考慮してないのは明らかだ 多分、setup_server() で待ち受けソケット作って→接続あったら→待ち受けソケットをクローズって流れなんだろうな 1対1の通信しか想定していないプログラムと考えるよ
18 名前:デフォルトの名無しさん [2010/11/17(水) 18:30:42 ] >>17 それでいいと思います。 ごめんなさい、学習不足で・・・。
19 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 18:49:45 ] yomi.mobi/read.cgi/pc11/pc11_tech_1225320579/584- 歴史は繰り返すだね
20 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 18:54:07 ] 大学の講義なんて毎年同じなのが当たり前だし
21 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:02:42 ] >>20 解答があればだけど、その時の解答どっかにか落ちてないのかね
22 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:12:47 ] >>4 誰かお願いします
23 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:32:10 ] >>22 #include <stdio.h> int main(void) { int input,kasan=0,seki=1; puts("=加算処理="); while(1) { printf("値:"); scanf("%d", &input); kasan += input; if(input == 0){ printf("合計は%dです。\n", kasan); break; } } puts("=積算処理="); input = 1; do{ seki *= input; printf("値:"); scanf("%d", &input); }while(input != 0); printf("積算値は%dです。\n", seki); return 0; }
24 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:35:32 ] >>22 #include <stdio.h> int main(void) { int m,n,syou=0; printf("m:"); scanf("%d", &m); printf("n:"); scanf("%d", &n); while(n <= m){ m -= n; syou++; } printf("syou:%d\n", syou); return 0; }
25 名前:デフォルトの名無しさん [2010/11/17(水) 19:36:01 ] >>7 お願いします
26 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:36:45 ] >>4 問題1: codepad.org/ZdNJupRP 問題2: codepad.org/t9J0CI7t
27 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:50:32 ] >>25 #include <stdio.h> int c; float ave(int a, int b) { return ((a+b+c)/3); } char to_upper(char c) { if(('a' <= c) && (c <= 'z')){ c = c - 'a' + 'A'; } return c; } int main(void) { int a,b,i=0; char str[100]; printf("a:"); scanf("%d", &a); printf("b:"); scanf("%d", &b); printf("c:"); scanf("%d", &c); printf("str:"); scanf("%s", str); printf("aは3の倍数で%s\n", (a%3)==0 ? "す" : "ない"); printf("bは3の倍数で%s\n", (b%3)==0 ? "す" : "ない"); printf("cは3の倍数で%s\n", (c%3)==0 ? "す" : "ない"); printf("a,b,cの平均値は%f\n", ave(a,b)); while(str[i] != '\0'){ str[i] = to_upper(str[i]); i++; } printf("===after to_upper===\n"); printf("str:%s", str); return 0; }
28 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:27:15 ] >>10 書いたけど部分的なテスト(beautifyString)しかしてないよ、全体的なテストはやりようが無いからね 動かして変な動作が有ったら言ってくれ ttp://codepad.org/GxRLKH2W
29 名前:デフォルトの名無しさん [2010/11/17(水) 20:30:56 ] 書き方が悪くてすみません; >>7 は全部別々の問題です 1.キーボードから入力した整数値が3の倍数かどうかを表示するプログラム 2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。 ただし、平均値を求める関数 float ave(int a,int b) を利用すること。 3.キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。 ただし、文字を大文字に変換する関数を作成し、それを利用すること。
30 名前:28 mailto:sage [2010/11/17(水) 20:35:52 ] >>10 codepad で見直したら誤りがあったので訂正した ttp://codepad.org/49uvkrrJ
31 名前:デフォルトの名無しさん [2010/11/17(水) 20:40:25 ] >>28 ありがとうございます。 ちょっと動かしてみましたが。 ・・・・.・・・・・. のように一行にピリオドが2つ以上入力したとき ・・・・. ・・・・. のように出力されると思うのですが。 うまくできなかったです。
32 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:41:09 ] 割り算の結果が整数になっとったわ float ave(int a, int b) { return ((a+b+c)/3); } は、 float ave(int a, int b) { return ((a+b+c)/3); } な。
33 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:41:49 ] 割り算の結果が整数になっとったわ float ave(int a, int b) { return ((a+b+c)/3); } は、 float ave(int a, int b) { return ((a+b+c)/3.0); } な。
34 名前:デフォルトの名無しさん [2010/11/17(水) 20:46:17 ] >>30 >>31 の追記です。 \ENDか\endの入力でサーバーが閉じないです。
35 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:46:33 ] >>33 cはどこから来るのかな?
36 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:48:27 ] >>31 言ってる意味がよく判らないんだけど >>28 は駄目だよ >>30 を試してくれ
37 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:53:53 ] >>34 90行目 ptr = strstr( buf1, "\\end\r\n" ); を ptr = strstr( buf1, "\\end" ); に直してみてくれる? 改行コードまでを終了判定に使うか迷ったんだけど "\end \r\n" みたいな入力がある事を考えると使わない方が良いかも そのかわり、文中に "\end" が入るとそこで終わっちゃうけどね
38 名前:デフォルトの名無しさん [2010/11/17(水) 20:54:46 ] >>36 下記が実行結果です。 [Beautify Server Ready] It is June now. I will finish my studies in America soon,and leave for Japan next month. It is june now. I will finish my studies in america soon,and leave for japan next month. It is june now. I will finish my studies in america soon,and leave for japan next month. のようにはならないのですか?ってことです。わかりづらくてごめんなさい。
39 名前:デフォルトの名無しさん [2010/11/17(水) 20:58:56 ] >>37 変えてみましたが \end \End のようになって終わらないです。。
40 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:00:30 ] >>38 ピリオドで改行しろって事?>>10 からはその意図を読み取れなかったんだけど、その方が良いのかな? そっちの方が良いなら直すのは簡単だよ >>34 はOK?
41 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:02:55 ] 今は7月です。 私はすぐにアメリカの宿題を終えるでしょう。そして来月日本を発ちます。
42 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:03:26 ] ネットワークは適当に連結されて送受信されたりするから \end が独立してないんじゃないかな
43 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:06:40 ] >>39 理由は判った、無くて7バグを体現してるなぁwww 文頭に 'Cause が有った場合は 'cause に直すべき? 答えによっては修正法が異なるので
44 名前:デフォルトの名無しさん [2010/11/17(水) 21:07:08 ] >>40 文末をピリオドで判定するから ピリオドで改行するのかなと、思うのですが・・・。
45 名前:デフォルトの名無しさん [2010/11/17(水) 21:09:11 ] >>43 そこは直さなくてもいいと思います。 特に記載されてないので・・・。
46 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:09:45 ] >>44 仕様を決めるのは君だから君がそう思うなら直すよ >>43 の答えが出たら作業を開始する
47 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:15:56 ] >>10 2箇所しか修正箇所が無いから codepad の無駄使いかなぁ.... ttp://codepad.org/Cv02rynJ
48 名前:デフォルトの名無しさん [2010/11/17(水) 21:33:03 ] どなたか>>29 をお願いできませんか!; 急ぎなのでお願い致します!
49 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:46:28 ] >>48 >2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。 >ただし、平均値を求める関数 float ave(int a,int b) >を利用すること。 問題文、あってる? >float ave(int a,int b) これは課題として記述する関数?それとも与えられた関数?
50 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:50:41 ] >>48 参考までに nojiriko.asia/prolog/c143_7_2.html
51 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:03:28 ] 全スレ999です。 15パズルをランダムに状態を遷移させて完成にまで持って行きたいのですが 15パズルには考えられる状態数が多すぎるため10000回の遷移では完成させることができません 乱数を用いて、比較的すぐにパズルを完成させるためにはどのようにすれば良いですか?
52 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:06:01 ] 完全ランダムを辞めて戦略を考えてやればいいじゃないの
53 名前:デフォルトの名無しさん [2010/11/17(水) 22:08:29 ] >>49 課題として記述する関数だと思います; >>50 ありがとうございます。 でもよくわからない…orz
54 名前:51 mailto:sage [2010/11/17(水) 22:14:45 ] >>52 探索ではなく、乱数を使った戦略は何がありますか?
55 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:15:55 ] なんで乱数にこだわるの
56 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:22:11 ] >>54 左上が正しい位置に来たら、そのピースだけは動かさないようにする。 更にその周辺のピースが正しい位置に来たら、そのピースは動かさないようにする。 みたいに動かさなくてもすむピースを固定していったら?
57 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:31:04 ] >>53 float ave(int a,int b,int c)の間違いじゃない?
58 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:36:54 ] >>56 横からですまんが それで解けると思わないんだが
59 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:40:40 ] もしかして遺伝的アルゴリズムとかの系統を使う系?
60 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:44:50 ] >>29 とりあえず大雑把に。入力値のチェックはしていない 問題1: #include<stdio.h> int main() { int i; scanf("%d",&i); puts((i%3)?"3 no baisu dehanai":"3 no baisu"); return 0; }
61 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:46:31 ] >>29 問題2: #include<stdio.h> float ave(int a,int b) { return (float)a/b; } int main() { int a,b,c; scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); printf("%f\n",ave(a+b+c,3)); return 0; }
62 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:48:05 ] >>29 問題3: #include<stdio.h> char conv(char c) { return ((c>='a')&&(c<='z'))?(c-'a'+'A'):c; } int main() { char s[256]; int i; scanf("%s",s); for(i=0;'\0'!=s[i];i++) printf("%c",conv(s[i])); printf("\n"); return 0; }
63 名前:47 [2010/11/17(水) 22:51:36 ] >>10 >>47 は話にならない事が飯食ってたら判ったので修正、何回目のアップだろう...orz ttp://codepad.org/FJrFT2Ke これで最後にしたいなぁ....
64 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:00:19 ] >>57 多分、2項の平均値を得る関数を用いて3項の平均値を取るって所が肝なんじゃね? ave( ave( a, b ), c ); だと重みが違っちゃうから駄目なんだろうなぁ、どうするんだろ?
65 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:08:23 ] >>64 (ave(a,b)+ave(b,c)+ave(c,a))/3.0 こうか?w
66 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:11:32 ] 安部
67 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:18:26 ] 麻里亞
68 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:47:39 ] こうだろ ave( ave( a, b ) * 2, c );
69 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:48:02 ] >>65 こんな式でもOK ave(ave(a, b) * 2, c)
70 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:52:55 ] >>68-69 やめてやれよw
71 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:57:34 ] >>64 難しい式だなー 俺なら直感的にこう書くわ (ave(a,a)+ave(b,b)+ave(c,c))/3.0
72 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:59:18 ] a=1,b=2,c=1.5の時のaveは1.5になるが、>>68 >>69 では2.25になってしまう
73 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 00:07:51 ] >>72 おっしゃる通りなので訂正。 ((ave(a, b) * 2 + c) / 3.0
74 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 00:30:10 ] 誰か宿題の回答書いてやれよ
75 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 00:54:24 ] >>29 ave(a, b) = (a+b)/2 ave(b, c) = (b+c)/2 + ave(c, a) = (c+a)/2 ---------------------- ave(a, b)+ave(b, c)+ave(c, a) = a+b+c ave(a, b, c) = (a+b+c)/3 = {ave(a, b)+ave(b, c)+ave(c, a)}/3 これでどうよ >>54 乱数だったら完全に運じゃん?
76 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 01:52:38 ] 3で割ったら負けかなと思ってる
77 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 02:07:13 ] スカラー量を2等分しかできない道具を駆使して、スカラー量を3等分することって 可能なんだろうか? 昔いろいろ考えたけど、いい方法が思い浮かばなかったわ
78 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 02:22:49 ] >>77 1/4+1/16+1/64+1/256+・・・ Σ(1/4^n)=1/3
79 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 02:26:48 ] ほう・・・
80 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 03:20:38 ] >>58 56とは別人だが、固定箇所を限定すればいけんじゃね? ↓こんな感じで ■□□□ ■■□□ ■■□□ ■■□□ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■ □□□□ □□□□ ■□□□ ■■□□ □□□□ ■□□□ ■■■■ ■■■■ ■■■■ ■■■■ □□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ ■■□□ ■■□□ □□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ □□□□ ■■□□
81 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 03:33:26 ] なるほど、それならできるかも
82 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 04:13:11 ] >>80 それって8パズルでも可能?
83 名前:デフォルトの名無しさん [2010/11/18(木) 07:52:13 ] ポーカーゲームを作るプログラムの課題を教えてください。 [1] プログラムまとめ [2] 課題1のストレート、フラッシュ、フルハウスをヒントを使って判定する関数を作る。 /* ヒント: この関数を使うと、 判定が簡単かも */ void distrib(struct card h[], int dist[]){ int i; for(i = 0; i < 14; i++){ dist[i] = 0;} for(i = 0; i < 5; i++){ dist[h[i].pips]++;}} int is_straight(struct card h[]){ /* 課題1 */ return 0;} int is_flush(struct card h[]){ /* 課題1 */} int is_fullhouse(struct card h[]){ /* 課題1 */ return 0;} [3] 環境 [3.1] Mac [3.2] Xcode [3.3] C [4] 期限: 2010年11月22日まで よろしくお願いします。
84 名前:デフォルトの名無しさん [2010/11/18(木) 07:55:37 ] 83に付け足します。 card h[] は手札のカード h[].pips は手札のカードの番号 h[].suit は手札のカードのマーク のことです。
85 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 08:11:05 ] ジョーカーは0?
86 名前:デフォルトの名無しさん [2010/11/18(木) 08:50:38 ] >85 カードは全部で52枚なので、ジョーカーは無いものと考えているようです。
87 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 10:13:18 ] dist[]のサイズが14だからジョーカーの分もあるのかと思ったら ただ添え字と数字あわせただけか
88 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 12:57:24 ] >>83 書いてみた、ゲームの仕様が判らないので手役の判定だけね ランダムに10000回手札を作ってその手役を判定する 出力としては、4カード以上の手役が出来たら手札を表示 最後に出来た役の総数を出力 手役表示の優先順位は誤っているかも知れん、ロイヤルストレートって出現頻度が低いんだなぁ ttp://ideone.com/JiPy6
89 名前:デフォルトの名無しさん [2010/11/18(木) 12:57:37 ] >>60 >>61 >>62 ありがとうございました! お礼が遅れてすみません
90 名前:デフォルトの名無しさん [2010/11/18(木) 12:58:48 ] [1] 授業単元:画像処理 [2] 問題文(含コード&リンク): 赤(0〜255)、緑(0〜255)、青(0〜255)のそれぞれの濃淡で 描かれた256色ビットマップ形式の3つの画像を読み込み、 それぞれの色を重ね合わせて一つの画像にする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express [3.3] 言語: C/C++ [4] 期限: 2010年11月21日まで [5] その他の制限: ↓これに近い感じでお願いします。 codepad.org/dZITrctF
91 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:11:31 ] codepadが開けない
92 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:23:17 ] >>83 チェックしてないけど int is_straight(struct card h[]) { int i, j, dist[14]; distrib(h, dist); for(i = 1; dist[i] == 0; i++); if(i == 1) { for(j = 10; j <= 13; j++) if(dist[j] != 1) break; if(j > 13) return 1; } for(j = 0; j < 5; j++) if(dist[i + j] != 1) return 0; reutrn 1; } int is_flush(struct card h[]) { int i; for(i = 1; i < 5; i++) if(h[0].suit != h[i].suit) return 0; return 1; } int is_fullhouse(struct card h[]) { int i, dist[14]; distrib(h, dist); for(i = 1; i <= 13; i++) if(dist[i] == 1 || dist[i] == 4) return 0; return 1; }
93 名前:デフォルトの名無しさん [2010/11/18(木) 13:32:49 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 関数int yokin(int yen, double rishi, int year)を定義しなさい。 この関数はyen円を年利rishiの定期預金にyear年預けた後に戻ってくる金額を返す関数である。 引数はすべて0より大きいと仮定してよい。 rishiは,5%の場合には0.05となる。 利子は端数(小数点以下の値)があったとしても切り捨てられる。 端数の切り捨ては,毎年行われる。 main関数は次の処理をしなさい。 入力として,預け入れる金額を表す整数,利子を表す実数(0.0より大きく, 1.0より小さい),年数を受け付ける。 int yokin(int yen, double rishi, int year)を利用して,預け入れ後に受け取れる金額を出力せよ。 入力例1: 10000 0.05 3 入力例1に対する出力:11576 入力例2: 10000 0.05 5 入力例2に対する出力:12761 入力例3: 10000 0.035 10 入力例3に対する出力:14101 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C/C++ [4] 期限: できればはやめに [5] その他の制限: とくになしです よろしくお願いします。
94 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:47:22 ] >>93 #include <stdio.h> int yokin(int yen, double rishi, int year) { for(; 0<year; year--, yen+=yen*rishi); return yen; } int main(void) { int yen; double rishi; int year; int counter=1; START: printf("入力例%d: ", counter); scanf("%d %lf %d", ¥, &rishi, &year); printf("入力例%dに対する出力:%d\n", counter, yokin(yen, rishi, year)); goto START; return 0; }
95 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:48:31 ] >>93 カウンターのインクリメント忘れ。 #include <stdio.h> int yokin(int yen, double rishi, int year) { for(; 0<year; year--, yen+=yen*rishi); return yen; } int main(void) { int yen; double rishi; int year; int counter=1; START: printf("入力例%d: ", counter); scanf("%d %lf %d", ¥, &rishi, &year); printf("入力例%dに対する出力:%d\n", counter++, yokin(yen, rishi, year)); goto START; return 0; }
96 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:49:48 ] yokin yen rishi と来て、最後が year かよ
97 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:56:55 ] yen rishi と来て、最後が year かよ
98 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:57:26 ] いやあそれほどでも
99 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 14:08:18 ] >>97 関数名が見えない目の不自由な人?
100 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 14:21:24 ] 誰かパステルカラーの宿題をお願いします。
101 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:03:37 ] >>82 8パズル(右下が空きの場合)はこのように固定すればいい(一例)。たぶんな。 ■□□ ■■■ ■■■ □□■ □□□ □□□ ■□□ □□□ □□□ □□□ ■□□ ■□□ (a) (b) (c) (d) ただし、(a)とした状況で(d)を適用は不可能(d→aも同様)。下のようになっちゃうからね。 固定の仕方(aとするかdとするかなど)により、収束の早さが変わると思うが、どういう固定の仕方がいいのかはさっぱりわからん。 ■□■ □□□ ■□□ あと、おそらくだが、下の場合のように遷移可能な場所が1つであるような固定の仕方は駄目だと思う。 たとえば、ブロックの座標を(行,列)で表すとして、(1,2)のブロックは(2,2)だけにしか遷移できない、のように。 たぶん、こういった"遷移可能な場所が1つである部分"がないならどんな固定の仕方でも大丈夫だと思う。 1 2 3 1■□■ 2□□□ 3□□□
102 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:14:41 ] お前らパズル引っ張りすぎ 飽きた
103 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:16:59 ] ポーカーは面白かったな
104 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:29:36 ] >>102 ごめん、引っ張ってんの俺だわw たぶん最後のレス。 >>101 に間違いあり。 一番下のどんな固定の仕方でも大丈夫と書いたけど、これ間違い。 (e)を遷移させていくと(f)になるんだが、この時点で固定すると(e)に戻せなくなる。 123 123 456 754 78 68 (e) (f) まぁ、>>101 の(a)→(b)→(c)と固定していくのが無難だと思われ。
105 名前:デフォルトの名無しさん [2010/11/18(木) 17:13:32 ] >>88 >>92 ありがとうございました! 助かりました^^
106 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 17:27:10 ] >>90 コレって合成先のビットマップも256色なの? なんかパレット数が妙なことになってるけど それはなかったことにして24bitか32bitビットマップとしていいのか?
107 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 18:08:49 ] >>100 >>1
108 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 18:13:12 ] >>107 >>109
109 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 18:21:57 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):3次元上に3点をランダム発生、半径を指定し、その3点が球面上に乗る球の中心を求めるプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:特になし 球の中心の求め方の参考 ttp://oshiete.goo.ne.jp/qa/195295.html よろしくおねがいします。
110 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 19:11:48 ] >>109 二次方程式の解き方を教えてください
111 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 20:02:57 ] これ系→ >>101 取りあえず完全乱数版を作ってみた。 これから >>101 方式作って比べてみる。
112 名前:111 mailto:sage [2010/11/18(木) 20:03:39 ] URL忘れてた codepad.org/0ehnVXCt
113 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 20:17:58 ] 収束速くなったかな? codepad.org/r5SGn6ge
114 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 20:47:32 ] ついでに >>80 codepad.org/y6kYFh9r
115 名前:デフォルトの名無しさん [2010/11/18(木) 21:05:10 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、 サブルーチン内で表示するプログラムを作成せよ。(構造体を使用しないこと。) [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし 連投しますが、よろしくお願いします。
116 名前:デフォルトの名無しさん [2010/11/18(木) 21:09:36 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、 サブルーチン内で表示するプログラムを構造体を用いて作成せよ。ただし、 構造体のメンバに値を代入する際には変数実体を操作する。 すなわちドット演算子を用いること。 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし 連投しますが、よろしくお願いします。
117 名前:デフォルトの名無しさん [2010/11/18(木) 21:11:24 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):>>116 において、構造体のメンバに値を 代入する際にポインタを用いて代入するプログラムを作成せよ。 すなわちアロー演算子を用いること [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし
118 名前:デフォルトの名無しさん [2010/11/18(木) 21:14:54 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):学年、学科、番号、を表示する プログラムを作成せよ。ただし、構造体を使用し、構造体のメンバとして 構造体を含むようにすること。 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし
119 名前:デフォルトの名無しさん [2010/11/18(木) 21:18:24 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):メンバとしてchar型変数chとint型変数をi、 double型変数dを持つ共用体を用意する。 iに16進数値を代入した後ch,i,dそれぞれを表示する プログラムを作成せよ。なお、表示する際に、全ての変数を%xで表示すること。 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし 以上よろしくお願いします。
120 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 21:33:43 ] >>115 ~ なんかすごいな... やり方教えたほうがいいのかな...
121 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 22:25:25 ] >>116 と >>117 なんて A[i].B と (A+i)->B の違いだけだしなぁ C言語を覚えたての奴が独習として回答するんじゃないのか?
122 名前:デフォルトの名無しさん [2010/11/18(木) 22:57:20 ] [1] 授業単元:プログラミング [2] 問題文 コンストラクタでrow,columnを指定して、動的に確保 デストラクタを解放 これで足し算メソット add(matrix Y)を作ってください [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限:2010/11/20 [5] その他の制限:あまり難しくしすぎないでください。 あと、出力→coutで、入力はcinでお願いします。
123 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:03:52 ] >>122 問題文を日本語で頼む
124 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:36:13 ] >>123 お前日本語読めないの?
125 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:41:33 ] news.www.infoseek.co.jp/topics/comp/n_game__20101118_6/story/gadget_85662/
126 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:45:14 ] あずにゃん
127 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:48:22 ] いまや低脳日本人だらけだからね 高脳なら低脳の意味不明な文章でも問題なく理解できるが、でも低脳は不可能 低脳は高脳が低脳にあわせて解りやすく言うことしか理解できない ついでに、低脳同士のコミュニケーションは不可能
128 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:50:55 ] 確かに、高脳なら普通に理解できるものを低脳は理解できない、しようとしない。
129 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 00:00:09 ] >>122 望んでるのはこんなんか?入力部分はコメントアウトしてある ttp://codepad.org/bG4bQkai
130 名前:122 [2010/11/19(金) 00:55:47 ] >>129 出来たら、coutの部分を日本語でいれていただきたいんですが… あと、(void)って()の中のvoidは必要ですか?
131 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 01:39:08 ] >>130 このようなことまで注文するのは 回答者(2ch?)の著作権を尊重しての ことなのでしょうね。
132 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 01:40:51 ] ISO、ANSI準拠の標準スタイルではC++ではmain関数への引数が無い場合はvoidが無くてもおk int main() { } でどうぞ。return 0;も省略可。
133 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 02:07:32 ] >>130 日本語に直すぐらいは自分でやれ、エディターを使った事が無いなら別だけど 引数の void は引数が無いことを明示的に表現しているだけなので省略しても良い しかし、明示的に表示する事によるデメリットは何も無いので、俺は必ず付ける
134 名前:デフォルトの名無しさん [2010/11/19(金) 14:24:49 ] >>14 分かる方いましたらよろしくお願いします。
135 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 15:41:57 ] ↓
136 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:27:09 ] >>129 newしたものを初期化してほしければ m_Mat[i] = new int[m_column](); じゃないか?
137 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:33:26 ] >>136 () 付けないとコンストラクタは呼ばれないんだっけ? 忘れてることって多いな....
138 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:46:21 ] >>136 コンパイルエラー
139 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:48:06 ] >>136 やってみたら E2243 new で確保した配列には初期化子が使えない (C++) が出るな #include <iostream> class foo { public: int x; foo( void ) { x = 1; } }; int main( void ) { foo* p; int* x; int i; p = new foo[10]; x = new int[10]; for( i = 0; i < 10; i++ ) std::cout << p[i].x << ", " << x[i] << std::endl; return 0; } 試しにこんなコードを書いてみたら、p[].x は全て1に初期化されていたけど、x[] は未初期化状態だ int はディフォルトコンストラクタを持たないって事かな?
140 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:50:11 ] >>139 int()は単独では使えるけど、配列newには使えないだけ
141 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:53:11 ] 規格のバージョンとか、独自拡張とかなのかな? codepadとVC++2010じゃコンパイル出来た。
142 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:00:26 ] §5.3.4 New 15 A new-expression that creates an object of type T initializes that object as follows: ? If the new-initializer is omitted: ? If T is a (possibly cv-qualified) non-POD class type (or array thereof), the object is defaultinitialized (8.5). If T is a const-qualified type, the underlying class type shall have a user-declared default constructor. ? Otherwise, the object created has indeterminate value. If T is a const-qualified type, or a (possibly cv-qualified) POD class type (or array thereof) containing (directly or indirectly) a member of const-qualified type, the program is ill-formed; という事だそうです
143 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:15:43 ] >>140 それは foo に関しても同じ、 foo の配列 new ではディフォルトコンストラクタが呼ばれて x が 1 に初期化されたけど、 int は 0 に初期化されなかったので int にはディフォルトコンストラクタが用意されてないのかという話
144 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:17:05 ] >>141 >>143 それはC++0xではいいが C++ではだめ POD class type (or array thereof) containing (directly or indirectly) a member of const-qualified type, the program is ill-formed; これの意味が分かれば分かるはず
145 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:18:02 ] Otherwise, the object created has indeterminate value. ああこれも含めてな
146 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:37:50 ] 英語弱いから日本語で書いてくれ
147 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:40:41 ] よし in English
148 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 18:24:28 ] C++03では配列newの場合非PODではデフォルトコンストラクタが呼ばれ、 PODの場合は不定値となるという事 もし new int[constant]() と書くと文法エラー(C++0xではOK)
149 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 18:32:38 ] >>148 じゃ >>143 は正しい解釈じゃないの? 要は plain old data にはディフォルトコンストラクタが無いことに起因してるんだから
150 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 18:44:44 ] デフォルトコンストラクタはある int i() とやると iは0に初期化される しかし配列newの場合はPOD型はデフォルトコンストラクタは呼ばれなくて 不定値になるとちゃんと書いてあるじゃん
151 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:04:55 ] PODのディフォルトコンストラクタは配列 new 時にはコールされないって解釈なら正しいのか?
152 名前:mery [2010/11/19(金) 19:10:58 ] [1] 授業単元:プログラミングC [2] 問題文(含コード&リンク): 無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は10等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: 不明 [3.3] 言語:C [4] 期限:11月21日 [5] その他の制限:1〜50以外の数字が入力されたときの処理は考えなくていいそうです よろしくお願いします!
153 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:15:02 ] >>152 その度数分布だと5等分なんじゃ?
154 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:44:05 ] >>151 規格を解釈するとそうなる
155 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:48:48 ] #include <stdio.h> #include <stdlib.h> double ave,var; double heikin(double *array,int n) { int i; double sum=0; srand(10); for(i=0;i<n;i++){ array[i] = (double)(rand())/RAND_MAX; sum+=array[i]; printf("%lf\n",array[i]); } return sum; }
156 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:50:46 ] int main(void) { int d=0; double *h,r; printf("乱数の数:"); scanf("%d",d); h=(double*)malloc(d*sizeof(int)); r= heikin(h,d); printf("合計:%lf",r); return 0; } 乱数の合計値を求めるプログラムなんですが、エラーが発生します。 どこが原因なんでしょうか?
157 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:54:03 ] >>156 sizeof(int)
158 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:56:05 ] >>157 sizeof(int)をどうすれば良いのですか?
159 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:12:30 ] double *h,r; hはdouble型のポイントで h=(double*)malloc(d*sizeof(int)); int型のサイズで確保してどーすんだと
160 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:13:20 ] ポイントってなんだ、ポインタやん orz
161 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:20:25 ] >>156 scanf("%d",d); ↓ scanf("%d",&d);
162 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:30:04 ] >>159-161 ありがとうございます。 初歩的なミスでした。 実を言うと、もう一つ質問があります。 この合計から「分散」を計算したいのですが、どうすれば良いですか?
163 名前:mery [2010/11/19(金) 20:57:47 ] >153さん すいません、5等分でした。 正しい問題は、 「無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 」です。
164 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:23:30 ] >>152 #include <stdio.h> int main(void) { int count[5]={0}; int i, j, x=0; i=0; while(1) { if(i>=10) break; scanf("%d", &x); count[(x-1)/10]++; i++; } i=0; while(1) { if(i>=5) break; printf("%2d〜%2d : ", i*10+1, (i+1)*10); j=0; while(1) { if(j>=count[i]) break; printf("*"); j++; } printf("\n"); i++; } return 0; }
165 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:36:07 ] よし、マイナスの値を入力して結果を見てみようか。
166 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:37:57 ] 範囲外の値を入力したらエラーで落ちた orz
167 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:41:39 ] こういうのを勇み足といいます
168 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:49:20 ] 入力された値をもとに配列の添え字を指定するのは思いついたが 範囲外の対処が甘かったか。
169 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:49:34 ] >>162 の者ですが、「分散」のプログラムはこれで合ってますか? ave=sum/n; for(i=0;i<n;i++){ gokei+=(sum*((array[i]-heikin)*(array[i]-heikin))); } var=gokei/(n-1);
170 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:50:58 ] >>169 いいえ
171 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:56:25 ] >>169 どこが違うのか教えてください
172 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 22:45:54 ] >>169 ですが、書き直しました。 ave=sum/N; for(i=0;i<N;i++){ sum2+=((array[i]-ave)*(array[i]-ave)); } var=sum2/(N-1); return var; } これで合ってますか?間違っているのなら指摘をお願いします。
173 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 00:05:58 ] >>172 sum2=0; をforの前に入れればOK
174 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 00:07:40 ] 安部
175 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 00:09:48 ] 分散は、 (二乗の平均) - (平均の二乗) に等しい、という公式がありますので(ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3 ) 平均を求めるときに二乗の平均もあわせて計算すると、1 pass ですみます。参考までに。
176 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 01:35:23 ] >>173 >>175 ありがとうございます!
177 名前:デフォルトの名無しさん [2010/11/20(土) 01:46:27 ] [1] 授業単元:プログラミング [2] 問題文 imepita.jp/20101120/039760 図の左のプログラム(○つけてある方です)の30行目〜32行目を消して、デストラクタを作って31行目の処理を実装して動作確認をしてください [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限:2010/11/22
178 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 01:51:07 ] >>177 読みづらい それにSeiseki.hはどこにあるの? 面倒でもcodepadかどこかに上げてくれ
179 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 01:53:29 ] >>177 そのページを打ち込んだテキストファイルをアップする それが最低限のマナーだと思うぞ
180 名前:デフォルトの名無しさん [2010/11/20(土) 01:53:42 ] >>132 これって、printfはcoutにする事は不可能でしょうか
181 名前:177 [2010/11/20(土) 02:02:03 ] imepita.jp/20101120/070540 ごめんなさい。全体を貼ったほうがいいですね…
182 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:05:13 ] だからimepitaはやめろっつーに それもデジカメじゃなくて携帯で撮ったろ ボケて読めない テキストで打ち込め
183 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:20:24 ] なんでわざわざ紙に印刷した上にデジカメで撮影した画像をアップするんだよw もとのテキストをアップすりゃ済むことだろw
184 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:26:49 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):平均値:μ,分散:σ^2の分布がn個与えられているとする。 この分布が何であろうと、nの数が多きなるにつれてこの分布の合計は平均:nμ,分散:nσ^2の正規分布に近づくとされる。 要素数n個をもつx個の乱数系列を発生させるプログラムを作れ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 [3.3] 言語: C++ [4] 期限:2010年11月22日 [5] その他の制限:@キーボードから入力すること A乱数は配列で保存すること B#include <stdio.h>#include <stdlib.h>にしてはじめること
185 名前:177 [2010/11/20(土) 02:27:17 ] >>183 紙に印刷したんじゃなくて配布のプリントなんです…
186 名前:デフォルトの名無しさん [2010/11/20(土) 02:28:16 ] 宿題をくれているのに生意気なこと言うなよ とっとと宿題をやれ
187 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:42:25 ] 野良猫にえさを与えないで下さい
188 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:44:02 ] >>185 だから、それを一字一句間違いなく打ち込んでアップするのが出題者の最低限のマナーだ コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
189 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:47:11 ] にゃおおおおー、にゃおーーーー ヾヽヽ (,, ・∀・)チュンチュン ミ_ノ ″″
190 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:48:51 ] >>188 >コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう これどうやるんですか?
191 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:14:56 ] まさかパソコン持ってないとか言うなよ・・・・
192 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:26:10 ] >>190 君に言うべき言葉が見つからない、ゴメン
193 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:30:47 ] いや、あるよ >>190 君はこのスレに来る前にしなければならない事が山ほどある
194 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:35:42 ] PCなくてもネカフェ行けばいいんでないの
195 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:40:16 ] いまの学生は携帯は持っているけど、PCは持ってないの多そうだな 宿題の解答は学校のPCでダウソかな 時代は携帯中心になり、モビリティのないPCはおっさん時代の中心ねだろうな
196 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:45:36 ] だが、PCが一人1台すらない詐欺学校で 全て机上のペーパープログラミング授業だとしたらどうだろう?
197 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:45:56 ] >>177 よく分からないんだけど、これでいいの? Seiseki.h codepad.org/pD9ELv8a Seiseki.cpp codepad.org/eHbTlLw3 main.cpp codepad.org/EosY2r9A
198 名前:90 [2010/11/20(土) 03:50:57 ] >>106 亀レスでごめんなさい。 256色で出力しようと思ってたのですが。 求める画像ができるならどの形式でも問題ありません。 codepad重いみたいなのでおかしいと思ったところを書き直して貼ってみます。 どなたか>>90 をお願いします。 #include "stdafx.h" #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]) { BITMAPFILEHEADER bmfh; BITMAPINFOHEADER bmih; FILE *fp = NULL; int inwidth,inheight,insize; RGBQUAD eq[256]; for(a=0; a<256; a++) { eq[a].rgbBlue = a; eq[a].rgbGreen = a; eq[a].rgbRed = a; eq[a].rgbReserved = 0; }
199 名前:デフォルトの名無しさん [2010/11/20(土) 03:52:02 ] fopen_s(&fp, "赤rec00「RGB」.bmp", "rb"); if(fp==NULL) { printf("画像の読み込みに失敗"); exit (-1); /*処理を継続できないので終了する*/ } fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp); fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp); inwidth = bmih.biWidth; inheight = bmih.biHeight; insize = inwidth * inheight; unsigned char* red; red = new unsigned char[insize]; fread( &eq , sizeof(RGBQUAD)*256, 1 , fp ); fread(red, insize, 1, fp); fclose(fp); fopen_s(&fp, "緑rec00「RGB」.bmp", "rb"); if(fp==NULL) { printf("画像の読み込みに失敗"); exit (-1); /*処理を継続できないので終了する*/ } fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp); fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp); unsigned char* green; green = new unsigned char[insize]; fread( &g , sizeof(RGBQUAD)*256, 1 , fp ); fread(green, insize, 1, fp); fclose(fp);
200 名前:デフォルトの名無しさん [2010/11/20(土) 03:52:44 ] fopen_s(&fp, "青rec00「RGB」.bmp", "rb"); if(fp==NULL) { printf("画像の読み込みに失敗"); exit (-1); /*処理を継続できないので終了する*/ } fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp); fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp); unsigned char* blue; blue = new unsigned char[insize]; fread( &eq , sizeof(RGBQUAD)*256, 1 , fp ); fread(blue, insize, 1, fp); fclose(fp); unsigned char* rgbrec; rgbrec = new unsigned char[insize]; RGBQUAD rgb[256*128]; for (a=0; a<insize; a++) { rgb[a].rgbBlue = blue[a]; rgb[a].rgbGreen = green[a]; rgb[a].rgbRed = red[a]; rgb[a].rgbReserved = 0; rgbrec[a] = a; }
201 名前:デフォルトの名無しさん [2010/11/20(土) 03:53:25 ] bmfh.bfType = 0x4D42; bmfh.bfSize = 54+insize+(4*256*128); bmfh.bfReserved1 = 0; bmfh.bfReserved2 = 0; bmfh.bfOffBits = 54+4*256*128; bmih.biSize = 40; bmih.biWidth = inwidth; bmih.biHeight = inheight; bmih.biPlanes = 1; bmih.biBitCount = 8; bmih.biCompression = 0; bmih.biSizeImage = insize; bmih.biXPelsPerMeter = 0; bmih.biYPelsPerMeter = 0; bmih.biClrUsed = 256; bmih.biClrImportant = 0; fopen_s(&fp, "rec「RGB」.bmp" , "wb" ); fwrite( &bmfh , sizeof(BITMAPFILEHEADER) , 1 , fp ); fwrite( &bmih , sizeof(BITMAPINFOHEADER) , 1 , fp ); fwrite( &rgb , sizeof(RGBQUAD)*256*128 , 1 , fp ); fwrite( rgbrec , 1 , insize , fp ); fclose( fp ); return 0; }
202 名前:デフォルトの名無しさん [2010/11/20(土) 03:54:05 ] 長々と失礼しました。
203 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 04:25:28 ] >>181 君がアンカーをミスらなければもっと早く答えたんだけどね void Matrix::disp( void ) { if( m_Mat ) { int i, j; for( i = 0; i < m_row; i++ ) { cout << "|\t"; for( j = 0; j < m_column; j++ ) cout << m_Mat[i][j] << "\t"; cout << "|" << endl; } } } これの話だと思う、別にC++だからprintf() を使ってはいけない理由は無いと思うんだけどな
204 名前:203 mailto:sage [2010/11/20(土) 04:27:58 ] × >>181 ○ >>180 そして俺がアンカーをミスるのは何故だ....
205 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 05:38:00 ] >>90 全部書き直したいくらいのソースだけど 一応可能な限り残して修正 てか、これ色々エラー処理入れたほうがいいんじゃないか? 吐き出しフォーマットは24bitビットマップ codepad.org/9jTAUdhP
206 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 10:27:17 ] >>184 codepad.org/VbJwxmH3 C標準関数rand()の質が悪いのでもっと良いrand()を使えば いい結果が得られると思う
207 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 10:31:37 ] >>184 ごめん乱数は配列に保存すると題意にあったのでarray[]に保存している 表示はしていない codepad.org/Piz4GErK
208 名前:デフォルトの名無しさん [2010/11/20(土) 12:53:14 ] >>203 ごめんなさい。これを>>129 のプログラムのprintfの所に代わりに入れてあげればいいんですか?
209 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:10:20 ] >>184 ですが、書き間違えていました。 正しくは、 A乱数は配列で保存すること → A乱数は「動的確保された」配列に保存すること ごめんなさい。
210 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:21:25 ] >>209 の続きです。 C乱数係数xはキーボードから入力するようにプログラムすること を追加してください。
211 名前:デフォルトの名無しさん [2010/11/20(土) 14:33:26 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):赤い領域と白い領域が隣り合っているところを抽出せよ。 [3] 環境 [3.1] OS:Windows、visual studio2005 [3.3] 言語:どちらでも可。 [4] 期限:今日か明日には完成させたいです。 [5] その他の制限:できるだけわかりやすいと嬉しいです。 とりあえず赤い領域は抽出できたのですが隣り合う白い領域を抽出するのができないです。 ラスタスキャンし、赤い画素を見つけたら4近傍を探索し、白い画素だったら抽出…という方向で組んでいるのですが 白い画素を見つけたとき、その白い画素の4近傍もまた探索しないといけないのでここでつまづいています。 よろしくお願いします。
212 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:36:19 ] >>209 >>210 乱数は動的確保された配列に保存されています 乱数係数xの意味がよくわかりません 具体的に説明をお願いします もしかしてsrand()に与える値ですか?
213 名前:211 [2010/11/20(土) 14:43:00 ] // (1)画素値(R,G,B)を順次取得し,変更する // 赤色領域の4近傍を探索し、白色であった場合抽出する for (y = 0; y < hsvImage->height; y++) { for (x = 0; x < hsvImage->width; x++) { cnt++; p[0] = hsvImage->imageData[hsvImage->widthStep * y + x * 3]; //座標(x,y)のH(色相)値を取得 p[1] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1]; //座標(x,y)のS(彩度)値を取得 p[2] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2]; //座標(x,y)のV(輝度)値を取 //赤い画素を見つけたら if(((p[0] >= THRESH_BOTTOM1) && (p[0] <= THRESH_TOP1)) || ((p[0] >= THRESH_BOTTOM2) && (p[0] <= THRESH_TOP2))){ if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){ //// 4近傍を探索し、白色の画素があれば抽出(とりあえず左だけ) x = x - 1; if((p[2] >= THRESH_BOTTOM3) && (p[2] <= THRESH_TOP3)){ p[0] = cvRound(255); p[1] = cvRound(255); p[2] = cvRound(255); flag=1; }x=x+1;
214 名前:211 [2010/11/20(土) 14:44:08 ] } } if((p[0] >= THRESH_BOTTOM1 && p[0] <= THRESH_TOP1) || p[0] >= THRESH_BOTTOM2 && p[0] <= THRESH_TOP2){ if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){ hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(255); hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(255); hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(255); } }else if((p[0] == THRESHOLD_MAX_VALUE) && (p[1] == THRESHOLD_MAX_VALUE) && (p[2] == THRESHOLD_MAX_VALUE)){ hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(100); hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(100); hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(100); }else{ hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(0); hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(0); hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(0); } //printf("flag:%d\n",y); if(flag==1){ y = y -1; flag=0; } } } 今のところこんな感じです。 赤い画素をH,S,V全てに255をセットし、みつけた白い画素をH,S,V全てに100をセットしています
215 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:44:18 ] >>211 サンプル画像も貼らずに質問とな? 説明の意味が分からんのだが、赤い領域と白い領域の境界を見るのなら 「白い画素の4近傍もまた探索」は必要ないのではないか? とりあえず赤い領域と白い領域が何をさしてるのかちゃんと説明してくれ
216 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:52:32 ] >>209 >>210 奇特な >>129 がせっかく書いてくれてるのに、 理解する能力もなければ(ホントに全くないよね)、 理解する気持ちもない。 君は単位落とすべきでは?
217 名前:211 [2010/11/20(土) 14:55:50 ] >>215 www1.axfc.net/uploader/Img/link.pl?dr=4588966666&file=Img_100662.jpg 画像用意しました。 この中からエビの部分だけを抽出したいんです。
218 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:08:51 ] jpegかよ
219 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:12:39 ] >>212 乱数係数ではなく「乱数系列」でした。
220 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:13:40 ] >>217 CDC MemDC1,MemDC2;を用意し、 MemDC1は白い色だけの色を残し、それ以外はCOLORREF=0にする。 MemDC2は赤い色だけの色を残し、それ以外はCOLORREF=0にする。 MemDC1とMemDC2のCOLORREF≠0の部分を縦横4ドットずつ広げる。 MemDC1とMemDC2のandを取る。 こんな感じでだめか?
221 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:15:16 ] >>216 >>122 は私が書いたのものではないのですが…
222 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:17:52 ] >>14 codepad.org/Z4Tdf8rM
223 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:56:39 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):双方向リストを使って、複数行を読み込み、読み込んだ行をそのままの順に出力するプログラムを完成させなさい。 [3] 環境 [3.1] OS: Windows7(Windows/Linux/等々) [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0 [3.3] 言語:_C [4] 期限:今日中 [5] その他の制限: 特になし
224 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:06:52 ] IT会社の経営者なんて、自社製品を何も持たず技術者をよその会社にぶちこんでピンはねで利益を上げてるだけだぞ? 従業員のやりがいとか成長とか全く興味がないからな。ビジネスモデルがピンはねなんだからやつらの考えることは 如何に従業員をこき使うかしか考えてない。それでしか利益を上げられないんだから。 普通会社の存在理由って、世の中に新しい価値を提供したいとかそういうことじゃん? でもITの経営者のやることは技術者を売ってピンはねで金儲けすることだけだから。 技術者の命より金の方が優先度が高い世界だぞ?そりゃ精神病んで自殺に追い込まれるよ。
225 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:20:49 ] [1] 授業単元:集合知プログラミング [2] 問題文(含コード&リンク):hibari.2ch.net/test/read.cgi/tech/1289913298/224 はどこか のスレからの誤爆である。このスレを探し、何に対するレスであるか示すプログラムを書きなさい。 [3] 環境 [3.1] OS: Windows7(Windows/Linux/等々) [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0 [3.3] 言語:_C [4] 期限:今日中 [5] その他の制限: 特になし
226 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:43:07 ] >>217 画像ファイルの扱いは不慣れなので、変なところがあるかもしれませんが、 取りあえずエビっぽいのが抽出できたんで。 www1.axfc.net/uploader/Sc/so/175292.zip
227 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:46:04 ] >>222 すごいシンプルだな、参考にさせてもらうよ 俺もがんばって解いたが発狂しそうになった codepad.org/BsfWdhLl
228 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:53:22 ] >>227 問題読んですらないけど51-98行の圧迫感にワロタw 力作おつです。
229 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:58:13 ] >>219 出掛けていて遅くなった codepad.org/3mIpUOYz これでいいのかな ちなみにcodepadには上げてないけど、自前のもっと質の良い乱数発生 ルーチンを使ったら発生個数を上げると平均、分散ともに桁数の一致が 良くなりました でも宿題用ならこれで十分でしょう
230 名前:226 mailto:sage [2010/11/20(土) 18:01:15 ] >>226 ごめん。↓ここがおかしいわ。 gAnd[y][x] = 0; int xx,yy; for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) { for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) { if (gW[y][x] && gR[y][x]) { gAnd[y][x] = 1; } }} 正しくは、というより俺がイメージしたのは↓。 /* "3ドット広げて、W,Rともドットがあったら"って処理のつもり */ gAnd[y][x] = 0; int xx,yy; int flag = 0; for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) { for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) { if (gW[y][x]) flag |= 1; if (gR[y][x]) flag |= 2; if (flag==3) gAnd[y][x] = 1; }}
231 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:19:43 ] >>229 ありがとうございます。 ところで、このプログラムは、#include <math.h>と#include <time.h>を使わずにつくれますか? できればなしのプログラムも欲しいんです。 何度も注文つけてしまってすいません。
232 名前:211 [2010/11/20(土) 18:21:31 ] >>230 ありがとうございます! キレイに抽出できてますね… ソースが難しいので頑張って解読してみます。
233 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:39:43 ] >>231 できるけどsinとかcosとかを自分で作らないといけないよ? もともとあるものを自分で作るのは全く無意味だし 問題の本質ではないからこのままでいいんじゃない? math.hとtime.hを使いたくない理由が分からないけど もし習ってないとか言うバカげた理由なら考えを改めたほうがいいよ
234 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:39:46 ] >>232 スケルトンから変えたのはほぼ View の40〜120行目あたりだけ。 ソースがみずらくてすまんが、やってることは大したことない。 1.白と赤の部分だけを取り出す。gW , gR 2.白と赤のORを作る。gOr 3.白と赤を3ドット広げて、重なり部分を取り出す。gAnd 4.gOrの島の中から,gAndが含まれる部分を抽出する。gMsk おそらく君にとって、Fillだけがキモだと思うが、 gOr && gAnd を見つけたら gMsk を1にし、 その上下左右にgOrが続いていたら、xy座標を更新してFillを再起する。 最初の基点からジワーッとgOrをあぶりだしていく感じ。
235 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:40:32 ] >>231 あ、>>229 は<time.h>はもう不要なので取り忘れました <math.h>はlog()とsqrt()とsin()とcos()を呼び出すのに必要なので、 やるとすれば疑似的な発生法しかありません それで作ってみます
236 名前:211 [2010/11/20(土) 18:49:05 ] >>234 スケルトンをまず知らないのでww c言語でお願いすればよかったと後悔してます\(^o^)/
237 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:54:45 ] >>231 codepad.org/Z7lv5P4I floor()もsqort()も使えなくなったので、分散を求める事が出来ないので 発生した正規分布の乱数を表示するようにしました
238 名前:デフォルトの名無しさん [2010/11/20(土) 19:52:14 ] 糞スレ
239 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 20:21:00 ] >>237 無理なお願いを聞いて頂きありがとうございます。
240 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:09:33 ] >>205 ありがとうございます。 RGBTRIPLEなんて構造体があったのですね。
241 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:13:01 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 問題1
1から10までの整数の表示をするプログラムを、 do-while 文とを使用して作成しなさい。 < 実行例 >
1 2 3 4 5 6 7 8 9 10 問題2
10から1までの整数の表示をするプログラムを、 while 文を使用して作成しなさい。 < 実行例 >
10 9 8 7 6 5 4 3 2 1 問題3 キーボードから 読み込ん だ整数が1〜9の範囲内の場合は 繰返し、それ以外の場合は終了するプログラムを作成しなさ い。 < 実行例 >
整数: 8 範囲内です
整数: 3
範囲内です
整数: 11
範囲外です。
終了します。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:11月21日 [5] その他の制限: なし よろしくお願いします。
242 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:43:31 ] >>241 codepad.org/DE6gfYRT
243 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:45:35 ] >>223 hibari.2ch.net/test/read.cgi/tech/1289715349/80
244 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:46:58 ] >>243 おいおい問題があるスレに誘導するなよ 今運営に報告してきた所だぞ
245 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:55:53 ] >>244 報告先の URL を教えてください。 回答がありしだい、誘導を停止します。
246 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:57:50 ] >>245 その前にどうして誘導するのかその理由を聞かせてくれないか? ここが宿題スレだろうに 誘導するのなら確固とした理由が必要だろ
247 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:03:49 ] ◆QZaw55cn4c本人でしょ いいかげん他スレにちょっかい出すのやめればいいのに 自分が立てたスレに責任が持てないなら削除依頼だしてこいよ
248 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:05:32 ] と言う事で◆QZaw55cn4cは自分のスレに書き込まれた問題のみに解答しろ このスレから誘導すんな このスレの意味が無くなる
249 名前:226 mailto:sage [2010/11/20(土) 22:19:01 ] あまり落とす人もいないでしょうが・・・ ちょっといじるとスタックオーバーフロー起こすので消しました。>>226 一応スタックオーバーフローの暫定対策版を↓に置いときます。 www1.axfc.net/uploader/Sc/so/175392.zip
250 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:21:48 ] サーバ用途じゃないツールだったら、 思う存分落とせばいいじゃん。
251 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:23:10 ] あ、サーバ用途ってのは、それ自身が動き続けることが使命になってるプログラムのことね。 ツールってのは、コマンドとして実行させて、終了とともに結果を得るもの、ってつもり。
252 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 00:34:14 ] 言わんとするところは伝わるような気がするが、 ツールだから落ちてもいいという根拠は何も出ていない。
253 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 02:32:40 ] 作った本人が私的に使うツールなら分かるが、 そうでなければ、あまりにも無責任
254 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 03:09:35 ] ソースあるんだから文句があるなら自分で直せばいいだけなのに
255 名前:デフォルトの名無しさん [2010/11/21(日) 09:51:24 ] プログラミング演習の問題で 入力した名前(アルファベット)を昇順に並び変える sort_by_nameという関数を作りたいです。 2文字目ぐらいまで判定できればいいです。 数字の昇順ならできるのでヒントだけでもください。 codepad.org/6vjN9ld1
256 名前:デフォルトの名無しさん [2010/11/21(日) 10:20:54 ] [1] 授業単元:情報処理概論T [2] 問題文(含コード&リンク): つると亀が合わせてn匹います。足の数は合わせてmです。 nとmを入力して、つると亀がそれぞれ何匹いるのか求めるプログラムを作りなさい。 もし解がない場合は、その旨を出力するようプログラムすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [無期限] [5] その他の制限:if、while、for、配列、多重ループ、関数まで習いました。 よろしくお願いします。
257 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 10:30:42 ] >>255 strncmp
258 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 10:37:01 ] >>255 codepad.org/rvBnDcMH
259 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 11:01:00 ] >>256 codepad.org/jxPppob9
260 名前:255 [2010/11/21(日) 11:11:06 ] >>257 >>258 ありがとうございました! 解決しました
261 名前:デフォルトの名無しさん [2010/11/21(日) 14:30:29 ] [1] 授業単元: プログラミング [2] 問題文: 4つの整数s,m,l,xlを小さい順に並べ替えるプログラムを作成しなさい。 ただし、並び替えをする部分はユーザ定義関数化し、 並び替え後の結果をmain関数で出力するようにすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:11月23日まで よろしくお願いしますm(__)m
262 名前:デフォルトの名無しさん [2010/11/21(日) 14:46:04 ] [1] 授業単元;プログラミング演習 [2] 問題文(含コード&リンク): ・ランダムな整数列を生成し,挿入ソート・シェルソートにより 並べ替えるプログラムを作れ ・実行時間を計測せよ [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C/C++/どちらでも可 [4] 期限:11月24日 [5] その他の制限: unixのrand()とtimeコマンドを使用すること mainの中もお願いします。
263 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 14:46:17 ] >>261 #include <stdio.h> void swap(int *a, int *b){int temp=*a; *a=*b; *b=temp;} void sort(int *s, int *m, int *l, int *xl){ if(*s>*m) swap(s,m); if(*s>*l) swap(s,l); if(*s>*xl)swap(s,xl); if(*m>*l) swap(m,l); if(*m>*xl)swap(m,xl); if(*l>*xl)swap(l,xl); } int main(){ int s = 4, m = -33, l = 232, xl= 83; sort(&s, &m, &l, &xl); printf("s = %d, m = %d, l = %d, xl = %d",s, m, l, xl); return 0; }
264 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 16:27:49 ] >>262 hibari.2ch.net/test/read.cgi/tech/1289715349/83
265 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 16:29:54 ] [1] 授業単元: 情報工学 [2] 問題文: www.dotup.org/uploda/www.dotup.org1261761.txt.html [3] 環境 [3.1] OS: Cygwin on Windows [3.2] コンパイラ名とバージョン: gcc 4.3.4 [3.3] 言語: C [4] 期限:11月22日まで どうか宜しくお願いします。
266 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 16:35:16 ] >>264 ◆QZaw55cn4cの出張ウザイです
267 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:08:46 ] >>265 入力してテストってのは面倒だからやってない、入力するには5行目の #define TEST をコメントアウトしてくれ コードの問題で化けると嫌なので出力は英語になってるので気に喰わなければ勝手に直してくれ ttp://codepad.org/jfDB88t9
268 名前:デフォルトの名無しさん [2010/11/21(日) 19:15:22 ] >>222 >>227 どうもありがとうございます。 御二方のコードを参考に自分でもう一度作ってみようと思います。
269 名前:デフォルトの名無しさん [2010/11/21(日) 19:19:16 ] c言語の宿題の一部なのですが コマンドプロンプトのmoreの役割をするプログラムを作るのはどうすればいいのでしょうか? 既に出来ているテキストファイルをコマンド上に表示するだけなのですが 出来ればソースをお願いします
270 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:24:28 ] ncursesを使う
271 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:38:42 ] 解決しました ありがとうございます
272 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:48:22 ] >>267 助かりました。 これからがんばって読みます。 ありがとうございました。
273 名前:デフォルトの名無しさん [2010/11/21(日) 21:40:07 ] [1] 授業単元:プログラミング [2] 問題文 問題1.文字列を入力し、入力された文字列について、次の1~6のすべてを表示するプログラムを作 成しなさい。 1 全文字の合計文字数 2 数字の文字数 3 英大文字の文字数 4 英小文字の文字数 5 空白の文字数 6 その他の文字の文字数 ただし、 ・ 下記の実行結果のように、それらの数値を表示しなさい。 ・ データの読み込みは getchar 関数を使うこと。 問題2.12 個の整数を入力し、それらの 3 倍の数値を表示するプログラムを作成しなさい。 ただし、 ・入力した整数は、4 行 3 列の 2 次元配列に格納しなさい。 ・配列の作成と表示にはループ制御を使用すること。 ・下記の実行結果になるようにしなさい。 Column1 Column2 Column3 ------------------------------------ Row1 : 3 6 9 Row2 : 300 600 900 Row3 : 3000 6000 9000 Row4 : 30000 60000 90000 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限:2010/11/20 [5] その他の制限: あまり難しくないようにお願いします。 繰り返しと条件判断と配列と簡単な関数までぐらいしか授業はやっていません。
274 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 21:50:02 ] >>269 hibari.2ch.net/test/read.cgi/tech/1289715349/87
275 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 21:55:21 ] うぜー
276 名前:デフォルトの名無しさん [2010/11/21(日) 23:10:03 ] >>259 ありがとうございました!とても助かりました!
277 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 07:46:51 ] >>273 問題2だけ。 codepad.org/vx9De2AX
278 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 08:32:07 ] >>273 問題1もやってみた。 C++でgetcharってこういうことかな? codepad.org/7LG4EKWZ
279 名前:デフォルトの名無しさん [2010/11/22(月) 12:53:40 ] >>273 ですが言語はCでした; >>277 >>278 折角やっていただいたのにすみません!; 実行してみましたができませんでした。 普通にgetchar関数を使えと言われたんですが・・・。
280 名前:デフォルトの名無しさん [2010/11/22(月) 13:08:02 ] 1] 授業単元: プログラミング [2] 問題文 #include <stdio.h> #include <string.h> /*strlenのため */ void main( void ) { char mojis[16]; /* 文字列を入れるための配列 */ int i; int n; /* 'e'の数 */ printf("文字列:"); scanf("%15s", mojis ); mojis[15] = '\0'; for( i=0, n=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */ { if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */ { n++; } } printf( "文字数 %d のうち'e'は %d個", strlen(mojis ), n ); return; } このプログラミングを改造 1.strlenを使わずに文字数をカウントする。 [3] 環境 [3.1] OS:Windows、visual studio2005 [3.3] 言語:C [4] 期限:11月22日
281 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:16:54 ] >>280 #include <stdio.h> int main( void ) { char mojis[16]; /* 文字列を入れるための配列 */ int i; int n; /* 'e'の数 */ int len; /* 文字の数 */ printf("文字列:"); scanf("%15s", mojis ); mojis[15] = '\0'; for( i=0, n=0, len=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */ { len++ ; if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */ { n++; } } printf( "文字数 %d のうち'e'は %d個", len, n ); return 0 ; }
282 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:34:32 ] iでいいだろうよw
283 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:40:41 ] >>279 書いてくれてるプログラムはC++だけど 入出力以外はCと同じだから #include <iostream>は#include <stdio.h> std::getchar()はgetchar() std::cout〜の行はprintf() std::cin〜の行はscanf()に置き換えれば動くと思うよ
284 名前:mery [2010/11/22(月) 13:42:18 ] 以前152で 1] 授業単元:プログラミングC [2] 問題文(含コード&リンク): 無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11月21日 [5] その他の制限:1〜50以外の数字が入力されたときの処理は考えなくていいそうです で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。 なぜでしょうか?
285 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:47:00 ] >>282 iだと1引かないといけないのがなんか気持ち悪い
286 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:48:32 ] >>285 え?w
287 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:06:22 ] >>284 >>164 でうまくいきますよ。「実行結果がでませんでした」というのは、どういう状態か、もう少し詳しく教えてください。
288 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:09:00 ] 一瞬で終了してるとかってオチか?
289 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:11:48 ] >>288 入力はできてるところをみると可能性はありそう
290 名前:デフォルトの名無しさん [2010/11/22(月) 15:04:40 ] >>281 ありがとうございました。参考にします。
291 名前: ◆/91kCCQXBo mailto:sage [2010/11/22(月) 15:04:57 ] >>273 jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/42-43
292 名前:デフォルトの名無しさん [2010/11/22(月) 15:58:58 ] >>283 わかりました。間違えてすみません; ありがとうございます! >>291 わざわざありがとうございます!
293 名前:ごばくすみません mailto:sage [2010/11/22(月) 16:00:49 ] >>284 >以前152 >で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。 >なぜでしょうか? 7行目>>164 i=0; を i=0; puts("数値を入力>"); に変えてみようか?
294 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 16:47:17 ] [1] 授業単元: プログラミング [2] 問題文: 変数iに100が入っています、 iとは別に、50,75,55,60というように、ランダムな数字の配列があり、 次にくる数字が前の数字(ここでは60)より、5%大きかったら、 iに1を加算するプログラムを作成。 -5%なら-1で、10%なら+2するといった感じです。5%未満なら加算しません。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:特に無し よろしくお願いいたします。
295 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:07:41 ] 100%なら+20?
296 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:11:47 ] >>294 ランダムな数字の配列に負数とかゼロが出現する可能性はあるのかな?
297 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:12:03 ] >>295 そうです。私の頭じゃさっぱりで・・・if文の乱立しか思い浮かびません。
298 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:13:35 ] >>296 負数やゼロはなしでお願いします。 問題にはありませんが、1〜100あたりの乱数が入ると思っていただければ。
299 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:19:56 ] >>294 #include <stdio.h> int main(void) { int i, j; int data[]={50, 75, 55, 60, 0}; i=100; for(j=1;data[j]>0;j++) { i+=(data[j]-data[j-1])*20/data[j-1]; } printf("i=%d\n", i); return 0; }
300 名前:299 mailto:sage [2010/11/22(月) 17:54:23 ] >>294 >>299 の修正 負数の割り算は気持ち悪いので #include <stdio.h> int main(void) { int i, j; int data[]={50, 75, 55, 60, 0}; i=100; for(j=1;data[j]>0;j++) { if(data[j]>data[j-1]) i+=(data[j]-data[j-1])*20/data[j-1]; else i-=(data[j-1]-data[j])*20/data[j-1]; } printf("i=%d\n", i); return 0; }
301 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 18:42:03 ] >>300 ありがとうございます! こういう式がさっと出てこないんですよね・・・頭悪いのが嫌になる・・・
302 名前:デフォルトの名無しさん [2010/11/23(火) 08:07:57 ] [1] 授業単元:プログラミングC言語 [2] 問題文:診断メーカー風のプログラムを作成しなさい。 名前を入力し、その名前に基づき何かしらの情報を出力。 .txtファイルを読み込み出力できるものにする事。 (オプション)日替わりで表示結果を変更。複数の組み合わせなど。 [3] 環境 [3.1] OS:Linux [3.3] 言語:C++ [4] 期限:2010年11月23日12:00まで 自分の頭では何をどうしていいのかさっぱりわかりません。 ヒントだけでも良いので、どうかよろしくお願いします。
303 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 08:24:05 ] >>302 テキストファイルの中に名前が書かれているの?
304 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:19:39 ] >>302 codepad.org/wdclLmtI
305 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:29:08 ] >>302 codepad.org/sgXIaOtZ
306 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:31:48 ] >>302 脳内メーカーみたいな物を作れって事かな? ならば、先ずは仕様を決めることが必要だ 例えば名前の文字列を1Byteづつ評価し、0〜15なら毒、16〜31なら薬、32〜47なら愛.....等々の評価を与える 最後に全文字が何の評価を与えたかを集計すれば、毒:M%、愛:M%、薬:O%みたいな出力を出せるだろ txtファイルを読むというのは引数にテキストファイル名が指定された場合にはそのファイルに書かれている 名前を標準入力の変わりに使えと言う事だと思う 参考になれば幸いだ
307 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:44:29 ] >>302 #include <iostream> #include <string> #include <cstdlib> #include <fstream> unsigned str2number(std::string str){ unsigned ret=7743; // 必要ならここに日付を数値化したものを足す time(NULL)/(60*60*24) みたいに for(unsigned i=0;i<str.length();i++) ret=ret*37+str[i]; return ret; } int main(void){ std::string name, buf; std::ifstream ifs("data.txt"); std::cout << "名前を入力してください : "; getline(std::cin, name); srand(str2number(name)); std::cout << name << " さんの" << std::endl; while(getline(ifs, buf)){ if(buf[0]=='#'){ std::string theme, result; theme=buf.substr(1); for(int i=1;getline(ifs, buf);i++){ if(buf=="") break; if(rand()%i==0) result=buf; } std::cout << theme << " は " << result << " です"<< std::endl; } } return 0; }
308 名前:307 mailto:sage [2010/11/23(火) 09:45:47 ] >>307 で使用する data.txt の中身 #運勢 大吉 吉 凶 #ラッキーアイテム トイレットペーパー 栓抜き 生卵 ブルーアイズホワイトドラゴン #ラッキーカラー 透明 シルバー
309 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:51:16 ] >>305 argcのチェックを入れるべき。
310 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 14:27:43 ] [1]プログラミング演習 [2] 問題文:codepad.org/Duo48tj4 [3] 環境 [3.1] windows [3.2] visual studio2010 [3.3] C言語 [4] 2010/11/26まで [5]配列、関数、文字列、関数形式マクロ、再帰は習っています。 構造体、ポインタ等は習っていません。 問題文が長く改行が多すぎて書き込めなかったのでcodepaに問題文も書きましたが 問題があったら言ってください。 お願いいたします。
311 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 14:45:14 ] コードパッドに本文を入れるとは斬新w
312 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 15:44:22 ] >>310 codepad.org/XoOdAJHA
313 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 15:59:54 ] >>310 です。 >>312 御回答ありがとうございます。 無事できました。有難うございます。 >>311 あ…やっぱり文章を入れる物ではなかったですか…。
314 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 17:34:14 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 2分法により2の平方根を計算して表示するプログラムを作れ。 解の存在範囲|xb-xa|が矛め決めた値より小さくなったら計算を停止(収束判定)するようにせよ。 *注意 (1)f(xa)とf(xb)の符号が反対であるか否かの判定法を考えよ。 (2)f(xa)とf(xb)が共に同符号になるようなxa,xbが入力された場合に対処すること。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:11月24日 [5] その他の制限: なし よろしくお願いします。
315 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 20:04:09 ] >>314 hibari.2ch.net/test/read.cgi/tech/1289715349/118
316 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 20:40:27 ] >>314 codepad.org/OKPlr6yi
317 名前:デフォルトの名無しさん [2010/11/23(火) 21:13:54 ] 配列とファイルの読み込みです。 たとえば、100個の数字が用意されたファイルを用意します。 そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。 ファイル名は適当で良いです。 平均値を求める計算は関数部分でお願いします。
318 名前:デフォルトの名無しさん [2010/11/23(火) 21:20:32 ] >>317 をPerlでお願いします。
319 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 21:42:51 ] int main(void) { system("cat temp.txt | perl -e \"while(<>){$i+=$_} print $i/100\""); return 0; }
320 名前:デフォルトの名無しさん [2010/11/24(水) 00:37:03 ] [1] 授業単元: プログラミング基礎 [2] 問題文: n 個の整数型データ配列a[i]を、一つの関数に渡して、 その一つの関数内で平均値と分散値を求め、main関数内で 平均値と分散値を参照できるプログラムを作成せよ。 ただし、配列の受渡し、結果の受け渡しにはポインタを利用すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:11月25日まで [5] その他の制限:なし 宜しくお願いします。
321 名前:デフォルトの名無しさん [2010/11/24(水) 00:57:35 ] >>320 #include <stdio.h> void func( int n, int* arr, double* heikin, double* bunsan ) { int i, sum = 0, sum2 = 0; for( i = 0;i < n; i++ ) { sum += arr[i]; sum2 += ( arr[i] * arr[i] ); } *heikin = (double)sum / (double)n; *bunsan = (double)sum2 / (double)n - *heikin; } int main( void ) { int arr[] = {1,2,3,4,5}; double h, b; func( 5, arr, &h, &b ); printf( "heikin = %lf, bunsan = %lf\n", h, b ); return 0; }
322 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:03:21 ] >>321 *bunsanの式の右辺第二項は*heikinの二乗
323 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:07:57 ] [1] 授業単元: 数学 [2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の素数を決定的に因数分解する プログラムを作成せよ [3] 環境 [3.1] OS:Windows、Mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:1月25日まで [5] その他の制限:しらみつぶしに因数分解するプログラムは不可 宜しくお願いします。
324 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:08:52 ] >>322 そうだった *bunsan = (double)sum2 / (double)n - *heikin * *heikin; に修正、*が並ぶと気持ち悪いな
325 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:08:59 ] >>323 おいww
326 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:12:23 ] >>323 素数を決定的に因数分解するって?
327 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:13:36 ] >>326 俺もそれ気になってた 素因数分解って言ってないから実数でもいいのか?だとしたら無数に存在するけど
328 名前:320 [2010/11/24(水) 01:16:09 ] >>321 >>322 >>324 ありがとうございます!
329 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:29:50 ] そもそも10^100桁の数値なんてどうやって扱えばいいのか分からない 情報量として (10^100)/2.41 byte分なんてしらみつぶししようとも思わないw
330 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:36:40 ] 始めたばかりで何が何だかわかりません… [1] 授業単元:メディア基礎 [2] 問題文(含コード&リンク):数式X=[{16/(k*π)^2}^2]がある。 kが整数1〜30の時のXの値をそれぞれ出力するプログラムをCで書きなさい。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日午前十時まで [5] その他の制限: 特に無いと思います。 よろしくお願いしますorz
331 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:39:43 ] 素因数分解って素数に対してはそれ自身が素因数分解された結果だよな だとしたら与えられた素数をそのまま出力するだけで終了じゃね?
332 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:47:23 ] [1] 授業単元: 数学 [2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の合成数を決定的に因数分解する プログラムを作成せよ [3] 環境 [3.1] OS:Windows、Mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:1月25日まで [5] その他の制限:しらみつぶしに因数分解するプログラムは不可 宜しくお願いします。
333 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:56:14 ] サラリーマンの人、やってみようか?
334 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:59:44 ] >>330 #include <stdio.h> int main(void) { int i, k; double PI = 3.14159265358979323846; for(k = 1; k <= 30; k++) { double t = 4 / (PI * k); for(i = 0; i < 2; i++) t *= t; printf("k = %d X = %f\n", k, t); } return 0; }
335 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:01:19 ] >>330 codepad.org/9BCsk9I2
336 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:05:09 ] >>332 codepad.org/Lg7TVQgT
337 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:06:41 ] リーマン予想なんて解明されていないのに、もう解いたのか。 ノーベル科学賞でも受賞できんじゃね?w
338 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:10:26 ] アンカー見て、誰も返信なかったから貼ったけど。 俺がアンカーミスってたとは・・・
339 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:12:22 ] >>337 数学にノーベル賞は無い
340 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:13:26 ] 2^100ならいいけど10^100はちょっとやる気しないなぁ
341 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:21:44 ] >>334 ありがとうございます! ほんとうに助かりました!
342 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:27:07 ] >>339 数学が無いことくらい知っているから敢えて 科学 の面で言ってみたんだが・・・
343 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:29:04 ] 科学も 化学 を文字ってネタで言ったまでw
344 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:30:42 ] >>335 ありがとうございます! あわせて参考にさせていただきます!
345 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:33:21 ] 数学にノーベル賞は無いっておかしくね?
346 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:51:54 ] >>345 ノーベルが数学が苦手だったからだと 代わりにフィールズ賞がある
347 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 04:03:19 ] リーマン予想には賞金もかかってるよ
348 名前:デフォルトの名無しさん [2010/11/24(水) 18:55:55 ] [1] 授業単元: プログラミング [2] 問題文:たとえば、100個の数字が用意されたファイルを用意します。 そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。 ファイル名は適当で良いです。 平均値を求める計算は関数部分でお願いします。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:11月27日まで [5] その他の制限:なし お願いします。
349 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:13:55 ] >>348 hibari.2ch.net/test/read.cgi/tech/1289715349/120
350 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:21:06 ] 簡単な問題に必死だな 巣にこもってろ出てくるなよ、ゴミが
351 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:33:53 ] >>349 ◆QZaw55cn4c >たとえば、100個の数字が用意された たとえば付くから、これは例を言っている(可能性ある)から数字の個数の100個は変化する可能性ある と読み取れない?
352 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:06:55 ] >>351 1) #define N 100 と#define で記述して、コンパイル時に簡単に変えることができるようにしています。 2) 個数が仮に N より少ないデータだったとしても、正常に動くようにしています。 すなわち #define N 100 とした場合に対して、実際にはデータの個数が 5 であってもOKです。 100 を無視することも可能ではありましたが、平均を求める関数を準備する、という点を優先し、 一次近似として「データ数が100」を尊重いたしました。 >>348 問題があればコメントを下さい。随時変更いたします。
353 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:08:27 ] いいから出てくるなって
354 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:17:34 ] こんな入門レベルのものはやりたくないみたいなこと言ってたのになw
355 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:21:13 ] >>352 ◆QZaw55cn4c いや、ここのスレでやり取りするなよ、自分のスレでやれ スレチガイならともかく他所のスレのを無理やり横取りするなよ お前、道徳的に最低ことしていると認識ないだろ
356 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:32:06 ] >>355 にちゃんねるで「道徳的」といわれても。
357 名前: ◆EkRIf9bJPo [2010/11/24(水) 20:32:07 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ------------------- /*hogehoge*/ int main(){/*ggg*/ printf("xxxxxx"); } int a=c; ------------------- 上記のソース総ステップ数5ステップ、実ステップ数3ステップ、 コメント率40%が求められるステップカウンターを作製せよ。 また、以下の条件を提示する。 1.ディレクトリ単位で読み込めるようにする。 2.Cファイルのみのステップ数を求めるようにする。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc 4.3.4 [3.3] 言語: C [4] 期限: 2010年11月25日9:00 [5] その他の制限: なし よろしくお願いします。
358 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:37:13 ] ◆QZaw55cn4c 当然、>>357 も横取りするんだろ
359 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:42:46 ] >>358 お客様としてお待ちしようかと。 でも期限が厳しいですね。
360 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:11:48 ] >>357 ディレクトリ指定も可能って事はサブディレクトリも再帰的に捜査するんだよね まぁ500円くらいなら払う価値は有る問題だと思うよ 総ステップは行数だと思うけど実ステップってのは? if( x ) { i = a + b + c + d; } これは何ステップ? コメント率は ( "/*", "*/", "//" を含むコメント文字数 ) / (総文字数) の事? その場合は改行コードは計算に入れるの? この辺は詰める必要があるね
361 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:21:56 ] >>357 カンマ演算子の扱いとか、do while とかどうする?
362 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:28:43 ] >>357 実ステップは4行になりそうだけど。
363 名前: ◆EkRIf9bJPo [2010/11/24(水) 21:40:11 ] >>360 そうです。サブディレクトリを読み込みます。 実ステップは、コメントのみの行、行区切りだけの行をはずした行数です。 なので、例に出されたソースの実ステップは、3ステップになります。 コメント率に関しては、特に条件が記載されてないです… コメントが記載されている行/全行のことだと解釈しています。 改行コードについても記載がないので、計算には入れることは、考えてないです。
364 名前: ◆EkRIf9bJPo [2010/11/24(水) 21:48:48 ] >>361 すみません。どうするってどういう意味ですか? >>362 問題文がそうだったので…
365 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 22:57:27 ] >>356 2chを楯に自分の糞さから逃げてないか?
366 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:06:24 ] >>363 判定条件はこうかな コメント外部にアルファベット、数字、記号({}を除く)が出現したら実ステップ行(*1) コメントが入っている業はコメント行(*2) 当然、*1 でかつ *2 の行も存在する 例えば#if 0 〜 #endif の間は無効な行だけどこれも実ステップ行扱いで良いんだろうな、さもないと判定が難しすぎる
367 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:07:06 ] 反論してる人もこっちでやってくれんかな。 hibari.2ch.net/test/read.cgi/tech/1289715349/ ◆QZaw55cn4cもこのスレでそういう論議しなければ俺はかまわん。 このスレのそういうレスは双方無視の方向で。
368 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:18:41 ] >>364 たとえば a++,b++; は1ステップか、それとも2ステップか 式は一つだから1ステップでいいとはおもうけど do{ func(); }while(); は2ステップなのか3ステップなのか doがなんかするわけじゃないから2ステップでいいのか? あと、;だけの行はステップとして数えるのか?
369 名前: ◆QZaw55cn4c mailto:sage [2010/11/24(水) 23:31:10 ] >>357 >>363 途中ですが、コードを示します。使い方は、 ./a.out Cプログラムファイル です。 >>357 に例示されたコード例が指定どおりの数字を出す、という点だけで仕様を勝手にきめました。 大方は、>>366 にしたがっています。 これにいろいろ食わせてみて問題があるようであれば指摘ください。 途中ゆえデバッグコードを多数含みますことご容赦を。 codepad.org/ah8s28nT xmalloc() -> malloc() xfree() -> free() xrealloc() -> realloc() に読み替えてください。
370 名前: ◆1reJfOTbE. [2010/11/24(水) 23:35:18 ] www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/ [1] 授業単元:プログラミング実験 [2] ttp://www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/ ここの第2回の課題です。 [3] 環境 [3.1] OS:WindowsXPでコマンドプロンプトやMeadowなどを使っています。 [3.2] gcc [3.3] C [4] 期限:11/26の18:00 [5] その他の制限:特にないと思います。 第1回に比べて急に難しくなったように思え、困っています。 とりあえず課題が何をどうすればよいかわかりません。 手順を教えていただきたいです。よろしくお願いします。
371 名前: ◆EkRIf9bJPo [2010/11/24(水) 23:36:00 ] >>363 その判定条件で大丈夫です。 #if0〜#endifも実ステップ行扱いで良いと思います。 >>368 特にカンマ演算子と、do whileについて何も条件が出されてないので、>>663 さんが提示した判断条件でお願いします。
372 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:40:32 ] >>369 printf("xxx/*nocomment*/xxx");
373 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:54:48 ] >>357 >>372 codepad.org/UuSFtHdy これ以上複雑になれば、今のコードは捨てて状態遷移(オートマトン)で書き直すことを検討します。限界です。
374 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:58:24 ] >>373 問題が結構いい加減だから、都合のいいように解釈すればよいと思う。
375 名前: ◆EkRIf9bJPo [2010/11/24(水) 23:58:29 ] >>369 ありがとうございます! 早速、デバッグを行なったところ、以下のエラーが表示されました。 1.c:8: error: conflicting types for ‘getline’ /usr/include/sys/stdio.h:37: error: previous declaration of ‘getline’ was here よろしくお願いします。
376 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:00:43 ] getlineって◆QZaw55cn4cじゃないかw
377 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:08:00 ] >>373 /* "A" */ 今のロジックだと /* と " のどちらかを優先しなければならないから限界みたいだね
378 名前: ◆QZaw55cn4c mailto:sage [2010/11/25(木) 00:08:29 ] >>357 >>375 codepad.org/fGj6gfV5 >>376 じゃあトリップつけときますか。
379 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:09:38 ] つけなくていいよ
380 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:14:07 ] >>377 そのようですね。 このコード>>378 は捨てましょう。 >>375 このロジックでよければ、ディレクトリを掘るコードをつけます、といっても明日があるので今日はおしまい。 期限を見直してください。あと >>2 をよろしく。
381 名前:377 mailto:sage [2010/11/25(木) 00:15:40 ] >>373 間違えた、駄目なのはこんなケース printf( "/* a */" ); /* "a */ printf( "/* a */" ); 改行で終わらない行は無視してるみたいだけどそんな必要有るのかな
382 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:24:35 ] ありゃ、テレビ見てたら盛り上がってるな。 乗り遅れたし、明日早いし。寝るくぁ。
383 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:07:35 ] >>370 非常に丁寧な教材ですね。 難しいところを素直に先生に聞いてみるのはいかが? このスレは回答を提示することで若い芽を摘み取る非情な場所であることをお忘れなく。
384 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:12:23 ] >>383 ワロスw 確かにその通りかもw
385 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:48:20 ] >>370 dequeだけ作っといた フィルタは気が向いたらやるかも codepad.org/o9fmgNBz
386 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:52:12 ] >>370 の講義資料より引用 『インターネット上に匿名で書かれた情報は信じるな!!』
387 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:56:29 ] 信じるな!とは言い過ぎだが利用は自己責任で、って位が落としどころかな
388 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 02:21:45 ] >>370 多分デジタルディレイの実装ではないかと思われる queue.c はFifoリングバッファだろう Fir_p.c のメインループ内では以下を行うんだろうな for( ディレイ時間分ループ ) enqueue( 0 ); while(入力ファイルから short 一つを x に読み込む) { enqueue( x ); y = dequeue() x に y を重み付き加算 出力ファイルに x を書き込む } これでシングルディレイが付加された音声データ(wavファイル)が作成できるだろう Fifo リングバッファをマルチインスタンスに修正し複数のリングバッファを使用すれば多段ディレイも作成できる また enqueue( x ); の位置を加算後に持っていけば減衰率によっては自然な残響を得られるかも知れない
389 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 03:32:08 ] >>385 修正 codepad.org/uKnnFD1v
390 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 05:03:09 ] 話が繋がっていかない課題やレポートはつまらないけど 各論へのイントロになってる課題は面白いと思う
391 名前:デフォルトの名無しさん [2010/11/25(木) 11:59:14 ] [1] 授業単元:プログラミング実験 [2]1~30の整数の範囲で、3辺a, b, c(cを斜辺)の三角形のうち、直角三角形が成立する場合のa,b,c辺をすべて見つけて配列 に入れる。その後、配列をもとにプログラムを作成しなさい。 ただし、a, b, c辺を見つけて配列に入れる機能は関数にすること。 [3] 環境 [3.1] OS:linux [3.2] gcc [3.3] C [4] 期限:11/25 [5] その他の制限: よろしくお願いします。
392 名前:デフォルトの名無しさん [2010/11/25(木) 12:01:44 ] >>391 ですが、このプログラムをもとにして作っていただけますか #include<stdio.h> #define N 30 int main(void) { int a,b,c; int p[N][3]; int n; n = 0; for(a=1;a<=N;a++){ for(b=a;b<=N;b++){ for(c=b;c<=N;c++){ if(a*a + b*b == c*c){ p[n][0] = a; p[n][1] = b; p[n][2] = c; n = n + 1; } } }
393 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 12:33:21 ] >>391 問題読むと直角三角形が成立する辺を配列に入れた後何かするようだけど 配列に入れて表示するプログラム?
394 名前:デフォルトの名無しさん [2010/11/25(木) 13:13:35 ] >>393 多分そうだと思います
395 名前:デフォルトの名無しさん [2010/11/25(木) 13:18:29 ] すみません>>391 の問題文に追加です; a <= b <= cを仮定してください。
396 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:26:39 ] for(a=1;a<=N;a++){ for(b=a;b<=N;b++){ for(c=b;c<=N;c++){ の時点でa <= b <= cを満たしてるはずなのに更に仮定するの?
397 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:31:59 ] >>396 その部分をいじるなってことだろ
398 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:36:13 ] >>391 #include <stdio.h> #define N 30 int f(int p[][3], int size) { int a, b, c, n = 0; for(a = 1; a <= size; a++) { for(b = a; b <= size; b++) { for(c = b; c <= size; c++) { if(a * a + b * b == c * c) { p[n][0] = a; p[n][1] = b; p[n][2] = c; n = n + 1; }}}} return n; } int main(void) { int p[N][3], i, n; n = f(p, N); for(i = 0; i < n; i++) printf("%d %d %d\n", p[i][0], p[i][1], p[i][2]); return 0; }
399 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:36:48 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):整数型1次元配列に対して平均値を計算する関数を書き、 {1, 4, 2, 8, 1, 5} の平均値 3.5 を求めよ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:cygwin [3.3] 言語: C++ [4] 期限:2010 11/27 [5] その他の制限:int型からdouble型に書き換えるとのこと、すいません。ここからしてあまり理解できていません。
400 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:45:06 ] >>399 codepad.org/58K6ytHA
401 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 14:06:24 ] >>399 こんなんしたらさすがに怒られるかな? #include <iostream> #include <numeric> int main() { int a[] = {1, 4, 2, 8, 1, 5}; size_t SIZE = sizeof(a) / sizeof(a[0]); double ave = std::accumulate(a, a + SIZE, 0.0) / SIZE; std::cout << ave << std::endl; }
402 名前:370 ◆1reJfOTbE. [2010/11/25(木) 16:05:56 ] >>385-389 課題3−1ですが、作っていただいたコードで、コマンドプロンプトで gcc -Wall -c queue.c とやって、queue.oが作られました。 この課題は後、 gcc -Wall -o FIR_P FIR_P.c queue.o とやれば完了でよいのでしょうか? そして>>388 の中身がわかる方いませんか? 分割コンパイルというものは理解できたと思うのですが、 最初の式の説明のところからやっていることがまだ理解できていなく、 どうすればいいかわかりません。 それと関連プログラム4種類をダウンロードと書いてありますが、 Makefileに関しては講義資料22ページの説明が出てきますが、 ダウンロードができません。コピーしてテキストファイルとして 保存ということでしょうか?
403 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 16:30:35 ] Makefileは拡張子の部分消して 関連ファイルと同じところに保存して % makeかな?でまとめてコンパイルしてくれる 追加したファイルもMakefileに追加すればそれもコンパイルできる
404 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 16:43:08 ] >>402 が解らないのは C言語 実験のデジタルフィルタ の両方なの? デジタルフィルタは理解できるがC言語は駄目とか?
405 名前: ◆L.eSCJEwZk [2010/11/25(木) 16:48:34 ] >>404 デジタルフィルタは、講義資料を見ていますがまだ理解できていません。 C言語はできるつもりでしたが、>>388 の日本語で書いた部分をやろうと 思ったのですがどうすればよいかわかりませんでした。 基礎はできると思うのですが、ファイルのオープンなどでてくると 危ないです。
406 名前: ◆1reJfOTbE. [2010/11/25(木) 16:49:17 ] ↑トリップ間違いました、自分で間違いないです。
407 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 17:28:53 ] 1回目の課題もファイル操作でてるけど そっちがわかったならこっちもたぶんコードわかると思うんだけど >>388 の日本語で書いてある部分のどこがわからないのかな?
408 名前:388 mailto:sage [2010/11/25(木) 18:09:56 ] >>405 変数名を直して一部加筆 short int y; for( ディレイ時間分ループ ) ←*1 enqueue( 0 ); while(入力ファイルから short 一つを data に読み込む) { ←現行のソースに有る enqueue( data ); y = dequeue() data に y を重み付き加算 ← *2 出力ファイルに data を書き込む ←現行のソースに有る } つまり君が書くべきは *1 と *2 だけなんだけどな ディレイ時間は argv[1] で与えられる delay だ、これがどんな単位で与えられるか又、サンプリングレートが幾らか不明なので 必要なループ回数が判らない 例えば delay の単位がmsecでサンプリングレートが20msec なら必要なループ回数はdelay / 20 という事になる 重みは argv[2] で与えられる weight だ、これも%で与えられるのか小数で与えられるのか判らないけど小数で与えられるなら *2 は data += (short int)( (double)y * weight ); となる >>383 が書いた様に、若い芽を摘み取りたくなかったので抽象的な表現を行ったのだけど伝わらないなら仕方がないだろう
409 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 18:25:20 ] [1] 授業単元: プログラミングおよび演習 [2] 問題文(含コード&リンク): 1.解答例のカレンダー(下にリンクはってます)について、dayofweek()を再帰で書き直せ。 ◦ある月の1日の曜日は、前の月の日数と1日の曜日から計算できる ◦ある年の1月1日の曜日は、前の年の日数と前の年の1月1日の曜日から、あるいは、その年の日数と次の年の1月1日の曜日から計算できる ◦2000年1月1日は土曜日である 2.このプログラムについて、任意の年月についてdayofweek() の呼び出し回数が何回になるかを理論的に考察せよ。また、呼び出し回数を計測し、結果が実際に理論と合致しているかを確認せよ。 2.ヒント:呼出し回数を数えるためにグローバル変数を使用する [3] 環境 [3.1] OS: Windows [3.2] gcc [3.3] C [4][2010年12月1日08:45まで] [5]現在再起を習ったばかりで複雑なものは習っていません。 解答例のカレンダー↓ codepad.org/4rnf6hRf
410 名前:389 mailto:sage [2010/11/25(木) 19:02:18 ] >>405 ファイルのオープンなんかより生ポインタのが千倍危ないんだけどね codepad.org/E3nlvpXW
411 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 19:48:02 ] >>410 元データを weight 分減少させる必要は無いと思うよ
412 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:46:57 ] >>409 再帰?謎過ぎる問題だな
413 名前: ◆EkRIf9bJPo [2010/11/25(木) 20:47:26 ] >>375 です。 期限直しました。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ------------------- /*hogehoge*/ int main(){/*ggg*/ printf("xxxxxx"); } int a=c; ------------------- 上記のソース総ステップ数5ステップ、実ステップ数3ステップ、 コメント率40%が求められるステップカウンターを作製せよ。 また、以下の条件を提示する。 1.ディレクトリ単位で読み込めるようにする。 2.Cファイルのみのステップ数を求めるようにする。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc 4.3.4 [3.3] 言語: C [4] 期限: 2010年11月27日9:00 [5] その他の制限: なし
414 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:49:02 ] >>408 波形データ a[123]={〜〜〜〜〜〜〜〜〜〜〜}; 波形データ b[123]; 今が、1から123の間、くりかえし { b[今] = a[今] ・ 係数今用 + a[1こ過去] ・ 係数過去用1 + a[2こ過去] ・ 係数過去用2 + a[3こ過去] ・ 係数過去用3 + . . . 今++; } ってやると、できあがる波形データ b が、 もんもんした音になったり、キラキラした音になったり、シャリシャリした音になったり、音質が変わっておもしろい。ってことじゃないかしら? ようするに。 はて? すごい単純だけど、たとえば単純に b[今] = a[今] + a[1こ過去] ってやるだけでも、波形が、こもった感じの音に変化したりして、おもしろいですよね。ふしぎ〜♪
415 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:52:33 ] >>414 そう。単に過去のデータを足しこむだけで、いろんな特性を持つ回路(フィルタなど)になるのです。 z 変換またはラプラス変換でググッてくだしゃあ。
416 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:59:12 ] >>409 何か汚いけど・・まあいいや codepad.org/ldxwLKBl www5a.biglobe.ne.jp/~accent/kazeno/calendar/1873.htm
417 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 21:00:50 ] >>416 表示直した codepad.org/g9j514Dw
418 名前: ◆EkRIf9bJPo [2010/11/25(木) 21:02:30 ] >>380 大変申し訳ないのですが、読んでもロジックがわからなかったので自分で作りました。 codepad.org/JhtCuYqO www.play21.jp/board/formz.cgi?action=res&resno=43608&page=&lognum=136&id=dixq&rln=44494 上記のサイトを参考にしました。 方法3 コメントを削除したファイルを中間ファイルとして保存し、再度読み込み、行数を数える方法を行いました。 残っている課題が二つあります。 ・ディレクトリ指定してCファイルを求める。 ・コメント率を算出する。 大変、勝手なことだと思いますがこのソースをベースに作製お願いします。
419 名前:409 mailto:sage [2010/11/25(木) 21:15:23 ] >>412 なんかしたに張り付けてあるリンクのものを再起を使用して書き直すみたいです。 もうすこしコンパクトになるとか・・・ 課題2はよくわかりません。 >>416 >>417 すみません。 再起はどこでどういう風に使用したらいいのでしょう?
420 名前:409 mailto:sage [2010/11/25(木) 21:18:32 ] >>409 for のところを再起にやればいいとかなんたら・・・・。
421 名前:416 mailto:sage [2010/11/25(木) 21:36:54 ] >>409 自分の定義に自分と同じ構造を持つ構造は再帰的に定義できる さっきの例なら、ある月の一日の曜日は前の月の一日の曜日で求められる 前の月の一日はそのまた前の一日の曜日で そのまた前も・・・ってな感じでずっと続く ある状況で特殊化すればそこで再帰は終了する さっきのなら2000年の1月で特殊化した
422 名前:416 mailto:sage [2010/11/25(木) 21:42:00 ] >>409 ついでにちょっと整理しといた codepad.org/Q7wmR5Wy
423 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 22:04:51 ] カレンダー(カレンダー)C言語のソースが 2ちゃんのスレに書き込まれるぅ〜♪ カレンダー(カレンダー)過ぎ行く時の中で 俺はソースを書いて彷徨うんだろう♪
424 名前:409 mailto:sage [2010/11/25(木) 22:12:19 ] みなさんありがとうございます。 recurse みたいなコード?は使わないのでしょうか? あと漸か式を考えたりなど・・・ よくわからない質問をしてしまってばっかりですみません><
425 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 22:35:14 ] recurse って再び呪うのか?
426 名前:370 ◆1reJfOTbE. [2010/11/25(木) 22:54:27 ] ご解答いただいている方、本当にありがとうございます。 今日学校でレポートをすこしずつ進めていたのですが、 学校のパソコンや携帯では書き込みができなく、自宅のパソコンでは 環境が整っていなく実験ができないので、今のうちにやることを 把握しておいて明日学校に行ったらレポートを一気にやりたいと思って います。なので、残りやるべきことを把握したいと思います。 課題3−1は、FIR_P.cとqueue.cを作っていただいたのでおkですが、 課題3−1(続)に、queue.c, FIR_P.c, FIR_N.c, IIR_P.c, IIR_N.cを実装せよ とのことですが、これは3−1で作ったので終わりではないということですよね。 それに、FIR_N, IIR_P, IIR_Nという名前は初めて出てきたのですが、 これはFIR_P.cを書き換えてそれぞれの名前で保存しろということでしょうか? プラスMakefileの修正ができれば、課題3−2以降はその作ったプログラムを 使って実行→聞いてみて考察〜などでできると思いますので よろしくお願いします。
427 名前:デフォルトの名無しさん [2010/11/25(木) 23:14:03 ] [1] 授業単元:アルゴリズムとデータ構造 [2] 問題文(含コード&リンク):入力された2分木を中央順で走査するプログラムを 再帰を使わずに書け。 自分で書いたプログラム main.c codepad.org/GafORTG4 STACK1.c codepad.org/9JwtZ1J7 STACK2.c codepad.org/jwPHSuzG Item1.h codepad.org/32bgVncE Item2.h codepad.org/rk12GKcF STACK1.h codepad.org/CI43AnzH STACK2.h codepad.org/XJ1fy5MY 上三つをコンパイルして実行します。 コンパイルは通りますが、実行でsegmentation fault がでてしまいます。 main.cの最後のwhile文のところを修正していただけないでしょうか。 お願いします。 [3] 環境 [3.1] OS: macosX [3.2] gcc [3.3] 言語: C [4] 期限: 明日の午後一時まで。 [5] その他の制限:とくになし。
428 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:15:49 ] >>426 FIRが遅延時間前の入力信号を加算するのに対し、IIRは遅延時間前の出力信号を加算するものの様だ ならば、FIRの encueue() するタイミングを加算後に移動させれば IIR になるのではと思う PとNはポジとネガの意味かな?ならばNは重み付け加算を重み付け減算にすれば良いのだろうか?
429 名前: ◆QZaw55cn4c mailto:sage [2010/11/25(木) 23:17:17 ] >>357 >>413 とりあえず動くものをあげときます。 codepad.org/o1GYCrrO
430 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:29:39 ] >>418 字句解析は作った人以外には理解が極めて困難、という面があります。 >>378 や >>429 も人に理解していただくような努力を微塵もしなかったことは申し訳ない。 本当に正確なものを作るのなら(そして人に理解していただくようにするのなら)、全然別のアプローチ(たとえば状態遷移でとらえるなど)をとらなければならないことは自覚しておりましたが、手が先に動いてしまいました。 (なお、>>429 は >>378 よりもちょっとだけ精度がよくなっております。) というわけで >>418 を追いかける余裕がありません。すみません。
431 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:42:02 ] >>427 嫌がらせみたいに汚いコードだな、無意味な typedef とか控えろよ 問題なのは while() 内で1回pop()、3回push() を行っている事にあるんじゃないかな 必然的にスタックは2つづつ増えるから最初に確保した領域をはみ出して segmentation fault となる そもそも push() には確保した領域をはみ出さないかのチェックが必要だが実装されていないし 何をしたいのか不明なコードだけど、毎ループで pop() されるのは head と 1 で head と 1 が3回push() される 当然、無限ループとなり segmentation fault で終わるプログラムだな
432 名前:デフォルトの名無しさん [2010/11/25(木) 23:59:54 ] [1] 授業単元: 情報処理概論T [2] 問題文(含コード&リンク): 大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。 ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [無期限] [5] その他の制限: if、while、for、配列、多重ループ、関数まで既習です。 よろしくお願いします!
433 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:07:30 ] >>432 さいころは6面でいい? 負数の扱いは?
434 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:09:08 ] こまけぇこたぁ〜良いんだよ、それなりのものが出来れば
435 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:16:21 ] >>431 適切なアドバイスどうもありがとうございます。 間違っていいたところも直せ、理解も深まりました。 ほんとうにありがとうございますm(_ _)m
436 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:18:52 ] >>432 #include<stdio.h> #define MAX(a, b) ((a)>(b)?(a):(b)) #define MIN(a, b) ((a)<(b)?(a):(b)) int main(void) { int i_min, i_max, j_min, j_max, i, j, k; int m=0; printf("m を入力してください : "); scanf("%d", &m); i_min=MAX(1, m-12); i_max=MIN(6, m-2); for(i=i_min;i<=i_max;i++) { j_min=MAX(1, m-i-6); j_max=MIN(6, m-i-1); for(j=j_min;j<=j_max;j++) { k=m-i-j; printf("大:%d 中:%d 小:%d\n", i, j, k); } } return 0; }
437 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 01:11:03 ] >>432 >表示を工夫して見やすい出力にすること。 ということで>>436 みたいな効率化は図っていない ideone.com/ojVVa
438 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 02:05:41 ] >>432 codepad.org/j6ll07Ay いちまん回さいころふって、なにがでるかしらべてみて、しらべる☆ ためしてガッテンたいぷ♪ たまにまちがえちゃうけど、気にスンナ!