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/
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