1 名前:デフォルトの名無しさん [2008/02/04(月) 23:32:19 ] あなたが解けない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++の宿題を片付けます 103代目 pc11.2ch.net/test/read.cgi/tech/1200318925/
76 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:36:21 ] >>75 全角スペースを使うな
77 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:37:13 ] THEバカス
78 名前: ◆TQgM1tAAxo [2008/02/08(金) 23:00:19 ] >>76 どうもすいません。 全角を消した結果でたエラーを載せます! 「error C2552: 'g_tp' : 初期化子リストによる個別の識別子の初期化に誤りがあります。 error C2065: 'CLIENT_SIZE' : 定義されていない識別子です。 error C2228: '.x' : 左側がクラス、構造体、共用体ではありません。 error C2228: '.y' : 左側がクラス、構造体、共用体ではありません。 error C3861: 'CLIENT_SIZE': 識別子は、引数依存の照合を使用しても見つかりません。 error C2552: 'g_tp' : 初期化子リストによる個別の識別子の初期化に誤りがあります。 error C2065: 'CLIENT_SIZE' : 定義されていない識別子です。 error C2228: '.x' : 左側がクラス、構造体、共用体ではありません。 error C2228: '.y' : 左側がクラス、構造体、共用体ではありません。 error C3861: 'CLIENT_SIZE': 識別子は、引数依存の照合を使用しても見つかりません。」 ちなみに、すべてCPoint g_tp = {CLIENT_SIZE.x / 2, CLIENT_SIZE.y / 2}; の文でエラーがでています!
79 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:28:18 ] >>78 >>59 はコードの一部だから、あれだけでは動かないよ。 そもそも問題は、「〜アニメーションを作成せよ」なのか 「〜に書くべき記述を答えよ」なのか、どちらだ?
80 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:34:51 ] >>78 まさかとは思うが、>59の一行目をコピーしていないって落ちじゃないよな?
81 名前: ◆TQgM1tAAxo [2008/02/08(金) 23:53:28 ] >>80 1行目を記述してもエラーがでてしまいます(´・ω・`) ちょっとエラー内容がかわったのでまた載せます! 「error C2552: 'CLIENT_SIZE' : 初期化子リストによる個別の識別子の初期化に誤りがあります。 error C2552: 'g_tp' : 初期化子リストによる個別の識別子の初期化に誤りがあります。 'CPoint' : ベースを含む型はアグリゲートではありません。 error C2039: 'x' : 'CSize' のメンバではありません。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltypes.h(26) : 'CSize' の宣言を確認してください。 error C2039: 'y' : 'CSize' のメンバではありません。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atltypes.h(26) : 'CSize' の宣言を確認してください。 error C2552: 'CLIENT_SIZE' : 初期化子リストによる個別の識別子の初期化に誤りがあります。 error C2552: 'g_tp' : 初期化子リストによる個別の識別子の初期化に誤りがあります。 error C2039: 'x' : 'CSize' のメンバではありません。 error C2039: 'y' : 'CSize' のメンバではありません。」 ちなみに、課題は授業で作ったMFCアニメーションデータを改変し、マウスクリックで キャラクターを自由に移動させるようにしろというものです。 なので、onDrawなどの関数やその他のものはそろっています。 キャラクターを上下左右に動かす方法は分かるのですが、 クリックされた場所に動かすという記述方法が分からなくて困っています(´・ω・`)
82 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:56:29 ] まさかとは思うが、お前馬鹿だろw
83 名前: ◆TQgM1tAAxo [2008/02/09(土) 00:04:35 ] >>82 下にキャラクターが進むときはOnTimerに y+=10;(yはキャラクターのいるy座標値) と記述すればうごくのですが、クリックしたとこにうごかすのがどうしてもできなくて・・(´・ω・`) スムーズに動かず、いっきにクリックした位置に移動してしまったりの失敗の繰り返しです(´・ω・`) どうしたら良いでしょうか? ほんと頭悪くてすいません(´・ω・`)
84 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:04:57 ] >>81 キャラクターをクリックされた場所に動かすという記述方法は分かるのですが、 onDrawなどの関数やその他のものが分からなくて困っています(´・ω・`)
85 名前: ◆TQgM1tAAxo [2008/02/09(土) 00:09:43 ] >>84 どういうことですか?(´・ω・`) どうしたら良いのでしょうか?(´・ω・`)
86 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:13:45 ] 一挙手一投足、全て教わらないとできないなら、最早他人から教えてもらう必要なんてないだろ。
87 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:18:33 ] >>50 BAckermann関数 キャッシュのやつを作ってみたので一応添付 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6022.txt ショートカットを加えると確保領域が少なくすむのは何故なんだろ・・・・
88 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:28:13 ] 昨日59を書いたものだが、まさかこんな事になってるとは… OnLButtonUpとOnTimerに書くべき記述を答えれば良いだけじゃなかったのか DELAYの値をもっと大きくしてみろ もしくは int OnTimer(UINT nIDEvent) { if (TIMER_ID == nIDEvent) { //X軸方向の移動 if (g_cp.x < g_tp.x) {g_cp.x++;} else if (g_cp.x > g_tp.x) {g_cp.x--;} //Y軸方向の移動 if (g_cp.y < g_tp.y) {g_cp.y++;} else if (g_cp.y > g_tp.y) {g_cp.y++;} } } で代替。コピペじゃなくて自分で打つように あと、タイマーイベントの間隔を遅めにしてくれ ちなみに、cp=キャラクターポジション、tp=ターゲットポジションの略ね OnTimerとかってMFCのパーツだよな?使ってないからサッパリ思い出せんw
89 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:46:43 ] >>88 それを>>58 が理解できると思うか? またエラーが出るって言ってくるのがオチだろ。
90 名前: ◆TQgM1tAAxo [2008/02/09(土) 05:43:14 ] >>88 丁寧にありがとうございます!でも、もう一回考えて、ちょっと違う方法ですが自分で解決しました。 どうもありがとうございます >>89 考えたらできたわ
91 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:38:03 ] 最初から考えろ馬鹿。
92 名前:デフォルトの名無しさん [2008/02/09(土) 12:29:51 ] すいません。 教えて下さい。 0x1234を0x123fにするには (28) と (29) を行う。その演算子の 記号は (30) である。 また、上位1バイトを0にし、下位1バイトをそのままに するには、 (31) と (32) を行う。その演算子の記号は (33) である。 ビットを反転するには、 (34) と排他的論理和を行うか、ビット演算子の反転 を使用する。そのビット演算子(反転)の記号は (35) である。 (28)の解答群 ア 0x0000 イ 0x000F ウ 0x1230 エ 0xfff0 オ 0xffff (29)、(32)の解答群 ア 論理和 イ 論理積 ウ 排他的論理和 エ 否定論理和 オ 否定論理積 (30)、(33)、(35)の解答群 ア & イ | ウ ^ エ ~ オ ! (31)の解答群 ア 0x0001 イ 0x000f ウ 0x00ff エ 0xf000 オ 0xff00 (34)の解答群 ア 0x0000 イ 0x0001 ウ 0x1111 エ 0x1010 オ 0xffff
93 名前:デフォルトの名無しさん [2008/02/09(土) 12:30:33 ] キャスト演算子は、式の結果を一時的に指定したデータ型に変更するものである。例 えば、double型の変数aの小数点以下を切り捨てるには、 (36) と記述する。 キャスト演算子は (37) であり、算術演算子より優先順位が (38) ため、int型の変数a、bの除算を実数の精度で計算し、その結果をdouble型の変数c に格納する記述は (39) である。 また、キャスト変換はポインタにも有効であり、int型の配列の内容を1バイトずつ 参照することができる。 なお、次のプログラムの出力結果は処理系によって異なる場合があるが、本問では考 慮しないものとする。 #include <stdio.h> main() { int a[] = {0x01020304, 0x05060708}; int i; char *p; p = (40) ; for (i = 1;i <= 8; i++) printf(゙%x゙,*p++); }
94 名前:デフォルトの名無しさん [2008/02/09(土) 12:31:51 ] (36)の解答群 ア int a イ int (a) ウ (int a) エ (int) a オ a(int) (37)の解答群 ア 単項演算子 イ 関係演算子 ウ 比較演算子 エ 論理演算子 オ 条件演算子 (38)の解答群 ア 高い イ 低い (39)の解答群 ア c = a / b イ (double)c = a / b ウ c = (double)a / b エ c = (double)(a / b) (40)の解答群 ア char a イ char *a ウ (char) a エ (char) *a オ (char *) a
95 名前:デフォルトの名無しさん [2008/02/09(土) 12:32:22 ] 文が見づらくてすいません。m(_ _)m どなたか解答をお願いいたします。
96 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:35:15 ] >>95 ttp://pc11.2ch.net/test/read.cgi/tech/1201083176/808
97 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:58:33 ] すいませんが、>>74 に答えていただけませんか?
98 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:17:07 ] >>97 ・yearとmonthを入力できるようにする。 ・1日の曜日を求める。
99 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:29:41 ] >>98 ありがとうございます。えっと、つまり…どの部分をどう変えればいいんでしょうか…orz
100 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:35:24 ] >>99 int year = 2008; int month = 2; int first_dow = 5; /* 1日は金曜日 */ を変えればいい。 year, monthはそれぞれscanf()か何かで入力すればいいし、first_dowは問題に書いてある通り。 >(課題では,前回のプログラムを使って1日の曜日を計算する) つまり、「前回のプログラム」がないと作れない。
101 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:37:59 ] >>100 の優しさに発情した
102 名前:デフォルトの名無しさん [2008/02/09(土) 13:55:43 ] ありがとうございます。 すいません これもできれば... 問? 関数定義に関する次の記述中の()に入れる適切な字句を解答群の中か ら選べ。なお、同じ解答を複数回使用してもよい。 関数の基本構成は次のようになっている。 記憶クラス 型 関数名(引数の型と名前) { 宣言と文 } 関数の記憶クラスには、その関数をほかのモジュールから参照できる (1) 、 その関数をほかのモジュールから参照できない (2) があり、特に指定しない場 合は (3) になる。 関数の型は、その関数が (4) 文で戻すデータの型である。また、特殊な型と して (5) があり、戻り値をもたないことを示す。型が (6) の戻り値 を使用する場合には、省略することができる。 関数でデータのやりとりをするには引数を用いる。関数の定義側の変数を (7) と呼び、この関数を呼びだす側の引数を (8) と呼ぶ。 (1)〜(3)、(5) (6)の解答群 ア char イ extern ウ int エ static オ void (4)の解答群 ア break イ continue ウ exit エ goto オ return (7) (8)の解答群 ア 定数 イ 仮引数 ウ 元引数 エ 実引数 オ ポインタ変数
103 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:04:51 ] >>102 (1)extern (2)static (3)extern (4)return (5)void (6)int (7)仮引数 (8)実引数
104 名前:デフォルトの名無しさん [2008/02/09(土) 14:06:27 ] 問? ファイル入出力に関する次の記述の正誤を、解答群の中から選べ。 (9) fopen関数のエラー時の戻り値は NULL である。 (10) ファイルのオープンモードを ゙a゙ (追加書き込み)と指定した場合、ファイルが存 在しない場合はエラーとなる。 (11) プログラム中に fopen関数を使用した場合、 fclose関数を記述していないとコ ンパイルエラーが発生する。 (12) fscanf関数のエラー時の戻り値は NULL である。 (13) fgets関数のファイル終了時の戻り値は EOF である。 (14) fgets関数は読み込んだ文字列の最後に ゙\0゙ を付加する。 (15) fgetc関数及びgetc関数は、ファイルから1文字ずつ読み込む。 (16) ungetc関数はファイルから読み込んだ文字を、まだ読んでいなかったものとし て扱う。 解答群 ア 正しい イ 誤り
105 名前:デフォルトの名無しさん [2008/02/09(土) 14:08:55 ] どなたか 問7 問8の解答を教えていただけると ありがたいのですが..
106 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:11:01 ] >>104 (9) ○ (10) (多分)× (11) × (12) (0がNULLと同等に扱えるから)○ (13) × (14) ○ (15) ○ (16) (なんか表現が微妙だが)○
107 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:15:39 ] >>106 (12) について fscanf は入力エラーのとき EOF を返す
108 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:15:48 ] ungetcはストリームに戻すというイメージがある
109 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:36:44 ] >>100 ありがとうございます!!本当に助かりました!
110 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:40:35 ] { *buffer = '0' + ((char)(data >> 8) & 0x0F); if(((data >> 8) & 0x0F) > 9) *buffer += 7; buffer++; *buffer = '0' + ((char)(data>>4 ) & 0x0F); if(((data>>4 ) & 0x0F) > 9) *buffer += 7; *buffer++; *buffer = '0' + ((char)data & 0x0F); if((data & 0x0F) > 9) *buffer += 7; } これは、10ビットバイナリ値を3桁の16進数へ変換するらしいのですが これを4桁の10進数にするには、どのように書けば良いのでしょうか。 cは全くの初心者で、本来はで基礎から勉強すれば良いのですが、すぐに この部分だけのソースが欲しいのです。だれか、お助けください。
111 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:46:49 ] >>110 sprintf(buffer, "%04d", data);
112 名前:110 mailto:sage [2008/02/09(土) 14:55:51 ] >>111 ありがとうございます。こんな早く対応して頂けるなんて感謝です。 おかげさまで4桁の数字が表示されました。 ただ、プログラム全体としては、桁が増えた分動かなくなってしまいました。 もう少し、頑張ってみます。 今後とも、どうぞよろしくお願いします。
113 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:55:58 ] >>110 { int i; for (i = 12; i >= 0; i -= 4) *buffer++ = "0123456789ABCDEF"[(data >> i) & 15]; }
114 名前:デフォルトの名無しさん [2008/02/09(土) 14:56:41 ] 問7 プログラムの説明 このプログラムの目的は、コマンドラインより入力されたビット列を15ビットごとに パリティビットを付加し、16進数で表示することである。 コマンドラインから渡される引数には、ビット列のほかに偶数パリティ、奇数パリティ を選択するパラメータがある。 ビット列は255ビット以内の任意の長さであり、15ビットの倍数に満たない場合は、 足りないビットには0を挿入する。 なお、コマンドラインの入力に間違いはないものとする。 コマンドラインの書式 プログラム△ビット列(任意の長さ)△パリティの指定
115 名前:デフォルトの名無しさん [2008/02/09(土) 14:59:55 ] パリティの指定 0 偶数パリティ 1 奇数パリティ ※「△」は1文字以上の空白文字を示す。 コマンドラインの例 (プログラム名が「toi7」の場合) toi7 0101001100101010001010010010101011010 0 処理手順 @ コマンドラインより渡されたビット列を配列にコピーする。 A 配列に格納された文字列を、先頭から1文字ずつ取り出し以下の処理を行う。 ・取り出した文字(ビット)の1の個数をカウントする。 ・15ビットの数値に変換するために、変換後の数値を左に1ビットシフトし、数値 に変換した文字(ビット)とのビット演算を行う。 B15文字ごとに以下の処理を行う。 ・変換後の数値を左に1ビットシフトする。なお、ビット列が15文字に満たない場合は、足りない分左にシフトする。 ・カウントした1の個数から、パリティビットを付加する。偶数パリティであれば 1の個数が偶数になるように、奇数パリティであれば奇数になるようにパリティ ビットを付加する。 ・パリティビットを付加した変換後の数値を16進数で表示する。
116 名前:110 mailto:sage [2008/02/09(土) 15:08:17 ] >>113 ありがとうございます。 4桁の数字が、ちゃんと表示されました。 ただ、10進数の表示をしたいのですが英字まで表示されてしまいます。 引き続き、アドバイス頂けた助かります。 ほんと、すみません。
117 名前:デフォルトの名無しさん [2008/02/09(土) 15:18:50 ] 実行結果 (プログラム名が「toi7」の場合) C:\>toi7 0101001100101010001010010010101010010 0 532B 1495 A401 ※「C:\>」はコマンドプロンプトを示す。
118 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:22:36 ] >>117 #include <stdio.h> int str2bit(char *str, char *pal, int , int); int main(int argc, char **argv) { int i = 0; int cnt = 0; int hyoji = 0; int res = 0; char array[256]; memset(array, 0, sizeof(array)); memcpy(array, argv[1], strlen(argv[1])); for ( i = 0 ; i < strlen(array); i++ ) { if ( i && !(i % 15) ) { /* 区切り */ /* bit化 */ res = str2bit(array, argv[2] , hyoji * 15, strlen(array)); fprintf(stdout, "0x%4x\n", res); hyoji++; } } res = str2bit(array, argv[2], hyoji * 15, strlen(array)); fprintf(stdout, "0x%4x\n", res); return 0; }
119 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:24:15 ] >>118 の続き int str2bit(char *str, char *pal, int cur, int max) { int res = 0; int i = 0; int cnt =0; char t_byte[16+1]; memset(t_byte, 0, sizeof(t_byte)); for ( i = 0; i < 15; i++ ) { t_byte[i] = ( cur + i >= max ) ? '0' : str[cur + i]; if ( t_byte[i] == '1' ) { cnt++; res += 1; } res <<= 1; } if ( *pal == '0' ) { /* 偶数パリティ */ if ( cnt % 2 ) res++; } else { /* 奇数パリティ */ if ( !(cnt % 2 ) ) res++; } return res; } できたから載せただけ。
120 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:29:45 ] >>119 特定しましたよ。
121 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:34:26 ] >>120 何を特定できた??
122 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:36:01 ] >>115 入力チェックは一切していない #include<stdio.h> void encode(char *bits, int parity) { unsigned short value=0; int i, bitnum=0; for(i=0;bits[i];i++) { value=(value<<1)+bits[i]-'0'; bitnum+=value&1; if((i+1)%15==0) { printf("%04X\n", (value<<1)+((bitnum+parity)&1)); value=0; bitnum=0; } } if((i%15)) { value<<=(15-(i%15)); printf("%04X\n", (value<<1)+((bitnum+parity)&1)); } } int main(int argc, char *argv[]) { if(argc==3) encode(argv[1], atoi(argv[2])); return 0; }
123 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:43:15 ] [1] 授業単元:プログラミング入門演習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6023.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: (2月12日まで) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) プログラムの一部 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6024.txt コンパイルできてもセグメントエラーorz どなたかお願いします。
124 名前:110 mailto:sage [2008/02/09(土) 17:59:53 ] { int i; for (i = 12; i >= 0; i -= 4) *buffer++ = "0123456789"[(data >> i) & 9]; } アドバイスいただいた、プログラムを10進数表示させようと上のように書き換えたのですが このように書くと0189しか表示されません。 こんな簡単な奴ふざけるなと思わせてしまって申し訳ないのですが どうか、教えていただけないのでしょうか。 初心者のスレかくのが本来ですが、マルチぽくなるのでこのまますみません。
125 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:14:58 ] >>124 data>>iで済むのは16進数だからであって、 10進数で同じ方法は考えないほうがいい。
126 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:20:09 ] >>124 { unsigned tmp; for(tmp=1000;tmp>0;tmp/=10) { *buffer++=((data/tmp)%10)+'0'; } }
127 名前:110 mailto:sage [2008/02/09(土) 18:37:44 ] >>125 >>126 アドバイスありがとうございます。無事に動作するようになりました。 ASMを勉強していてASMでの書式など有る程度把握出来てきたのですが c言語は、書式がまるっきり分からず困っていました。 c言語は生活に十分必要な物だと思いますのでこれを機に勉強をしようとおもいます。 とても困っていたので、ほんと感謝の気持ちでいっぱいです。 ありがとうございました。
128 名前:デフォルトの名無しさん [2008/02/09(土) 19:32:03 ] >>117 の続き プログラム /*パリティビットの生成*/ #include <stdio.h> #include <string.h> main(int argc,char *argv[]) { char dum[256]; int num,cnt; int i = 0,j; (41) ; while(dum[i] != `\0`){ num = cnt = 0; for(j=0;j<15 && dum[i] != `\0`;j++){ (42) ; num <<= 1; (43); } for (;j < 16; j++) num <<= 1; if ( (44) == (1 ー ( (45) ー '0'))) num |= 1; printf("%x\n",num); } }
129 名前:デフォルトの名無しさん [2008/02/09(土) 19:44:13 ] >>128 すいませんm(_ _)m しばらく書き込み出来なかったもんで.. 上記の(41)〜(45)を答えるんですが.. (41)の解答群 ア dum = argv イ dum = argv[1] ウ strcpy(dum,argv) エ strcpy(dum,argv[1]) (42)の解答群 ア cnt += 1 イ cnt += dum[i] + 1 ウ cnt += dum[i] - `0' エ cnt += dum[i] + `1' (43)の解答群 ア num |= dum[i] - `0' イ num |= dum[i++] - `0' ウ num &= dum[i] - `0' エ num &= dum[i++] - `0' (44)の解答群 ア cnt イ cnt / 2 ウ cnt % 2 エ cnt * 2 (45)の解答群 ア argv[1] イ *argv[1] ウ argv[2] エ *argv[2] です
130 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:05:59 ] [1] 授業単元:プログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6025.txt input.txt: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6026.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C [4] 期限:2月13日正午 [5] その他の制限: 計算式の記述が分かり辛いですが、どうぞよろしくお願いいたします。
131 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:31:45 ] >>130 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6027.txt
132 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:19:11 ] >>131 ありがとうございます!
133 名前:デフォルトの名無しさん [2008/02/10(日) 02:10:32 ] >>114 >>115 >>117 プログラム >>128 解答群 >>129 すいませんm(_ _)m どなたか解答をお願いします。
134 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:15:38 ] (42):ウ (43):イ (44):ウ (45):ウ 但し(41)の答えが何なのか、これが分らない
135 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:19:59 ] ごめん、(45)はエだ。 但し(41)の答えがn(ry 自分でやってくれ
136 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:21:16 ] >>134 エ じゃないかな
137 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 04:10:18 ] >>136 一つくらい自分でやらせようとしてたんだが…
138 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 04:12:39 ] 入門書に確実に載ってる問題を質問するようなヤツが考えるわけもない ググってもすぐ分かるというのに
139 名前:デフォルトの名無しさん [2008/02/10(日) 10:34:58 ] すいませんm(_ _)m ありがとうございます。 (41)エ (42)ウ (43)イ (44)ウ (45)エ これでOKでしょうか?
140 名前:デフォルトの名無しさん [2008/02/10(日) 11:03:41 ] #include <stdio.h> main() { char x[3][7] = {"first","second","third"}; char *z[3] = {"first","second","third"}; char **p; p = z; p++; @ printf("%c\n",**p); A printf("%s\n",*p+1); B printf("%s\n",*(p+1)+1); これだと xの要素数は21個で ポインタ配列zの要素数は19個 @ABのprintfの表示は @がs Aがecond Bがhird でいいですかね?
141 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:35:41 ] >>123 これで合ってるのかな。srandがよくわからない。。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6028.c >>140 合ってる
142 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:18:18 ] >ポインタ配列zの要素数は19個 3個だろ
143 名前:54 [2008/02/10(日) 15:24:52 ] 答えてくれたみなさんありがとうございます!! めっちゃかんしゃです。
144 名前:デフォルトの名無しさん [2008/02/10(日) 15:38:46 ] 度々大変すいませんm(_ _)m どなたか解答をお願いします。 プログラム /*語尾変換プログラム*/ #include <stdio.h> #include <stdlib.h> #include <string.h> int f_read(void); int w_cnv(int ln); #define CHRSIZE sizeof(char) char str[20][(254 + 2)* CHRSIZE * 2 + sizeof(char)]; main() { int ln; int i; int cnt; ln = f_read(); cnt = w_cnv(ln); for(i=0;i<ln;i++) printf("%s",str[i]); printf("\n文章中を%d件変換し、\n",cnt); printf("文末を%d件付加しました。\n",ln); } /*ファイル入力*/ int f_read(void) { FILE *fp;
145 名前:デフォルトの名無しさん [2008/02/10(日) 15:39:16 ] 続き char buf[256]; int cnt = 0; if((fp = fopen("word.dat","r")) == NULL){ printf("入力ファイルがオープンできません\n"); exit(1); } while( (46) != NULL) (47) ; fclose(fp); return(cnt); } /*変換*/ int w_cnv(int ln) { int i; int cnt = 0; char w_str[256]; for(i=0;i<ln;i++){ while( (48) != NULL){ strcpy(w_str,strstr(str[i],"な") + CHRSIZE * 2); strcpy(strstr(str[i],"な"),"にゃ"); (49) ; cnt++; } strcpy( (50) ,"にゃ\n"); } return(cnt); }
146 名前:デフォルトの名無しさん [2008/02/10(日) 15:40:31 ] (46)の解答群 ア fgets(buf,255,fp) イ fgets(fp,buf,255) ウ fscanf("%s",buf,fp) エ fscanf(fp,"%s",buf) (47)の解答群 ア strcpy(buf,str[cnt++]) イ strcpy(buf,str[cnt+1],buf) ウ strcpy(str[cnt++],buf) エ strcpy(str[cnt+1],buf) (48)の解答群 ア strcat(str[i],"な") イ strchr(str[i],"な") ウ strcpy(str[i],"な") エ strstr(str[i],"な") (49)の解答群 ア strcat(w_str,str[i]) イ strcat(str[i],w_str) ウ strcpy(w_str,str[i]) エ strcpy(str[i],w_str) (50)の解答群 ア strchr(str[i],`\0') イ strchr(str[i],`\n') ウ strchr(w_str[i],`\0') エ strchr(w_str[i],`\n') 文中の「な」を「にゃ」に変換し、さらに文末の語尾に「にゃ」を付加して表示するプログラムです (46)〜(50)の答はどうなりますかね?
147 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:16:12 ] >>146 うざいからうpロダ使ってくれないかな。
148 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:03:18 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6029.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C [4] 期限:2月13日 [5] その他の制限: 前回は本当にありがとうございました。 今回もよろしくお願いいたします。
149 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:42:59 ] >>148 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6030.txt
150 名前:デフォルトの名無しさん [2008/02/10(日) 18:09:40 ] [1] 授業単元:パターン認識 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6031.lzh [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2月13日 [5] その他の制限: 動的計画法についての課題です。問題が図表付きなので圧縮しています。
151 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:25:53 ] >>149 ありがとうございました。
152 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:05:23 ] [1] 授業単元:プログラミング [2] 問題文:入力された文字列を逆に並べて表示せよ(例:TOKYO→OYKOT) [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition [3.3] 言語:C [4] 期限:2008年2月13日8:00まで [5] その他の制限:#include <stdio.h>で使える命令のみ 一次元配列のみ
153 名前:デフォルトの名無しさん [2008/02/10(日) 21:10:05 ] [1]プログラミング [2]時計の針2本がなす角(中学入試の算数問題でよく出題される問題) 問:キーボード上から時と分を入力し、その時間とそれを指す長針・短針 のなす角を求める。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6032.c [3] 環境 [3.1] OS:Windows [3.2] bcc32 [3.3] 言語: C [4] 期限: [2008年2月12日まで] [5]その他の制限: 入力・計算・出力部分は必ず関数化し、mainの中でそれらを呼び出すようにする なす角θを計算する部分は成功しましたが(そこまでの完成版はリンクしたプログ ラムを参照)、キーボード上から入力した時間をうまく表示することができません。出力は、 ??:?? なす角:??° とします。どうか宜しくお願いします。
154 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:11:22 ] >>152 #include <stdio.h> int main(void) { char *p, str[256]; scanf("%s", str); p = str; while(*p) p++; while(p--!=str) putchar(*p); return 0; }
155 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:02 ] >>154 自分の技量不足で申し訳ありませんが質問してもよろしいでしょうか? 関数の*pの*は何か意味があるのでしょうか?
156 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:35 ] >>153 >>149
157 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:35 ] >>153 void output(int s, int t, double r1) { printf("%d:%d なす角:(%.1f)°\n", s, t, (double)r1); } にしてh1とm1渡すだけじゃね?
158 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:52 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6033.txt [3] 環境 [3.1] OS: Win XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C [4] 期限: 2008年2月12日午前7時00分 [5] その他の制限:色々な処理方法があるそうですが、 なるべくレベルが低い方法でよろしくおねがいします。
159 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:27:27 ] >>155 間接参照。
160 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:30:03 ] >>159 ありがとうございます!
161 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:56:55 ] >>158 #include <stdio.h> static int su[9], cnt; void perm(int *a, int j){ int i; if(j == 9){ int x = 0, y = 0; for(i = 0; i < 6; i++) x = 10*x + a[i]; for(i = 6; i < 9; i++) y = 10*y + a[i]; if(x%y == 0){ printf("%d / %d = %d\n", x, y, x/y); cnt++; } return; } for(i = 0; i < 9; i++) if(su[i] == 0){ su[i] = 1; a[j] = i + 1; perm(a, j + 1); su[i] = 0; } } int main(void){ int a[9]; perm(a, 0); printf("合計パターン数 = %d\n", cnt); return 0; }
162 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:35:42 ] >>158 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6034.txt
163 名前:デフォルトの名無しさん [2008/02/10(日) 23:00:27 ] >>144 >>145 >>146 ですが 解答はいかがでしょうか... 携帯からで見づらくて大変すいません...m(_ _)m
164 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:02:13 ] >>163 >>1
165 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:15:13 ] さすがに携帯にうpろだはきつくね?
166 名前:デフォルトの名無しさん [2008/02/10(日) 23:15:22 ] 153です。 157番さんのおっしゃる通りにしたら、「output関数における呼び出し時のパ ラメータが足りない」というエラーが出ました。157番さんの通りにプログラム を設計するなら、mainの中でoutputなどの各種呼び出しをどのようにすれば良い のか教えて下さい。プログラミングの基本である自学自習を心掛けていますが この呼び出し関数の設計などはあまり得意な方でないのでどうかお願いします。
167 名前:123 mailto:sage [2008/02/10(日) 23:15:37 ] >>141 ありがとうございます。実行してみたのですが生成される乱数が全て0になってしまいます。 srand関数を使って乱数の種を定めた時のプログラミング例を載せてみます。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6036.c どうかお願いします。
168 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:35:33 ] >>166 お前どうやって>>153 まで自分で出来たんだ? 得意じゃないってレベルじゃねーぞ output(h1, m1, show1);
169 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:37:49 ] 誰かの回答だろ
170 名前:153 [2008/02/10(日) 23:57:48 ] 正直に言うと今までに扱った内容を参考にしながらでした。 それでも不足部分は沢山あるのでそれを補えるよう努力しなければと思い ます。 ちなみにコンパイルできました。ありがとうございました。
171 名前:デフォルトの名無しさん [2008/02/11(月) 00:13:35 ] 質問! エラーがでたわけではないのですが、VC++2003.NETで ビットマップ画像をインポートして追加しようとしたのですが、 実行するとその画像が表示されません! 実行の際には画像が切り替わっている様子がうかがえるのですが、表示されないのです。 新規作成で追加するとちゃんと表示されるのですが・・。 どなたか原因分かる方いますか?
172 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:13:39 ] double→int→doubleとか意味不明なことしてるし、 設計を見直すべき。
173 名前:デフォルトの名無しさん [2008/02/11(月) 00:17:52 ] >>146 です すいません 荒らしてしまって... 携帯からなんで うp無理みたいです... なんかいろいろほんとすいませんでしたm(_ _)m
174 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:21:45 ] >>167 「10 動的に確保したメモリの解放」 これが抜けてる以外は問題なさそうだけど。 試しに実行してみたら、ちゃんと乱数生成されてるし。
175 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:30:32 ] >>174 pc環境とか関係するんですかね?とりあえず学内pcにファイルを移して実行してみます。 本当にありがとうございました。
176 名前:50 mailto:sage [2008/02/11(月) 00:30:47 ] >>65 〜73、87の書込みをしてくださった方々 一番難しい課題Bを解いていただき、ありがとうございましたm(__)m
177 名前:デフォルトの名無しさん [2008/02/11(月) 00:51:27 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6037.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual C++ 2005 [3.3] 言語: C [4] 期限: 2月13日 [5] その他の制限:特にありません
178 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:48:02 ] >>173 うpろだが使えないとしても、>>1 読んでテンプレくらいは使って欲しいところ まぁ推奨になってるからどうしてもテンプレは使いたくないってのなら止めないけど
179 名前:デフォルトの名無しさん [2008/02/11(月) 11:21:06 ] >>144 >>145 >>146 携帯からの投稿自体 無理がありました すいませんでした...m(_ _)m できれば解答をいただけると幸いです..
180 名前:デフォルトの名無しさん [2008/02/11(月) 14:34:02 ] [1] 授業単元: [2] 問題文: 文字列を入力させ、それを表示するプログラムを作成せよ。 ただし、文頭にaが入力された場合はそれを表示せず、 数値が入力された場合はエラーとしてもう1度入力させること。 【実行例】 入力=jgmttgad18j ※エラー※数値が入力されました。 もう1度入力してください 入力=aaaiaueokaki 出力=iaueokaki [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4] 期限:2008年2月11日22:00まで [5] その他の制限: 先生が、ヒントで「フラグを使うとできるかも」といってました! よろしくお願いします!
181 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:54:09 ] >>180 #include <iostream> #include <string> using namespace std; int main() { while(1) { cout << "入力="; string s; cin >> s; if( s.find_first_of( "0123456789" ) == string::npos ) { cout << "出力=" << s.substr( s.find_first_not_of( "a" ) ) << "\n"; break; } else { cout << "数値が含まれるので、再度入力してください。\n"; } } return 0; }
182 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:40:08 ] >>180 #include <stdio.h> #include <string.h> int main(void) { char str[256]; int top; printf("入力:"); start: top=0; fgets(str,256,stdin); again0: if(str[top]>=48&&str[top]<=57){ printf("再入力:"); goto start; } if(top++<strlen(str))goto again0; top=0; again1: if(str[top]=='a'){ top++; goto again1; } printf("出力:"); again2: printf("%c",str[top++]); if(str[top]!=NULL)goto again2; return 0; }
183 名前:デフォルトの名無しさん [2008/02/11(月) 18:57:58 ] >>181 >>182 ありがとうございます! できれば入力に cin.getlineとか使うくらいの初歩のでもやってほしいんですが..(><) 入力だけでいくと #include<iostream.h> main() { char a[50] ; cout<<"a=" ; cin.getline(a,50) ; } こんな感じで・・ サーセン(・_・、)
184 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:38:23 ] >>180 #include <iostream> #include <string> #include <boost/regex.hpp> int main() { while (true) { std::cout << "入力: "; std::string line; if (!std::getline(std::cin, line)) break; boost::regex re_num("\\d+"); if (boost::regex_search(line, re_num)) { std::cout << "※エラー※数値が入力されました" << std::endl; std::cout << "もう一度入力してください" << std::endl; continue; } boost::regex re_str("^a+"); std::cout << "出力: " << boost::regex_replace(line, re_str, "") << std::endl; break; } }
185 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:41:23 ] >>183 それなら>>180 の cin >> s; を char sz[50]; cin.getline(sz,50); s=sz; にすればいいが、 初歩というのは、もしかしてstringを使うなと言ってる?
186 名前:デフォルトの名無しさん [2008/02/11(月) 19:46:40 ] >>184 >>185 ありがとうございます!! stringをならってません(・_・、) ごめんなさい↓
187 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 20:00:14 ] >>186 #include <iostream> using namespace std; bool hasDigit( const char* pstr ) { while(*pstr) { if( isdigit(*pstr) ) return true; pstr ++; } return false; } int main() { while(1) { cout << "入力="; char sz[50]; cin.getline( sz, sizeof(sz) ); if( !hasDigit( sz ) ) { char* p; for( p=sz; *p=='a'; p++ ); cout << "出力=" << p << "\n"; break; } else { cout << "数値が含まれるので、再度入力してください。\n"; } } return 0; }
188 名前:デフォルトの名無しさん [2008/02/11(月) 22:32:23 ] [1] 授業単元: プログラム テスト [2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6038.txt [3] 環境 [3.1] OS: WindowsXP [3.3] 言語:C言語 [4] 期限: できれば、早いとありがたいです。 よろしくお願いいたします。
189 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:44:53 ] [1] 授業単元:プログラミング [2] 問題文 四問あります ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6039.zip [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual stdio [3.3] 言語: C [4] 期限: 2月13日の昼まで
190 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:46:32 ] >>188 アウエイ (50)は解なし。強いてあげればイか。
191 名前:189 mailto:sage [2008/02/11(月) 22:48:29 ] すいません >>189 には不備がありました 課題1には二つ問題があるのですが 一つtxtファイルが入ってません それを書き直したものにしますので少々待っててください
192 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:58:36 ] [1] 授業単元:プログラミング [2] 問題文 5問あります ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6040.zip [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual stdio [3.3] 言語: C [4] 期限: 2月13日の昼まで [5]ご迷惑をおかけして申し訳ありません 期限を13日としていますが出来ればなるべく早くお願いします
193 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:07:15 ] >>192 どれも最近見た気がするが、これって何処の課題なんだろ。 最後の二つは、ちょっと前に俺がうpしたから間違いない。
194 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:15:21 ] >>193 本当ですか よろしければその解答を頂けないでしょうか
195 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:18:41 ] >>194 ちょっと前にうpしたって言ってるじゃん。 ホントに欲しけりゃ、スレから探して持っていけばいいさ。
196 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:30:16 ] >>195 ありがとうございます 4と5は解決しました
197 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:36:55 ] アイムジャグラーちっとも勝てません。なぜでしょうか? ttp://www.borujoa.org/upload/source/upload16700.lzh ↓参考ページ。 ttp://www.htv-net.ne.jp/~dark/suro%20aimu%20jagura-.html
198 名前:デフォルトの名無しさん [2008/02/11(月) 23:37:55 ] >>190 さん ありがとうございます。 まぁ結果的に2級は落ちましたが.. 少しは勉強になったのでよかったです 皆さん いろいろ迷惑をかけましたがありがとうございましたm(_ _)m
199 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:40:13 ] 試験の問題だったのか。 この程度だと、あんまり取る意味なさそうな気も。
200 名前:デフォルトの名無しさん [2008/02/12(火) 00:09:02 ] >>199 さん 確かにそうですよね.. C2級も取れないレベルなんて 俺ってなんなんだろう... やっぱりバカなんだなぁ つくづく思います。
201 名前:デフォルトの名無しさん [2008/02/12(火) 00:40:36 ] 【質問テンプレ】 通りに書き込まなきゃいけないと思うんですが 眠くてやばいんで誰か解き方のだけ速攻教えてください。 C言語で123の数値を合計して6とするにはどうすればいいんでしょうか?
202 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:43:29 ] >>201 int sum=1+2+3;でおk
203 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:46:27 ] >>177 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6041.cpp
204 名前:デフォルトの名無しさん [2008/02/12(火) 00:48:33 ] >>202 ありがとうございます。 その数値が入力されたものの場合はどうすればいいんでしょうか><
205 名前:199 mailto:sage [2008/02/12(火) 00:48:33 ] >>200 いやいや、この程度とは言ったけど、 これを全く勉強せずに解ける人なんて居ないよ。 資格としての意味は薄いにしても、 1つの通過点にするのはいいんじゃないかな。 目標があると励みやすいし。 でさ、本当に2級を取得するだけの力をつけたいんだったら、 このスレで解答を求めたりするんじゃなくて、 自分で試行錯誤して辿り着く方が為になると思うんだけどな。 スレ違いなんでこの辺で。
206 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:51:42 ] >>204 int sum = val / 100 + (val / 10) % 10 + val % 10;
207 名前:デフォルトの名無しさん [2008/02/12(火) 00:52:05 ] 入力された文字列をatoiで変換→数値を合計みたいな問題でやり方がわからないんでヒントもらいたいです。 説明不足でほんとすみません。
208 名前:207 [2008/02/12(火) 00:54:18 ] >>206 ありがとうございます。
209 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:54:19 ] 情報を小出しにするな。
210 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:54:39 ] >>207 説明不足だと思うならちょっとくらい眠くてもテンプレに従えよ
211 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:54:57 ] >>207 int sum = (str[0] - '0') + (str[1] - '0') + (str[2] - '0');
212 名前:207 [2008/02/12(火) 00:55:23 ] >>206 ありがとうございます。
213 名前:デフォルトの名無しさん [2008/02/12(火) 01:00:18 ] !!!!>211さん 眠気がとびました! そっか atoiを絶対使うと思い込んでいたからできなかったのか>< '0'から引けば結果は数値と同じっすもんね・・・ 本当にありがとうございました。
214 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:02:05 ] >>201 >>207 #include<stdio.h> #include<stdlib.h> int main(void){ char buf[16]; int n, sum = 0; fgets( buf, 16, stdin ); n = atoi( buf ); while( n > 0 ) { sum += n % 10; n /= 10; } printf("%d\n",sum); return 0; } 多分こういうことがやりたいんだろうと思って答えてみる 間違っててもそれは質問の仕方が悪いと思う
215 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:09:38 ] 150ですがどなたかお願いします・・・
216 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:16:23 ] >>161-162 ありがとうございます。助かりました。
217 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 03:07:47 ] >>150 どう表示したらいいか不明なので適当にやった 最小のものが見つかった時点で逐次表示 #include<stdio.h> int main(void){ int cost[][4][3]={{{3,2,1},{2,3,3},{3,3,2},{0,2,0}}, {{1,1,2},{2,1,3},{3,1,2},{0,2,0}}, {{1,1,2},{1,2,3},{1,1,4},{0,3,0}}, {{3,0,0},{2,0,0},{2,0,0},{0,0,0}}}, c,cmin=9999,p,pmin=9999,x,y,i,k; for(i=0;i<729;i++){//3^6=729 printf("(0,0)0"); for(k=i,c=p=x=y=0;x<3&&y<3;k/=3) c+=cost[x][y][k%3], p++, x+=(k%3!=0), y+=(k%3!=1), printf("→(%d,%d)%d",x,y,c); if(x==3&&y==3&&cmin>c)cmin=c,printf(" 最小コスト\n"); else if(x==3&&y==3&&pmin>p)pmin=p,printf(" 最短経路\n"); else printf("\r%79s\r",""); } return 0; }
218 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 15:32:39 ] >>192 課題1 #include <stdio.h> int main(void) { bool exist[10000]={false,}; int temp,i=0,max,min,count=0; FILE *fp=fopen("input8500.txt","r"); if(!fp) return 1; while(!feof(fp)){ fscanf(fp,"%d ",&temp); exist[temp]=true; } fclose(fp); while(!exist[i++]); min = i; i = 9999; while(!exist[i--]); max = i; for(i = 0; i < 10000;i++) if(exist[i])count++; printf("count = %d\nmax - min = %d",count,max-min); return 0; }
219 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 15:38:30 ] >>192 課題2 #include <stdio.h> int main(void) { int rank[11]={0,}; int temp,i,j; FILE *fp=fopen("input_histo.txt","r"); if(!fp) return 1; while(!feof(fp)){ fscanf(fp,"%d ",&temp); rank[temp/10]++; } fclose(fp); for(i=0;i<11;i++){ printf("\n%3d点台:",i*10); for(j=0;j<rank[i];j++)printf("*"); } return 0; }
220 名前:193 mailto:sage [2008/02/12(火) 16:59:52 ] >>192 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6042.txt (1)〜(3)
221 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:27:04 ] >>218 >>219 >>220 皆さんありがとうございます これでなんとかなりそうです><
222 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:21:05 ] 先ほど質問スレで質問したのですが場違いだったようなので こちらで質問したいと思います。 お時間がある方、ご協力いただけると幸いです。 先週からC言語について学び始めた高1です。 明日からプログラミングが学校の授業ではじまり 予習していたのですが、何度やっても思い通りの結果を表示できません 本当に基礎的な問題かも知れませんが、アドバイス、正答などいただけると幸いです。 1.5個の整数データを配列に代入し合計と平均を求めるプログラムをつくれ。 2.問1のデータの最大値を求めるプログラムをつくれ。 3.問1のデータを大きい順に並べ替えるプログラムをつくれ。 本当に程度の低い質問かもしれませんが 悩んでます><よろしくおねがいします。
223 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:24:37 ] >>1
224 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:06:18 ] >>222 #include <stdio.h> int main(int argc, char **argv) { static int array[5]; int i; double sum=0.0; if (argc==6) { for(i=0;i<5;i++) { array[i]=atoi(argv[i]); sum += array[i]; } printf("average[%lf] sum[%d]\n", sum/5, (int)sum); } return 0; } 悩んでいるというのであれば何がわからないのかくらい書くべきです。 予想すると何もわからなくて悩んでいるんですよね。 2と3は自分で考えましょう。
225 名前:デフォルトの名無しさん [2008/02/12(火) 22:27:32 ] [1] 画像処理 [2] 画像ファイルを読み込み、マウスでクリックした位置の 水平垂直方向の輝度を表示せよ。 [3.1] Windows XP [3.2] Visual C++2005 ExpressEdition [3.3] C++ [4] 期限: 無期限 [5] その他の制限:とくになし。 ファイルダイアログでpicturebox1に画像ファイルを取り込んで、 getpixelでRGB値を取得しています。 pictureboxは640*480なのですが、画像サイズが640*480以外だと、 エラーが出たり、マウスの位置と、取得したRGB値が一致しません。 どうしたものだろうか? private: System::Void pictureBox1_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Graphics^gr=this->CreateGraphics(); Bitmap^bm = (Bitmap^)(pictureBox1->Image); int w = pictureBox1->Image->Width; int h = pictureBox1->Image->Height; int z = 480/h; int x=e->X/z; int y=e->Y/z; gr->FillRectangle(Brushes::Black,Rectangle(700,27,128,480)); gr->DrawLine(Pens::LightGray,700+64,27,700+64,27+480); if(x<w && y<h ){ for (int y=0;y<h-1;y++) { Color c=bm->GetPixel(x,y); //平均輝度 int r=c.R; int g=c.G; int b=c.B; int rgbdiv = (int)((r+g+b)/3); Color c2=bm->GetPixel(x,y+1); int r2=c2.R; int g2=c2.G; int b2=c2.B; int rgbdiv2 = (int)((r2+g2+b2)/3); gr->DrawLine(Pens::Red,700+rgbdiv/2,27+y*z,700+rgbdiv2/2,27+(y+1)*z); } } }
226 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:44:17 ] C++/CLI ?
227 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:12:51 ] C#?
228 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:21:25 ] .net
229 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:36:59 ] >>217 ありがとうございました。
230 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:19:22 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6044.txt input.txt: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6043.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual stdio [3.3] 言語:C [4] 期限:2月13日中 [5] その他の制限: 期限間近ではありますが、よろしくお願いいたします
231 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:44:46 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): www.uploda.net/cgi/uploader2/index.php?file_id=0000050574.pdf 待ち行列の問題です。 pdfの11ページに載っています。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 本日23:59まで その他の制限: 特になし 丸投げです。よろしくお願いします。
232 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:50:42 ] >>230 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6045.txt
233 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:43:34 ] ひどいな
234 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:47:34 ] ひどすぎるな
235 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:54:57 ] >while(!feof(fp)){ > fscanf(fp, "%d", &temp); > data[temp]++; > } >while(count <= 100)
236 名前:デフォルトの名無しさん [2008/02/13(水) 15:02:22 ] 晒しage
237 名前:デフォルトの名無しさん [2008/02/13(水) 15:30:21 ] >>231 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6046.txt
238 名前:デフォルトの名無しさん [2008/02/13(水) 16:19:12 ] >>230 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6047.txt
239 名前:デフォルトの名無しさん [2008/02/13(水) 20:12:05 ] チョンのあやかり創価学会 偽善者が政治活動、公明党 ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや カルトキチガイ・創価騙されバカ信者 カルト・キチガイ・偽善政治活動・公明党 カルト・キチガイ・偽善政治活動・公明党 カルト・キチガイ・偽善政治活動・公明党
240 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:44:17 ] >>232 >>238 期限間近のものを本当にありがとうございました。
241 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:48:28 ] >>232 は荒らしだから礼は言わなくてよし。
242 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:01:17 ] >>241 今、実行できる環境がないのですが>>232 はなぜ荒らしなのでしょうか。
243 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:08:23 ] 表面上問題文で要求された結果は返すけど、 拡張性が無く再利用できないアルゴリズム。 fclose()してない。 こんなの宿題で提出されたら俺なら赤点つける。
244 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:14:18 ] >>243 荒らしのプログラムにも気付けない自分が情けないです… 詳しい説明ありがとうございました。
245 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:04:07 ] 宿題丸投げしてる時点で情けないけどな
246 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:20:41 ] >>243 >>232 読んでみたがこれで十分だろ 題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな 拡張性について指定がない以上、こういうのも一つの解としてありだろ
247 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:28:18 ] 学生の宿題なんだからむしろ質素な方がいいと思うのですが >>243 さんは一体何のつもりなんでしょうか(苦笑
248 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:36:48 ] ここはIDが出ないから自演が楽でいいなw
249 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:42:48 ] >>246 題意満たしてるか?
250 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:42:52 ] 自演以外でいちいち擁護する奴なんていないしなw
251 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:43:53 ] >>249 何か条件抜けてるか?
252 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:48:30 ] |┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \ |┃ | (__人__) | 俺なら赤点つける |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
253 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:48:33 ] >>235
254 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:54:02 ] >>251 合格者がちょうど100人の時にカウントがずれる。 <にすべき比較を<=にしてるという初心者のようなミス。 fclose()していない。 仮にあれが荒らしじゃないとすれば、無能であるという自覚の無い初心者。 ある意味荒らしよりたちに負えない。
255 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:55:30 ] |┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \ 表面上問題文で要求された結果は返すけど、 |┃ | (__人__) | 拡張性が無く再利用できないアルゴリズム。 |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
256 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:57:38 ] |┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \ 題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな 拡張性について指定がない以上、こういうのも一つの解としてありだろ |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
257 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:59:46 ] |┃三 / ̄\ |┃ | | ←これなに? |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \ |┃ | (__人__) | |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
258 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:59:47 ] >>232 はダメだろ。 211回数えてるぞ。
259 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:03:02 ] 最近オプーナAAをよく見かけるな
260 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:03:27 ] データ210個あるって言ってるのに配列101個分しか用意してないし。 何したいのかわからん。
261 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:04:31 ] 受験生全員が100位タイ以内に収まる場合にずっこける希ガス
262 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:05:02 ] 穴だらけじゃんwwwwwwwwwww
263 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:06:28 ] >>260 それはお前がバカ
264 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:06:59 ] >>260 それは点数による度数分布だからおk 0〜100以外の点数が来たらNGだが
265 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:07:17 ] feofでend-of-fileの判定。
266 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:13:22 ] まとめ >>232 ・今回与えられたデータではたまたま正常に動く ・不正なデータ(100点を超えたりマイナスだったり)に対する備えが無い ・偏ったデータ(全員が100点とか)で無限ループ ・100位以内が丁度100人の時に計算がずれる ・ファイルから点数を直接読み出してないから拡張性が無い ・↑のデータを利用して他の関数を書いてるから再利用できない ・fclose()してない >>238 ・パーフェクト >>230 は好きな方選んで提出したらいいんじゃね? 自力で組めなかったんだし粗悪なプログラムで赤点補習した方が将来のためかもしれないしね。
267 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:14:52 ] >>266 バカがまとめんなよw >>232 で出る答えは間違ってるし、全員100点でも無限ループなんてしない。
268 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:21:10 ] >>266 >>238 も人数が210人未満のときに間違える。
269 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:22:04 ] >>232 の実行結果 合格者数:105人 合格者平均点:77.7723810点 >>238 の実行結果 Success:104 Average:77
270 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:33:34 ] どうして>>232 の答えは間違うんでしょうか?
271 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:34:26 ] >>270 プログラムが間違ってるからだね。
272 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:37:40 ] >>270 ループ終了条件をfeofで判定してるため、最後の数を二重に数えてるから。
273 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:37:52 ] 烏賊じゃないんだ
274 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:40:35 ] まあ>>238 のプログラムも入力部分を関数化しろって条件満たしてないんだけどな。
275 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:50:30 ] >>237 ありがとうございますm(_ _)m
276 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:56:49 ] >>272 ありがとうございます。 while(!feof(fp)) { fscanf(fp, "%d", &temp); data[temp]++; } ↓ while(fscanf(fp, "%d", &temp) != EOF) { data[temp]++; } みたいにしたらいいのかな。
277 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 23:58:10 ] そうだね
278 名前:デフォルトの名無しさん [2008/02/14(木) 00:10:08 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6049.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++2005 ExpressEdition [3.3] 言語:C [4] 期限:2月15日 [5] その他の制限:特にないです
279 名前:デフォルトの名無しさん [2008/02/14(木) 00:14:35 ] チョンのあやかり創価学会 偽善者が政治活動、公明党 ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや カルトキチガイ・創価騙されバカ信者 カルト・キチガイ・偽善政治活動・公明党 カルト・キチガイ・偽善政治活動・公明党 カルト・キチガイ・偽善政治活動・公明党
280 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:18:58 ] 条件なのにできるってなんかおかしくね?
281 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:40:44 ] >>276 fscanfを使うなら、 while (fscanf(...) == 1) とするべき。
282 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:50:47 ] >>278 「double max(double a,double b)関数をとり、引数aとbの大きいほうを返す関数」は、 double max_caller(double (*f)(double, double), double a, double b){ return (*f)(a, b); } でよろしいか?
283 名前:デフォルトの名無しさん [2008/02/14(木) 07:06:31 ] >282 いいですよ。
284 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:53:12 ] >>281 なるほど、それだと読み込みエラーとかでもループを抜けられるんですね。 勉強になりました。ありがとうございました。
285 名前:デフォルトの名無しさん [2008/02/14(木) 11:39:45 ] >>278 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6051.txt チェックあまりしてない。甘いところはご愛嬌。
286 名前:デフォルトの名無しさん [2008/02/14(木) 12:09:39 ] >>278 問題2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6052.txt これもチェックあまりしてない。甘いところはご愛嬌。
287 名前:デフォルトの名無しさん [2008/02/14(木) 18:04:30 ] 「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」 って課題が出たんですけど、誰か教えてください。
288 名前:デフォルトの名無しさん [2008/02/14(木) 18:19:45 ] >>287 >>1 からやり直し
289 名前:デフォルトの名無しさん [2008/02/15(金) 12:03:39 ] すいません。書き直します。宜しくお願いします。 [1] 授業単元: 一般情報処理C [2] 問題文(含コード&リンク):「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:c [4] 期限:2008/2/19 [5] その他の制限:なし
290 名前:デフォルトの名無しさん [2008/02/15(金) 14:45:36 ] 急ですみませんが、(1)だけでもいいので、出来る方いらっしゃいましたらよろしくお願いします。 [1] 授業単元:情報処理 [2] 問題文(含コード&リンク): 崖から鉛直上向きに投げた石の4秒後の鉛直方向位置を求めたい. (1)オイラー法によりその位置を求めるプログラムを作成し,4秒後の 位置を求めなさい. (2)理論解との位置の誤差を0.1m以下にするには時間きざみΔtを いくらにすればよいか考察しなさい. [3] 環境 [3.1] OS:Vista [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語:C [4] 期限:2008/2/15 15:50まで [5] その他の制限:
291 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:11:20 ] >>290 (1)だけ。 初速に関する条件がなかったけど入力させる形でよかった? #include <stdio.h> #include <stdlib.h> #define GRAVITY (-9.80665) #define DELTA_T (0.1) int main(void) { char temp[32]; double v0, velocity, time, y; printf("初速度を入力してください:"); do{ fgets(temp, sizeof(temp), stdin); v0 = atof(temp); }while(v0 <= 0); for(time = 0; time < 4; time += DELTA_T) { velocity = v0 + time * GRAVITY; y += velocity * DELTA_T; } printf("4秒後の位置は %f(m) です", y); return 0; } >>289 一口に酔歩って言っても定義はいくつもあるんだけど、 何の前提条件も無しでその問題文がだされたわけ?
292 名前:デフォルトの名無しさん [2008/02/15(金) 17:34:59 ] >>291 えっとその前の課題が「二次元格子上での酔歩におけるnステップによる平均移動距離を、m回のシュミレーションによる統計平均から計算せよ。また、その標準偏差を求めよ」 で、その課題の下に「乱数の発生方法について」とあって、1#include<stdlib.h>によって、stdlib.hヘッダーをインクルードする。2#include<time.h>によって、time.hヘッダーをインクルードする。 3srand((unsigned)time(NULL));によって乱数の種の初期値を現時刻から決める。4rand()/(RAND_MAX+1.0);によって0から1における一様乱数を発生させる。 と書いてあって、その下に上記の課題が書いてあります。
293 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:05:59 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6055.zip [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 2月18日24時まで [5] その他の制限:考察も書かないといけないので 注訳等も入れてもらえると幸いです。 また期限はギリギリの期限ですので出来るだけ 早く対応していただけると非常に助かります。
294 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:59:30 ] >>293 元のプログラムがてんでダメダメだな。
295 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:13:23 ] >>294 あれ、引用のコピペ失敗したかな(´・ω・`)、自分で動かした分には元のプログラムは動いたんだけど
296 名前:293 ◆klsLRI0upQ mailto:sage [2008/02/15(金) 22:19:36 ] >>294 サンプルプログラムの原文HTML化したものはありますけど そちらをうpった方がいいでしょうか?
297 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:26:43 ] >>295 67行目に変な文字が入ってるけど、ダメってのはそういう意味じゃない。 元のプログラムの作り自体にセンスが感じられないってこと。
298 名前:293 ◆klsLRI0upQ mailto:sage [2008/02/15(金) 22:28:41 ] >>297 なるほど、そういう事ですか><
299 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 07:24:05 ] >>293 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6056.cpp
300 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:45:37 ] >299 ありがとうございます
301 名前:_ mailto:sage [2008/02/17(日) 08:34:24 ] |┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \ |┃ | (__人__) | |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
302 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:03:44 ] 三 |┃┃ 三 |┃┃ |┃┃ ∧∧ ..|┃┃ 三 ( ;). |┃┃ピシャッ! / ⊃.|┃┃
303 名前:_ mailto:sage [2008/02/17(日) 11:52:13 ] .. |┃三 .. / ̄\ .. |┃ | | .. |┃ .. \_/ ガラッ.. |┃ ..| 三 |┃ | 三 |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ ∧∧ ..|┃ / <●>::::::<●> \ 三 ( ;). |┃ | (__人__) | / ⊃.|┃三 \ ` ⌒´ / シュー |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
304 名前:_ mailto:sage [2008/02/17(日) 11:52:33 ] 三 |┃┃ 三 |┃┃ |┃┃ ∧∧ ..|┃┃ 三 ( ;). |┃┃ピシャッ! / ⊃.|┃┃
305 名前:デフォルトの名無しさん [2008/02/17(日) 12:15:33 ] 【質問テンプレ】 [1] 授業単元: コンピュータ実習 [2] 問題文:(下記のコードに書き加えてファイルに出力しなさい) [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C++) [4] 期限: 今日 [5] その他の制限: なし #include <iostream> #include <string> #include <fstream> class write{ private: string input; public: string input(){ cout<<文字列をファイルに書き込みたい; cin>>input; return input; }}; int main(){ write ob; //書き込み処理 //書き込み処理終了 return 0; }
306 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:57:43 ] //書き込み処理 fstream("ファイル", ios::out) << ob.input(); //書き込み処理終了
307 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:06:25 ] >>306 ofstream使えよ。
308 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:48:53 ] [1] 授業単元: Cプログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6057.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 明日まで 問題はC言語のシグナルの送信に関するものです。 よろしくお願いします。
309 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:10:27 ] シグナルハンドラとしてSIG_IGNを使う。 あと、シグナルハンドラの中では、非同期シグナルセーフな関数以外は呼び出さない方がいい。
310 名前:デフォルトの名無しさん [2008/02/17(日) 21:55:38 ] [1] 授業単元:C言語II [2] 問題文(含コード&リンク) シェルを実装していますが、分からないのは入出力リダイレクションの処理です。 たとえばプロンプトから $ cat 123 > textout と、入力して 引数の'>'(もしくは'<') で入出力を切り替える処理を考えています。 どうすればいいのでしょうか? [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4.4 [3.3] 言語:C [4] 期限: 2008年2月29日
311 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:26:19 ] >>308 とりあえずsignal.hなるものの存在を初めて知った で、<unistd.h>は「unix standard」。 ここまで来ると、Windowsの人間はまるでついていけない……
312 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 02:30:54 ] >>308 [kill-main.c] #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> #include <sys/types.h> pid_t pid; void ctrlc(void){ kill(pid,SIGUSR1); } int main(){ unsigned int c; if((pid = fork()) == 0){ execl("kill-child","kill-child",(char *)0); perror("execl"); exit(EXIT_FAILURE); } if(signal(SIGINT,(void*)ctrlc) == SIG_ERR){ perror("sigint"); exit(EXIT_FAILURE); } do{ printf("Send signal?(C-c/n)\n"); while((c=getchar()) != EOF) if(c != '\n') break; if(c == 'n') exit(0); }while(c != EOF); }
313 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 02:32:35 ] >>308 [kill-child.c] #include <stdio.h> #include <stdlib.h> #include <signal.h> void siguser(void){ static int n = 0; printf("Signal received %d times\n",++n); if(n == 10) exit(EXIT_SUCCESS); } int main(){ signal(SIGINT,SIG_IGN); if(signal(SIGUSR1,(void *)siguser) == SIG_ERR){ perror("signal"); exit(EXIT_FAILURE); } for(;;){} } 子まで書き換えないとならないのがミソだな
314 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 04:08:11 ] >>312-313 御回答ありがとうございます。 SIG_IGNを使いシグナルを無視させることで無効化するんですね。 勉強になりました!ありがとうございます。
315 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 14:14:22 ] [1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク):Cシェルを作成しなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2008年2月19日まで [5] その他の制限: なし C言語でシェルを作っているのですが、 >310さんと同じく'>'の入力リダイレクションの処理が分からないです。 自力で途中までは書いているのですが、キー入力の分割処理が上手く行きません。 void parseitファンクション内の処理がおかしいと思われます。 助けて頂けると幸いです。 ソースファイル↓ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6060.c
316 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:43:12 ] 誰か292頼みます
317 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 18:15:57 ] >>316 問題が理解できないのでどうしようもない まずnステップっていうのがわからない そもそも、1ステップでどういう動きをするんだ? ランダムで X 方向 or Y 方向に 1つ動くっていうのか、 それとも、X 方向にランダムでいくつ、Y方向にランダムでいくつって言う風に動くのか あと表示のしかたも、各ステップ毎のX,Yの値をただ単に並べればいいのか、 図で見せるのかわからない
318 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:56:21 ] >>315 void parseit 内で、 *params++ = command; の後のパラメータ分文字を読み飛ばす処理内で、">"の処理をしているのが不味い a.out > aaa ↑ ここでパラメータ分文字を読み飛ばす処理は終了するので、次のパラメータを探す処理に 移ると、次のパラメータは、">"になる ">" の処理もそのままだと、 ファイル名の前後に空白文字が入る可能性がある(問題ないのかもしれないけど) あと、void parseit 関数の終わりの*params = '\0'; は、 *params = NULL; じゃね
319 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:16:23 ] >>318 なるほど、そう言うのが原因なんですね。 確かにテストをすると空白らしくものがファイル名と'>'の前(おそらく)に入ってると思われます となると、やはり新しいファンクションを増やした方がてっとり早いのでしょうか?
320 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:59:51 ] >>319 横レスになるけど. 先に ">"の前後で文字列を切り分けてからコマンド部分をあらためて切り分ける方法もあるんじゃないかな。 標準関数を使っていいのなら切り分けはこんな感じ↓ char redirect[20]; // リダイレクト先 _Bool test_parse( char *command, char **param ) { _Bool ret = false; char cmd[256]; // コマンド部 int result; // >の前後で文字列を切り分け result = sscanf( command, "%255[^>]%*[>]%19s", cmd, redirect ); if( result > 1 ) { ret = true; } getToken( cmd, param ); // ここでコマンド部をパラメータと切り分ける関数を別に作って呼ぶ return ret; } こうするとローカル変数cmdとredirectにそれぞれ>の前後で切り分けた文字が入るはず。 ついでにretで1以外が入っていた場合はredirectにも代入があったことになるからフラグでそれを知らせてます。
321 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:51:32 ] >>320 レス感謝です。 getTokenでparseitと同様の処理をさせれば良いのでしょうか?
322 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 06:43:13 ] >>321 4時か、がんばってるねぇ… とっくに寝てそうだけど、getTokenでparseitのparamsに入れていく部分の処理を入れればいいと思う。 元のソース見る限りだとredirectは特に同じことをしてなさそうに見えるから。
323 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 06:54:35 ] 試しに>>320 の教えてくれたsscanfを使ってみたのですが、 未だに空白が付いて正しい結果を出しません。 もしかしたらメイン内でやったのがいけなかったのかもしれません。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6062.c
324 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:09:34 ] あー 空白がつくのって "a.out params > text.txt" みたいなときに " text.txt"がredirectにはいるってこと? VC++でコンパイルしたからGCCでは挙動違うのかな? sscanfの処理を sscanf( command, "%255[^>]%*[> \t]%19s", cmd, redirect ); って修正してもだめ?
325 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:13:47 ] すみません>>322 の通りにやると文字化けが生じてしまいます。 もしこれが解決出来れば、test_parseファンクションを使えると思うのですが…。 何か解決方法があったら教えてください。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6064.c
326 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:37:19 ] 無事に解決できました。 どうやら問題やはcmdの最後の部分に空白があったため、問題が起きていたようです。 なので、最後尾にNULLを追加したらリダイレクションが正常に完了しました。 >>318 >>320 >>322 >>324 助言ありがとうございました。
327 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:39:06 ] >>316 適当解釈。 #include <stdio.h> #include <stdlib.h> #define N 10 void suiho(int *x, int *y) { int r=rand()%4; *x+=((r/2)*2-1)*(r%2); *y+=((r/2)*2-1)*(!(r%2)); printf("(%d,%d)\n",*x,*y); } int main(void) { int i,x=0,y=0; srand(time(NULL)); for(i=0;i<N;i++)suiho(&x,&y); return 0; }
328 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:29:30 ] >>327 面白い解釈だ 神龍:どんな問題でも一つだけ聞き流してやろう ってのが思い浮かんだ
329 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:26:31 ] 誰か終わってないリストチョーライ。
330 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:00:26 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク):2問ありますkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6066.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 明日まで [5] その他の制限: 問題文にそって作る お手数おかけしますが、よろしくお願いします。
331 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:27:31 ] 因数因数って引数だろ、「ひきすう」で変換すればちゃんと出てくるのに・・・ ってもやもやしながら読んでたらばおで噴いたwwwwwww
332 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:37:55 ] 構造体変数名がlist_tっていうのが違和感あるんだが,これって変数が list_tって名前なんだよな? xxx_tって普通,型名につける方法じゃないっけ?
333 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:18:56 ] ば、ばお・・・ごめんなさいorz >>332 問題文を確認したら構造体変数名はlist_tとありました。 これが誤っているとすると typedef struct list{ 〜 } list_t; って感じですかね?
334 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:13:00 ] typedef struct list_t{}list;だろ _tは普通使わないと思うけど
335 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:15:26 ] >>334 へぇ 普通はそうなのか 普通って難しいな
336 名前:デフォルトの名無しさん [2008/02/20(水) 00:27:17 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6067.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2/22 [5] その他の制限: よろしくお願いします。
337 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:03:12 ] [1] 情報セキュリティ [2] 問題文(含コード&リンク): C言語プログラムのファイルを読み込んで、バッファオーバーラン の危険性を検出(修正)するサポートツール。 [3] 環境 [3.1]Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2月21 [5] その他の制限: なし
338 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:07:57 ] さらっと書いてるけど>>337 は相当むずかしくないか?
339 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:11:45 ] gets()が検出できればおkだったりしてな
340 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:16:50 ] つ lint
341 名前:337 mailto:sage [2008/02/20(水) 01:25:54 ] * get * sprintf * strcat * strcpy * vsprintf が検出できれば OKです
342 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:28:57 ] 先に書けよ
343 名前:337 mailto:sage [2008/02/20(水) 01:33:14 ] すみません。
344 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:14:35 ] ・getってなんだよ。 ・scanfはスルーかよ。
345 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:23:51 ] >>337 #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFMAX 1024 int main(int argc, char *argv[]) { FILE *fp; char buf[BUFMAX]; int line = 0; if (argc < 2 || (fp = fopen(argv[1], "r")) == NULL) { printf("Usage: a.out [assemble code file]\n"); exit(0); } while (fgets(buf, BUFMAX, fp)) { ++line; if (!strcmp(buf, "\tcall\tscanf\n") || !strcmp(buf, "\tcall\tgets\n") || !strcmp(buf, "\tcall\tsprintf\n") || !strcmp(buf, "\tcall\tstrcat\n") || !strcmp(buf, "\tcall\tstrcpy\n") || !strcmp(buf, "\tcall\tvsprintf\n")) { printf("find at line%d: %s", line, buf); } } fclose(fp); return 0; } こんな感じでいいのかな。アセンブリコードに対して検索した方が楽だよな。
346 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:35:42 ] >>345 その発想はなかったわw
347 名前:337 mailto:sage [2008/02/20(水) 07:49:57 ] ありがとうございます
348 名前:デフォルトの名無しさん [2008/02/20(水) 11:53:11 ] >>330 1問目 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6068.txt 構造体変数名はlist_tとする意図が汲み取れないが、それは無視して作った。 構造体のtypedefした名前をlist_tとするの間違いじゃなかろうか・・・
349 名前:デフォルトの名無しさん [2008/02/20(水) 12:13:13 ] >>330 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6069.txt 問題をそのまま書いた方が良いと思うよ・・・
350 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:57:42 ] >>336 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6070.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6071.txt 一応作ってみた 考え方が良く分からんから、まぁたぶん大丈夫だろう的なレベル
351 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:47:15 ] >>348-349 ありがとうございます。
352 名前:デフォルトの名無しさん [2008/02/20(水) 21:23:03 ] >>350 ありがとうございます
353 名前:デフォルトの名無しさん [2008/02/22(金) 00:51:17 ] [1] 授業単元: プログラミング実習 [2] 問題文(含コード&リンク): ・リスト構造 アルファベットの文字列をいくつか読み込み、それを、アルファベット順にソートし、以下のコマンドが入力された場合、それぞれの命令を実行せよ。 条件として、リスト構造が使われていること、サブ関数の呼び出し(単純なものでもよい)が使われていること、malloc関数が使われていること。 p :入力された文字列を表示する。 a :指定された文字列をリストに追加する。(アルファベット順に並ぶように) d :指定された文字列をリストに削除する。(不要になった記憶領域はfree()を使って開放すること。また、指定された文字列がリストに無い場合は、その旨を表示。) q :プログラムを終了する。 ? :使用可能なコマンドの一覧を表示する。 end:データ入力の終了 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2月26日まで [5] その他の制限: こんな感じです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6072.txt できればなるべく簡単な方法でお願いします。
354 名前:353 [2008/02/22(金) 00:54:56 ] ごめんなさい、訂正です。 × d :指定された文字列をリストに削除する。 ○ d :指定された文字列をリストから削除する。
355 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:55:06 ] >>353 BUFSIZE文字以上の入力があった場合に異常動作を起こす他、色々と問題・手抜きは抱えてるが少なくともその実行例は通る ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6073.c
356 名前:353 [2008/02/22(金) 03:24:27 ] >>355 ありがとうございます。 しかし、まんまコピペでコンパイルが通りませんでした… そしてNode型とかようわからん件…ごめんなさい低級で とりあえず自分なりにいじってみます。ダメだったらまたくるかも。
357 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 03:27:56 ] >>356 あぁ、VC++2008でコンパイルしたから気付かんかったけど C99形式のコメント(//〜)を使ってるからそれかもしれん その部分を全部消してみてくれ
358 名前:353 [2008/02/22(金) 03:50:47 ] >>357 消してみましたが、やはり同じようです。 とりあえずvistaですが、bccでまんまコピペでコンパイルしてみた結果、以下が表示されました。 list.c: 警告 W8060 list.c 24: おそらく不正な代入(関数 insert ) 警告 W8060 list.c 24: おそらく不正な代入(関数 insert ) 警告 W8060 list.c 32: おそらく不正な代入(関数 insert ) 警告 W8060 list.c 32: おそらく不正な代入(関数 insert ) 警告 W8060 list.c 56: おそらく不正な代入(関数 deleteNode ) 警告 W8060 list.c 56: おそらく不正な代入(関数 deleteNode ) エラー E2468 list.c 100: void 型の値は許されない(関数 appendProc ) 警告 W8019 list.c 100: コードは効果を持たない(関数 appendProc ) エラー E2468 list.c 114: void 型の値は許されない(関数 deleteProc ) 警告 W8019 list.c 114: コードは効果を持たない(関数 deleteProc ) エラー E2468 list.c 136: void 型の値は許されない(関数 main ) 警告 W8019 list.c 136: コードは効果を持たない(関数 main ) *** 3 errors in Compile ***
359 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:01:06 ] >>358 コメントを消した状態ならこっちではANSI C準拠の設定でgcc通る(警告は出る)以上分かりかねる bcc捨ててくれとしか言い様がない 使用したgccは以下 gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
360 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:21:12 ] これはbccのバグっぽい
361 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:24:08 ] 多分三項演算子とfgetsの合わせ技でエラーになってんだろうな bccだとvoid fgetsで定義されてるとかか?
362 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:26:26 ] [1] 授業単元: 基礎プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6074.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:本日正午まで(恐らく本日中であればなんとかなります) [5] その他の制限: なるべく自分でどうやっているプログラムなのか理解した上で提出した方がいいため、 if文やfor文使いまくりでもいいので、簡単なプログラムにしていただけると助かります。
363 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:37:40 ] >fgets(buf, BUFSIZE, stdin) ? 0 : exit(1);
364 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:39:46 ] >>358 fgets(buf, BUFSIZE, stdin) ? (void)0 : exit(1); これで回避できるみたいだが、よくわからんな。 bccの3項演算子の扱いが謎。
365 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:46:17 ] voidとそうじゃないものを並べちゃいけないみたいだね。 void同士ならOKらしい。
366 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:53:24 ] >>362 とりあえず適当 (1) #include<stdio.h> void num2roma(int num,const char roma[]){ const int mod = num % 10; const int div = num / 10; const int mod5 = num % 5; int i; if(div)num2roma(div,roma+2); if(mod5==4){ putchar(roma[0]); putchar(roma[mod/4]); }else{ if(mod5!=mod) putchar(roma[1]); for(i=0;i<mod5;++i) putchar(roma[0]); } } int main(void){ int num; while(scanf("%d",&num)==1){ num2roma(num,"IVXLCDM"); putchar('\n'); } return 0; }
367 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:54:59 ] (2) #include<stdio.h> int main(void){ int count[100]; int i,j,h; for(i=0;i<100;++i){ count[i] = 0; } for(i=0;i<30;++i){ if(scanf("%d",&h) != 1){ break; } ++count[h/5]; } for(i=0;i<100;++i){ if(count[i] != 0){ printf("%d...%d%8d : ",i*5,i*5+5,count[i]); for(j=0;j<count[i];++j){ putchar('*'); } putchar('\n'); } } return 0; }
368 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 18:01:06 ] >>362 >>366 はでかいミスがあった それは忘れてこっちを使ってくれ (2) 3999までの正整数をローマ数字にする int2roman.cpp ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6075.txt
369 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:32:04 ] ここのスレはソースをはってどこがおかしいか おしえてくれるスレですか? かなりながいソースなんですが。
370 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:45:43 ] >>369 そりゃもう手取り足取り どれだけ長いソースでも宿題であれば片付けるよ それが2ちゃんクロリティ
371 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:50:06 ] ただちょっと専門的な話だから 流れをかいたファイルといろいろこみの tar.gz形式のファイルでうpします あとで。
372 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:53:24 ] >>371 教授から出されたような難解で困難な宿題?
373 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:14:14 ] [1] 授業単元: 認識 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6076.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:月曜日までといいたいところですが [5] その他の制限: おねがいします。わからないことがあれば聞きます。
374 名前:373 mailto:sage [2008/02/22(金) 23:20:53 ] www12.axfc.net/uploader/18/so/Ne_12654.gz.html こちらです すいません。
375 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:24:36 ] >>373 件のファイルが既にありません。 しかも、「実行ファイルを実行せよ」というのはかなり怪しいです。 ウィルスなら誰も手を出しません。
376 名前:373 mailto:sage [2008/02/22(金) 23:35:20 ] //としてるとこは全部消してもらってもかまいません。 あとでみたらログチェックしたままのファイルでした
377 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:47:07 ] 誰もがDVIファイル読める環境にあると思うなよw せめてPDFくらいは・・・ あと実行ファイルは誰も実行せんがな(´・ω・`)
378 名前:373 mailto:sage [2008/02/22(金) 23:50:28 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6077.txt すいません。
379 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:53:25 ] DVIを読むためにいろいろと導入するのが理系の学生だと思うけどなぁ…… でも俺の周りでdvioutとかGhost Scriptとかまで入れてるのは二三人しかいないなぁ…… そもそもTeXすら入れてないってやつが多いし…… Linuxのパッケージ?にはUNIX派生のいろいろが入っているからいいんだろうけど……
380 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:55:59 ] このスレって理系の学生が答えるスレだったっけ?
381 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:58:44 ] >>378 そのファイル読んだけど、やってる処理に関する知識を持ってないから全く分からん その点も説明して貰わんと、分かる人間しか答えられんぞ
382 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:19:49 ] 余計な文消して文消して コメントをいれるようにしてもう一度うpします。 そっちのほうがわかるとおもうので。
383 名前:373 mailto:sage [2008/02/23(土) 13:37:46 ] gaiyou.txtと図をいれてみました。pngもしくはjpg形式です。 お願いします。 www12.axfc.net/uploader/18/so/Ne_12711.gz.html
384 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:16:36 ] チェックしてみようかと思ったが、 コンパイルすら通らずにエラーや警告出まくりなんで止めた。
385 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:21:04 ] コンパイルはとおるけど
386 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:21:51 ] >>384 ヘッダファイルをチェックしてみては? Windowsには無くてLinuxにはある、っていうヘッダがたくさん含まれている可能性もある
387 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:14:26 ] tarファイルって書いてあるのにgzなのが気になって仕方が無い
388 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:27:17 ] uploader側で末尾のピリオド以降を拡張子と自動認識されてるんじゃないの
389 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:52:27 ] それにしてもtar.gzファイルとかtgzファイルとか書き方があると思った
390 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:02:52 ] 宿題がこないね
391 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:08:25 ] #include <stdio.h> void main(void) { FILE *kadaip; char buff[256]; int n; printf("文字を入力してください!\n"); printf("(Enterを入力すると終了)\n"); scanf("%c",&n); kadaip = fopen("C:\\kadai.txt","w"); if(kadaip != NULL) { gets(buff); while(buff[0] !='\0') { buff [256]= fprintf(kadaip,"%c\n",n); printf("文字を入力してください!\n"); printf("(Enterを入力すると終了)\n"); scanf("%c",&n); gets(buff); } if(buff < 0) printf("出力エラー!\n"); fclose(kadaip); } else printf("openエラー入力エラー!\n"); } 全然わからなくて、とりあえず作ってみたのがこれです。間違いだらけだと思いますが教えていただけたら嬉しいです。 あと、プログラムの終了条件は文字データの入力がないときです。よろしくお願いいたします。
392 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:09:55 ] [1] 授業単元:プログラミング [2] 問題文:キーボードから入力した内容をファイルに保存して表示するプログラムを作りなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual stdio [3.3] 言語: C [4] 期限:2月25日まで [5]上のものです。間違って先にプログラムの方を投稿してしまいました。 環境等はこちらです。すみませんでした。
393 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:22:40 ] >>392 #include <stdio.h> int main(void) { FILE *kadaip; char buff[256]; int n; kadaip = fopen("C:\\kadai.txt","w"); if(kadaip != NULL) { printf("openエラー入力エラー!\n"); return 1; } while(1) { printf("文字を入力してください!"); printf("(Enterのみを入力すると終了)\n"); gets(buff); if(buff[0] =='\0') break; n=fprintf(kadaip,"%s\n",buff); if(n<=0) { printf("出力エラー!\n"); break; } } fclose(kadaip); return 0; }
394 名前:393 mailto:sage [2008/02/24(日) 00:01:01 ] >>393 が間違ってたので訂正 if(kadaip != NULL) ↓ if(kadaip == NULL)
395 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:04:26 ] 373ですけど どうですかね? バグはみつかりましたか?
396 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:58:57 ] >>394 訂正のとおりに実行してみたら無事にできました。お早い返答ありがとうございました。
397 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:54:24 ] www.nicovideo.jp/watch/sm2417405 これか
398 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:00:08 ] >>397 どれだよw
399 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:09:19 ] www.akibablog.net/archives/2008/02/hardcore-080221.html こちらか
400 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:10:21 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 巡回セールスマン問題の厳密解を求めるプログラムを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC 2008 Exp [3.3] 言語: どちらでも可 [4] 期限: 2/25 12:00 ごろ 動的計画法で求めようとしているのですが、最小コストは求まったものの そのルートを求める方法がいまいちわかりません。 dist[a][b] には a -> b の距離が入っています (a->b = b->a) n は巡回頂点数です kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6084.txt
401 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:13:14 ] >>400 ちょっと質問 ソースとか全然みてないでいうんだが、問題文は「厳密解」になってるけど 動的計画法って「近似解」を求める方法じゃない?
402 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:19:46 ] >>401 すまn 漏れの勘違いだったorz
403 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:00:32 ] >>400 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6086.c ・cost のサイズがでかすぎで手元でコンパイル通らなかったので減らした ・n や dist や CITY_NUM の定義が分からなかったので適当に補間した 以後ソースを挙げるなら定義の部分も含めてくれ 実行可能であることが最も望ましい
404 名前:403 mailto:sage [2008/02/25(月) 02:01:47 ] >>403 >コンパイル通らなかったので減らした これは間違いで、コンパイルは通ったが実行時エラーが出たので減らした
405 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:53:48 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6089.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2月29日正午ごろまで(できれば28日中) [5] その他の制限: 問題文の例の図がずれて見づらくなっちゃってます。すみません。 ←valueの行で‖と‖の間が空白の場所は数値が入っておらず、演算子に対応してる位置だと思ってください。 また、大分長くなってしまってもいいので、なるべく簡単なプログラムでお願いします。 可能であればでいいので、何を目的とした部分なのか程度の注釈をいくつかつけてくださると助かります。
406 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:57:34 ] [1] プログラミング [2] 問題文長くなるので下に書くごめんなさい [3] 環境 [3.1] OS: Windows2000 [3.2] すいませんわかりません [3.3]C 言語 [4] 期限: ([2008年2月26日まで] できるだけ早くお願いしたいです。 [5] 制限は特になし 機動及びmain関数(kin_main.c) このプログラミングの実行ファイルの名称は(kintai)のする。起動時に因数として勤怠情報ファイルを引数を与える。 >kintai kin0004 引数なしで機動した場合には、ファイル名を入力するようにメッセージを表示させる。 >kintai >勤怠情報ファイルパスを指定してください。 > このプログラミングのmain関数。初期化処理(kin_init()),勤怠情報記録ファイル読み込み処理(kin_file_read()), 入力情報論理チェック機能(kin_logic_chk()),勤怠計算機能(kin_calc()),標準出力機能(kin_display),CSVファイル生成機能(kin_create_csv()), を順次に呼び出し。各関数の戻り値がエラーの場合にはその時点でmain関数に戻る。プログラムを終了にするにはmain関数 出なければならない。エラー情報はいかに示す。 エラーディファイン 出力情報 意味 ERR_INIT 初期化エラー 初期化関数内でエラー ERR_FILE_ACCESS ファイルアクセスエラー ファイルアクセスに失敗した場合 ERR_LINE_NUM_OVER 勤怠情報ファイル文字数オーバー 勤怠情報ふぁいるの1行分文字数が所定の値を超える場合 ERR_PARSE 勤怠ファイル構文エラー 勤怠情報記録の構文が誤ってる場合 ERR_TIME_LOGIC 論理チェックエラー 入力された勤怠情報に誤りがある場合 NG 内部処理エラー 上記のエラーに該当しない場合。 丸なげでごめん
407 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:04:29 ] >>406 勤怠情報ファイルのフォーマットもなしどうしろと? 丸なげどころか、情報がたりなすぎる
408 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:19:28 ] >>407 すまんまだはじめたばっかで フォーマットを検索してもわからん でもこんな感じになるはずなんだ yutori.2ch.net/test/read.cgi/news4vip/1203862807/ の>>4 と>>5
409 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:24:18 ] >>408 見えない なんで検索しないといけないのかも分からんよ
410 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:26:18 ] >>406 とりあえずツッコミどころが満載だな…… ・CSVファイル生成機能(kin_create_csv())でのエラーは捕まえないの? ・エラーを出すのなら、その逆として「●●の処理は成功しました」と順次表示していくと親切じゃない? ・NG→ERR_internal の方がかっこよくない? ・ERR_TIME_LOGICで、「一ヶ月の勤務日数が32日です」とか 「終業時刻+残業時間が、退勤時刻を超えてる」とかも出したほうが親切じゃない?
411 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:32:10 ] int main(int argc,char **argv){ int Result=0; if(argc<2){ puts("勤怠情報ファイルのパスを指定してください"); }else{ FILE *pFile=fopen(argv[1],"rb"); if(pFile==NULL){ printf("%s はオープンできないよ\n",argv[1]); }else{ printf("%s をオープンしたよ\n",argv[1]); puts("閉じるよ"); Result=kin_init(); if(Result<0)printf("kin_init()が %d だと言ってる\n",Result); すまんこんな感じになると思うんだ
412 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:34:46 ] >>410 すごい親切だと思うけどどうやるかさっぱりわからん
413 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:36:34 ] 最初のif else 文からしてあやしい。 fopenを二回やることになるぞ ・引数ありで起動した場合 ・引数なしで、ファイルパスを指定(入力?)する場合
414 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:47:15 ] >>411 のは昨日やってもらったやつなんだ 引数与えないと起動しないようにするらしい kintai kin0004.txtをつけるなければきどうしないようにする 0004は日付が入るyymmでyyが西暦の下二桁mmが該当月 .txt入らないと起動しないようにするみたいなです
415 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:53:12 ] >>414 「ファイル構文」という用語を持ち出すほどだから、 勤怠情報のファイルフォーマットはxmlくらいのものだと思った CSV出力があるのなら、最初からCSV形式で勤怠情報のファイルフォーマットを策定すればいいんじゃない? 古い諺だが データ構造+アルゴリズム=プログラミング と言うし。
416 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:58:06 ] >>415 ありがと でも初心者の俺にはさっぱり意味がわからん
417 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:15:29 ] もしかして勤怠情報ファイルのフォーマットは決まってないのか?
418 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:32:40 ] 正直フォーマットって言葉がでてこないから決まってないです。 問題文にkintai kin0004.txtだった 。.txtぬけてたすまん
419 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:22:08 ] 週末、勢い込んでカレー作った。 たまねぎ炒めるところから始めて、 かなり気合入れて作った。 たまねぎの量、土日あわせて6玉。 うまかった。 でも今日の屁が死ぬほどくさい。
420 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:27:19 ] 余ったタマネギは犬猫に食べさせちゃだめだよ!!! でも実験という名目ならいいのかな??
421 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:33:19 ] だるいから嫌
422 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:33:53 ] だるいから嫌
423 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:35:56 ] だるいから嫌
424 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:03:54 ] だるいから嫌
425 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 02:25:49 ] >>405 多少問題文とやり方が違うし、あんま自信ないけど、一応できたのでうp kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6091.txt
426 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 04:07:54 ] だるいから嫌
427 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 07:14:34 ] >>425 乙です ありがとう
428 名前:デフォルトの名無しさん [2008/02/26(火) 11:45:04 ] [1] 授業単元: C [2] 問題文(含コード&リンク): 3次元配列を用いたカレンダー生成プログラム 任意の西暦年数nを与えて、n年のカレンダーを下記の仕様により、作成せよ。 1)3次元配列day[12][6][7]を使用する。 2)出力形式は 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 とする。 3)うるう年にも対応させる。 [3] 環境 [3.1] OS:MacOSX 10.5 [3.2] コンパイラ名とバージョン:gcc 4.0.1 [3.3] 言語:Cでお願いします。 [4] 期限:2/27に提出です。 [5] その他の制限:特にありません。できれば、配列に組み込む部分と出力部分には関数を使ってほしいです。 日を配列に組み込むところで、つまってしまい、どうにもならなくなってしまいました。 最終的には理解できるようにしたいので、簡単なコメントなどつけてくれると嬉しいです。 急ぎで申し訳ありませんが、よろしくお願いしますm(_ _)m
429 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:11:46 ] わざわざ配列に入れる必要なんてないと思うけど
430 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:32:22 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク): 個人課題 )IDカードを読み込んだら、その番号を"IDList.txt"に出力せよ。 buf[]にはそれぞれ二桁の16進数が入ってるのですが、それを繋げて、 strとしました。このstrに入った値を"IDList.txt"に書き込んでいきたいのです。 略) sprintf(str, "%02x%02x%02x%02x%02x\n", buf[0], buf[1], buf[2], buf[3], buf[4]); これ以降をよろしくお願いします。 ※カードを読み込むたびにstrは変わります。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:VS2005pro [3.3] 言語:C++ [4] 期限:特になし [5] その他の制限:特になし ド素人な課題で申し訳ないのですがよろしくお願いします。
431 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:21:29 ] >>430 それ本当にC++の授業なのか? C++の特色のひとつは、Cから格段に進化した文字列操作だぞ
432 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:31:08 ] >>430 つーかそれ、FILE * fp = fopen("IDList.txt", "w")してsprintf(str, ...)をfprintf(fp, ...)にすればいいだけじゃん。
433 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:55:13 ] >>431 C++の授業ではないのですが、C言語の授業の延長の授業で、 環境がC++だったんでそのように書きました、申し訳ありません。 確かにやっていることは++は含んで無いのだと思います。 >>432 ありがとうございます。 "a"にしたら望んでいた物になりました。
434 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:43:10 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6092.txt [3] 環境 [3.1] OS: Linux /Windows [3.2] コンパイラ名とバージョン: (Linux)gcc /(Windows)コマンドプロンプト上でコンパイル [3.3] 言語: C [4] 期限: 2月28日中 [5] その他の制限:長いプログラムになっても構いませんので簡単めなプログラムでお願いします。 設問1と設問3は自分で考えて辿り着いた答を書いてます。違っていたら指摘お願いします。 問2のコメント以下は実際に実行時間を計測して考察しろ的なものだと思うのですが、 どうやればいいのかいまいち分からないため簡単にでいいのでどうやればいいのか教えてください。
435 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:53:38 ] >>434 これ問題文そのまま「コピペ」してるか?
436 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:59:02 ] >>434 設問2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6093.c 設問3 NULL: 「これ以上前の文字が存在しない」はOK、「次の文字に移る」は、違う DEL: 「これ以上後の文字が存在しない」はOK、「全文字の並べ替え終了」は、違う s1 スタックには下→上に、文字が小→大で積まれる s2 スタックには下→上に、文字が大→小で積まれる ので、s1,s2のスタックに有効な文字データが無い状態をチェックするために使用している(番兵) つまり、2.aの処理の場合にNULL文字がなければ、 s1スタックにデータが無いという状態をチェックする文( if (s1が空) { ... } のような文 ) が必要になるが、 番兵(NULL文字)を用いることにより、その必要がなくなる (番兵については、wikiでもみてね)
437 名前:400 mailto:sage [2008/02/26(火) 20:51:48 ] >>403 ありがとうございます。 説明不足で余計なお手数をおかけしてしまい申し訳ありません。 確かに、double では静的確保に成功する配列サイズなのに、 int で同じ添え字の配列を確保しようとすると確かにクラッシュするようです。不思議ですね。 その点は malloc で動的確保することで無事に動作しました。
438 名前:438 mailto:sage [2008/02/26(火) 21:23:50 ] >>428 行数制限のため入出力は関数にしなかったが。 #include<stdio.h> int day[12][6][7]; int z(int y,int m,int d){ if(m<3)y--,m+=12; return(y+y/4-y/100+y/400+(m*13+8)/5+d)%7; } int main(void){ int y,s,m,w,d; while(1){ printf("y="); scanf("%d",&y); //格納 for(m=0;m<12;m++) for(w=0;w<6;w++) for(d=0;d<7;d++){ day[m][w][d]=w*7+d+1-z(y,m+1,1); if(day[m][w][d]<1||day[m][w][d]>(z(y,m+2,1)-z(y,m+1,1)+7)%7+28) day[m][w][d]=0; } //表示 for(s=0;s<3;s++) for(w=0;w<6;w++,printf("\n")) for(m=0;m<4;m++,printf(" ")) for(d=0;d<7;d++) if(day[s*4+m][w][d]>0) printf("%2d",day[s*4+m][w][d]); else printf(" "); } return 0; }
439 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:11:44 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 文字頻度と文字の連接頻度をカウントするプログラムを作成せよ。 尚、入力ファイルにhamlet3-1をWebからダウンロードして使い、tsv形式で結果を出力せよ。($./a.out hamlet3-1.txt > hamlet.tsv としてプログラムを実行) ‐処理 ・入力ファイルを「読み込みモード」でオープンする ・ファイルの銭湯から1文字ずつ読み込みながら小文字にそろえて、'a'〜'z'の範囲にある場合は以下の処理を行う。 @'a'〜'z'の各文字g亜出現する頻度を計数する。 A連続する2文字の連接頻度をa-a,a-b,...z-zまで計数する。 途中にスペース、改行などアルファベットが入った場合は連接していないとする。 ・計数結果を標準出力に出力 hamlet3-1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6095.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2008/02/27 23;59迄 [5] その他の制限:特にありません。 よろしくお願いします。
440 名前:デフォルトの名無しさん [2008/02/27(水) 00:17:52 ] [1] 授業単元:プログラミング演習 [2] 問題文: 空気中でつるされている銅球の温度変化は以下の式で求まる。 Cp・ρ((πd^3)/6)dT/dt=-πd^2((λ/d)Nu)(T-Tair) 周辺空気の温度Tair=300K、流速3m/sのときの銅球の温度変化を計算しなさい。 なお、t=0sで銅球の初期温度はT0=700K、銅球の温度分布は無視し、各物性値は500Kで計算のこと。 (Cp=1.03kJ/kgK、ρ=8813kg/m^3、λ=39.71×10^3W/mK、Nu=11.04) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語:C++ [4] 期限: 2008年2月27日15:00 [5] その他の制限:使用したアルゴリズムは全て関数化する。 ルンゲクッタ法を使用 どうしてもわからないのですみませんがお願いします。
441 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:26:00 ] >>440 微分方程式を解くのか?
442 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:32:01 ] >>441 そうなんだと思います。
443 名前:デフォルトの名無しさん [2008/02/27(水) 01:23:12 ] [1] 授業単元:情報処理 [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: Windows [3.2]コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: 2008年2月27日 12:00 2つの文字列A,Bに入力し、、 それぞれの文字列の先頭から順に一文字づつ抜き出し、 交互に出力するプログラムを作成しなさい。 Str関数を使用しない 例: 文字列Aにabcd 文字列Bに123456 と入力すると 出力結果 a1b2c3d456 が出力されるようにする。 よろしくおねがいします
444 名前:デフォルトの名無しさん [2008/02/27(水) 01:29:42 ] >>439 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6096.txt
445 名前:デフォルトの名無しさん [2008/02/27(水) 01:31:44 ] >>444 は間違い。
446 名前:デフォルトの名無しさん [2008/02/27(水) 01:38:15 ] >>439 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6097.txt こっちが正しい。
447 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:44:13 ] >>443 #include <stdio.h> int main(void) { char bufA[32], bufB[32]; int i=0; printf("文字列Aの入力:"); fgets(bufA, sizeof(bufA), stdin); printf("文字列Bの入力:"); fgets(bufB, sizeof(bufB), stdin); while(bufA[i] != '\n' && bufB[i] != '\n') { putchar(bufA[i]); putchar(bufB[i]); i++; } if(bufA[i] != '\n') puts(bufA+i); if(bufB[i] != '\n') puts(bufB+i); return 0; }
448 名前:デフォルトの名無しさん [2008/02/27(水) 01:46:34 ] Str関数ってなんだろう。Str関数を作れって意味ではなさそうだし。 str〜関数を使えってことかな?
449 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:15:44 ] >>439 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6098.c >>444-446 連接の解釈が違うきがする
450 名前:デフォルトの名無しさん [2008/02/27(水) 02:22:55 ] >>449 ああああああ!!! そうか、そういうことか。
451 名前:443 [2008/02/27(水) 02:27:24 ] >>447 すみません、書き忘れてましたorz 配列でなくポインタででした・・ >>448 strのとこはstrcpyとか使わないでということです。
452 名前:!= 447 [2008/02/27(水) 02:48:15 ] >>451 bufA[i]←こういうのがあってはいけないってことかな? ならば、 #include <stdio.h> #include <stdlib.h> int main(void) { char *bufA, *bufB; int i=0; bufA=malloc(32); bufB=malloc(32); printf("文字列Aの入力:"); fgets(bufA, 32, stdin); printf("文字列Bの入力:"); fgets(bufB, 32, stdin); while(*(bufA+i) != '\n' && *(bufB+i) != '\n') { putchar(*(bufA+i)); putchar(*(bufB+i)); i++; } if(*(bufA+i) != '\n') puts(bufA+i); if(*(bufB+i) != '\n') puts(bufB+i); free(bufA); free(bufB); return 0; }
453 名前:440 [2008/02/27(水) 04:50:45 ] 微分方程式は手計算で解いてみたんですがソースを作ってみても解が出てきません… どうすればいいかもまったくわからないです… どのような解法でもいいのでどなたか本当にお願いします。
454 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:02:02 ] >>440 この温度変化の微分方程式の本質は dT(t)/dt = a * T(t) + b という形になるはず。 この解は、微分しても同じ形の関数T(t)が出てくるので、 T(t) = c * e^t のように、指数関数になる、っていうのまではいいのか?
455 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:15:33 ] >>454 それはよくないんじゃないか?
456 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:18:02 ] >>453 ルンゲクッタ法を調べる
457 名前:440 [2008/02/27(水) 10:58:22 ] >>454 そこまではわかったんですが…どのようにソースを作ればいいのかがわからないです。 ルンゲクッタ法を用いてやってみているんですが解が求まりません…
458 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:01:17 ] >>446 ,449 ありがとうございます!
459 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:02:55 ] >>457 ある程度できてるならソース張って添削してもらった方が早いと思うぞ。
460 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:45:16 ] >>440 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6100.cpp
461 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:47:16 ] >>454 T(t) = c e^t だったら温度が指数関数的に吹っ飛ぶことになるが
462 名前:440 [2008/02/27(水) 12:43:05 ] 以下が自分で作成したソースです。 曖昧なところが多々あってすいません。 double Onndo(double t0, double T0, double h,double k) { int i; int x,y,k1,k2,k3,k4,h2; double K ; /* 解法で得られた値を格納する変数 */ x=t0;y=T0; h2=h/2.; for(i=0;i<=y;i++){ k1=f(x,y,k); k2=f(x+h2,y+h2*k1,k); k3=f(x+h2,y+h2*k2,k); k4=f(x+h,y+h*k3,k); x=t0+(double)i*h; y+=(k1+2.*k2+2.*k3+k4)*h/6.; } K=x; return K; }
463 名前:440 [2008/02/27(水) 12:44:34 ] >>462 *---- 関数f(x,y)の設定 ----*/ double f(double x, double y,double k) { double f; f=k*(y-300)*x; return f; } /*----- 解の設定 -----*/ double Ans_f(double y,double x,double k) { return exp(-k*x); } k=(-6*ramu*Nu)/(Cp*ro*d*d);として計算しています。
464 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:31:19 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6101.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 28日24:00まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) まだ講義ではそこまで深くプログラミングを学んでいないため、if文for文など簡単な文を多めに使う感じにしてください。 プログラムでなく考察を要求してるところを横棒で区切りました。 そちらの方にも軽くヒントなどいただきたいです。
465 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:53:39 ] >>440 Cp……銅の比熱(500K) ρ……銅の密度(500K) d……??? λ……熱伝達係数 Nu……ヌッセルト数 流速3m/s はどこで使うの? d は何? πd^2((λ/d)Nu) の部分は πdλNu と約分できそうだけど、ホントにこのままでいいの? それともd^2ってのは二階微分を表してるの?
466 名前:465 mailto:sage [2008/02/27(水) 16:39:07 ] >>440 そもそも、その銅球の半径は? それがd?
467 名前:デフォルトの名無しさん [2008/02/27(水) 22:56:46 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): コマンド ライン引数に指定されたファイルすべてに対して、 改行文字以外の各行を、 逆さまにして表示するプログラムを書いてください。 なお、対象のファイルには英数字などの半角文字のデータのみが入っているものとし、 漢字などの全角文字は含まれていないものとします。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: [3.3] 言語:C [4] 期限: 2008年2月28日 11:00 [5] その他の制限: 1.文字列の最後の文字から先頭に向かって、順に 1 文字ずつ表示 (ただし、文字列の最後の文字が改行文字の場合、その次から始める) 2. 1 で改行文字があったならば、改行文字を表示 だれかよろしくお願いします
468 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:26:20 ] // >>467 #include <stdio.h> #include <string.h> static void flip(char * str) { char * tail = strchr(str, '\n'); if (tail == NULL) tail = strchr(str, '\0'); for (--tail; str < tail; ++str, --tail) { char foo = * str; * str = * tail; * tail = foo; } } static void flipCat(const char * fileName) { FILE * fp = fopen(fileName, "r"); char buf[1000]; while (fgets(buf, sizeof(buf), fp) != NULL) { flip(buf); fputs(buf, stdout); } fclose(fp); } int main(int argc, char ** argv) { for (int ic = 1; ic < argc; ++ic) { flipCat(argv[ic]); } return 0; }
469 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:43:38 ] >>464 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6103.txt こんな感じかな? 再帰関数を使っているのであんまりサイズが大きい配列だとプログラムが異常終了するかも あと時間の計測方法は知らん 適当にmain関数を使っていじってみて
470 名前:デフォルトの名無しさん [2008/02/28(木) 07:54:50 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):以下の条件を満たしロトのプログラムを作成しなさい。 1 1〜42の中から6つの数字と1つのボーナス数字を選ぶことができます。ただし同じ数字を選ぶことはできません。 2 7つの数字は1次元配列の中になければなりません。 3 1つ1つの問題に対して関数定義を作り1つのプログラムで完成させなさい(関数を使う) 4 すべての関数はポインタを使いなさい。 問1 6つの数字と1つのボーナス数字を選ぶプログラム(エラー表示を含む) 問2 選らんだ数字とボーナス数字を1次元配列で表示しなさい 問3 選んだ数字とボーナス数字を小さい順に並べなさい 問4 ランダムに抽選されるプログラムを作り選んだ数字と比較し、以下の中の1つを表示させなさい Match 6 Jackpot Match 5 + Bonus Almost - just 1 away Match 5 Holidays paid for Match 4 + Bonus Night out Match 4 Full petrol tank Match 3 + Bonus Grub at local takeaway 問5 何回数字を選んだか表示しなさい (例)1はx回選ばれました [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン: [3.3] 言語:C言語 [4] 期限:2008年3月3日まで [5] その他の制限:ありません 丸投げです。どなたかよろしくおねがいします。
471 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:24:35 ] >>470 久々に書くと酷いな kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6104.txt
472 名前:470 [2008/02/28(木) 09:35:36 ] >>470 ほんとうにありがとうございます。 質問なんですが問4のランダム抽選はどのように表示されますか?
473 名前:470 [2008/02/28(木) 09:56:40 ] ↑アンカーミスです。。 >>471 ほんとうにありがとうございます。
474 名前:デフォルトの名無しさん [2008/02/28(木) 10:20:39 ] >>468 ありがとうございます。さっそくやってみたのですが、 test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。 test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。 test2.c(26) : error C2143: 構文エラー : ')' が '型' の前にありません。 test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。 test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。 test2.c(26) : warning C4552: '<' : 演算子にプログラム上の作用がありません。作用 を伴う演算子を使用してください test2.c(26) : error C2059: 構文エラー : ')' test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。 test2.c(26) : error C2143: 構文エラー : ';' が '{' の前にありません。 test2.c(27) : error C2065: 'ic' : 定義されていない識別子です。 と表示されるのですが…
475 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 10:47:43 ] >>474 int ic; for (ic = 1; ic < argc; ++ic) { に変えたら?
476 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:38:15 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):キーボードから整数の入力を4回繰り返し,それらの値を2次元配列 A の各要素に順に代入し,その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ. 結果例 1行1列の要素? 6 1行2列の要素? 5 2行1列の要素? 4 2行2列の要素? 3 行列A = 6 5 4 3 行列式 = 2 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン: VC [3.3] 言語: C++ [4] 期限: 本日夕方6時まで もしよろしければどなたかお願いします。
477 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:50:12 ] >>476 #include <stdio.h> int main(void) { int a[2][2],i,j; for(i=0;i<2;i++){ for(j=0;j<2;j++){ printf("%d行%d列の要素? ",i+1,j+1); scanf("%d",&a[i][j]); } } printf("行列A =\n%d %d\n%d %d\n",a[0][0],a[0][1],a[1][0],a[1][1]); printf("行列式 = %d",a[0][0]*a[1][1]-a[0][1]*a[1][0]); return 0; }
478 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 14:10:59 ] >>477 早すぎるお仕事、ありがとうございました
479 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:18:18 ] 宿題マダー?
480 名前:デフォルトの名無しさん [2008/02/28(木) 21:29:27 ] では300Mのテキストファイルを速くブロックソートするプログラム作ってくれよ 昨日から作ってるけど速くならない
481 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:31:48 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6106.txt [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2008年3月1日 [5] その他の制限:
482 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:56:15 ] >>480 どんな環境でどんなデータに対してどれだけ時間がかかるのが遅いって言うんだ? 基準をplz
483 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:06:59 ] >>481 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #define BSIZE 128 int main(int argc, char **argv){ int rfd, rdnum char buf[BSIZE]; if ((rfd = open(argv[1], O_RDONLY)) == -1) { perror(argv[1]);exit(1); } else { printf("ファイルのオープンに成功しました\n"); } while(1){ if ((rdnum=read(rfd,buf,BSIZE))<1) break; printf(" %d\n",rdnum); } close(rfd); return 0; }
484 名前:デフォルトの名無しさん [2008/02/29(金) 01:11:21 ] >>482 全文字列を展開してソートした場合 #include <iostream> #include <string> #include <set> #include <time.h> using namespace std; class gou{ public: string str; int num; gou(string a, int b){str=a; num=b;} bool operator<(const gou& a)const{return str<a.str;}}; main(){ int sz=20000,n; string a(sz,'\0'); for(n=0;n<sz;n++)a[n]=rand()&255; multiset<gou> s; int cl=clock(); for(n=0;n<sz;n++){ s.insert(gou(a,n)); a=a.substr(1)+a[0];} cl=clock()-cl; cout<<"20kのブロックーソート "<<(cl+0.0)/1000<<"sec \n"; }
485 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:15:30 ] >>483 トン
486 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 02:33:11 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 1) 3つの「点」からなる構造体「三角形」を作成しなさい。1つの「三角形」を構成する3つの頂「点」の座標を読み込み、三角形の重心を求めなさい。 2) 「三角形」の重心を計算する関数を作成しなさい。この関数を用いて問題1を行いなさい。 3) 2つの「三角形」の「頂点」の座標を読み込み、どちらの「三角形」の中心点が原点に近いか求めなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31 [3.3] 言語:C++ [4] 期限: 2008年2/29日中 [5] その他の制限: なし 切羽詰って依頼します。よろしくお願いします。
487 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 03:54:35 ] >>486 3)は、「中心点が原点に近いか」じゃなくて「重心が原点に近いか」じゃないの?
488 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 07:58:42 ] 重心の求め方がわからない? 各座標のx,yをそれぞれ足して3で割るだけじゃん。
489 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:57:25 ] >>486 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6107.txt
490 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:06:38 ] >>484 多少は早いんじゃないかと思う。 20kで動かせないからわからないけど #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/time.h> #include<math.h> typedef unsigned char byte_t; int srcsize; int comp(const void *p1, const void *p2){ return memcmp(*(byte_t**)p1, *(byte_t**)p2, srcsize); } int main(void){ int n; byte_t *src, *blockarea, *tmp, **blocklst; struct timeval stv={0}, etv={0}; srcsize=20000; src = (byte_t *)calloc(sizeof(byte_t),srcsize); blockarea = (byte_t *)calloc(sizeof(byte_t),(srcsize*srcsize)); blocklst = (byte_t **)calloc(sizeof(byte_t*),srcsize); if(src == NULL || blockarea == NULL || blocklst == NULL){ return 1; } for(n=0;n<srcsize;n++)src[n]=rand()&255; gettimeofday(&stv, NULL); memcpy(blockarea, src, srcsize); blocklst[0] = blockarea; for(n=1,tmp=blockarea+srcsize; n<srcsize; n++, tmp+=srcsize){ memcpy(tmp, src+n, srcsize-n); memcpy(tmp+srcsize-n, src, n); blocklst[n] = tmp; } qsort(blocklst, srcsize, sizeof(byte_t*), comp); gettimeofday(&etv, NULL); fprintf(stderr, "time %g sec\n", (etv.tv_sec-stv.tv_sec)+abs(etv.tv_usec-stv.tv_usec)/1000000.0); return 0; }
491 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:30:14 ] >>490 あっ、インデックス保持してやないや メモリの解放もわすれてるし・・・ どうも、ボケてるな
492 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:18:41 ] 486です。レス遅くなってしまったがありがとうございました。
493 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:33:08 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): <四則演算機の作成> テキストファイルから数式を読み出し、計算結果を別ファイル名で出力する。 数式には、+−*/()を含む。計算結果は整数とし、小数点以下は切り捨てる。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 2008年3月3日10:00まで [5] その他の制限:逆ポーランド記法に並び替えて計算するという手順で プログラムを作成しなさいとの説明がありました。逆ポーランド記法に 並び替えるプログラムで詰まってしまい先に進めらなくなってしまいました。 丸投げなのですがよろしくおねがいします。
494 名前:デフォルトの名無しさん [2008/03/02(日) 16:00:36 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): <copying-GCをC言語で作成 > 授業で行ったcopying-GCをC言語でせよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2008年3月5日00:00まで [5] その他の制限:なし C言語が大の苦手で、今遅れを取り戻そうとしているのですが。 期限が迫り、自分ではやってみるもののまったくわからないのでお願いします。
495 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:09:41 ] これはひどいwwwww
496 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:17:11 ] おい、だれかエスパーを呼んでくれ
497 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:36:47 ] ぎゃぼー俺には解けそうにない
498 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:34:48 ] この中に誰か授業に行った奴はいないのか!
499 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:22:58 ] >>494 #include "copying-GC.h" #include <stdio.h> int main(void) { char s1[]="copying-"; char s2[]="GC"; printf("%s\n", copygin-GC(s1, s2)); return 0; }
500 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:03:31 ] 個人で作成代行してくれるところってある? 雑誌の後ろらへんとか見てみたんだけどなかった、、、かといって会社に頼むとめちゃくちゃ高いし...
501 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:11:24 ] それが宿題ならここで丸投げすればいい。 そうでないならそもそもスレ違い。
502 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:23:03 ] 宿題だが、難しいから探してる スレ違いということなので、他で探してくる...orz
503 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:53:26 ] いや、宿題ならとりあえずテンプレに沿って書いてみれば? 専門知識が必要だと厳しいかも知れんが、参考になりそうなサイトでの添付してくれれば やさしいお兄さんが答えてくれる可能性はグンと上がると思うよ?
504 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:55:16 ] >>502 前方後円墳の容積を求める宿題なら。。
505 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 08:26:08 ] >>493 途中までです。仕事から帰ったら完成させます。すんません。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6112.txt
506 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 09:58:24 ] >>493 泥臭い kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6113.txt
507 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:16:16 ] >>484 C言語で書いてみたんだが、まだ必要だったらレスplz 参考までに速度比較(速度調べるために遅いマシンで測定した) >>484 のコードで 20000 の時 8.96 sec 書いてみたコード 20000 の時 0.11 sec 書いてみたコード 200000 の時 1.41 sec
508 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:19:39 ] >505,506 493です、ありがとうございました。 直前で見ることができなかったのですが、 なんとか明日まで延ばしてもらえたので ありがたくいただきます。
509 名前:デフォルトの名無しさん mailto:rinji_you@hotmail.co.jp [2008/03/03(月) 19:53:44 ] >>504-504 ありがとう でも前ちょっと聞いたんだけどスルーされちゃったから(キャプチャ関係) ちょっと切羽詰ってて、やらなきゃいけないので 当然謝礼はちゃんと出しますのでやって頂ける方はメールください(捨てアドでいいので) スレ違いすぎるのでとりあえずこれくらいで書き込みはやめます よろしくお願いします
510 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:36:52 ] >>493 もう書いてる人いるけどせっかくだから張ってみる。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6118.cpp
511 名前:デフォルトの名無しさん mailto:age [2008/03/03(月) 20:58:44 ] 素数を求めるC言語プログラミングを教えてください 条件が有りまして for文のネストもしくはwhile文のネストを使ってなおかつgoto文を使って下さい よろしくお願いします。
512 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 21:01:18 ] >>511 >>1 を読んで書き直すか下のURLクリック ttp://pc11.2ch.net/test/read.cgi/tech/1203343907/394
513 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:08:59 ] 「goto使え」って指定は初めて見たなw
514 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:33:35 ] map<int, map<int, int>> hogehoge; ↑外側 ↑内側 これの内側のmapにデータがある時に外側のmapをclearした場合、内側のmapに格納してあるデータは自動的に解放されるのでしょうか?
515 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:36:46 ] >>514 解放されます というか、特定の型の場合だけ残すほうが難しいよ
516 名前:デフォルトの名無しさん [2008/03/03(月) 22:45:31 ] >>515 ありがとうございます。 感謝です。 いつもわざわざ内側をclearしてから外側をclearしていました。><
517 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:07:59 ] >>510 おお、さらに書いていただけたとは・・。 ここまで短くなるものなのですね。自分で途中まで書いてたものが えらく長かったので助かります。505-506の方のと両方参考にして 提出後自分で練り直してみたいとおもいます。 ありがとうございました。
518 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:41:18 ] >>493 俺も作ったから貼ってみる kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6119.c
519 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 02:05:34 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):() for文を使用して、15パズルを作成せよ。 出来るなら経過時間も表示させること。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C++ [4] 期限: 2008年3月29日まで [5] その他の制限: 学校の課題です。出来るところまでやってみたものをろだにあげてあります。 開始時にランダムにピースを配置するものと、正解判定、経過時間の表示が手付かずの状態です。 出来ればあれ(ろだ、6120.txt)に手を加える形で作って頂ければ助かります。
520 名前:519 mailto:sage [2008/03/04(火) 02:08:50 ] ろだへのアドレスを貼り忘れました。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6120.txt です。
521 名前:505 mailto:sage [2008/03/04(火) 02:19:22 ] >>493 当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4)です。 すでに他の方のすばらしいものがあり、私のもののメリットは皆無です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6121.txt
522 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 02:20:54 ] >>519 まずは、パズル.bmpと、空きに、指定する、数字と、完成形を、示して、ください
523 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 03:24:29 ] >>522 大変もうしわけありませんでした。 パズル.bmpはこちら(ttp://neko-loader.net/pict/src/neko18219.bmp)です。アップローダー(ねころだ)ですがご容赦ください。 完成形は、どう言えば良いんでしょうか。 「実行したときには、すでに数字パネルがバラバラに配置されている」「それをパズル.bmpのように元通りに直したら完成と表示される」 といった形です。 最初に表示される画像は完成したパズルの形だけれども、その後バラバラに配置されて……といった流れはなくとも大丈夫のようです。 15パズルとしては、Wikiペディア(ttp://ja.wikipedia.org/wiki/15%E3%83%91%E3%82%BA%E3%83%AB)に書いてあるものと同じスタンダードなものです。 メイン関数の部分にオセロゲーム、と書いてありますが、そこは消し忘れですので気になさらないでください。 本当に申し訳ないのですが、「空きに指定する数字」というのがよくわからず……。 こちらの知識不足で、ご迷惑をおかけしますが、どういったことでしょうか。
524 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 08:00:38 ] >>523 なにが判らないのか判らない。15パズルが、ピースを一つずつずらしていくパズルだと言うことは理解できているの? 先ずはWeb上にある15パズルを探してきて自分で動かしてみたら?
525 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:51:42 ] >>524 一応、そのあたりのことは理解しているつもりなのですが……。 現状(6120.txt)では、キーボードの上下左右を押して、ピースをずらす、という段階までは作れたつもりなんですが 「ピースを順番どおりにきちんと並びかえたときに、どうやってそれを判定するのか」 「最初にどうやってピースがバラバラに配置された状態にすればいいのか」 の二つがわからなかったんです。
526 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 13:14:32 ] >>525 きちんと並んだかどうかは、例えば1から15までのピースに1から15までの番号を振りブランクに0を振ったとして、 それらが1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0になったかどうかで判断すればいい。 初期位置は、解けないパズルになる可能性が合ってもいいなら、1から15までとブランクをシャッフルして配置すれば宜しい。 解けないパズルになってはいけないのなら、揃った状態からプログラム的にランダムにピースを操作するしかない。
527 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 13:37:12 ] >>526 > 揃った状態からプログラム的にランダムにピースを操作するしかない。 本当?
528 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 13:38:43 ] パリティを考慮して配置すればOK。でもめんどいw
529 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 15:35:20 ] >>527 の言うとおりに、揃った状態から盤面をランダムにする方がいいと思う
530 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:04:17 ] >>526 if(masu[1][0]==1)&&(masu[2][0]==2)……という風にやっていけば大丈夫でしょうか。 ひとまずやってみます。アドバイス本当にありがとうございます。 ピース配置のほうも、助かりました。>>529 さんも、ありがとうございます。 揃った状態から盤面をランダムにする、という方法でひとまずやってみたいと思うのですが……。 randを使用すれば良いんでしょうか。
531 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 18:42:17 ] >>528 パリティが奇だったら最後の2ピースひっくり返すだけ。面倒でもないよね。
532 名前:528 mailto:sage [2008/03/04(火) 19:35:34 ] 私が確認するのが面倒なの!w
533 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 19:39:34 ] >>530 15パズルなら、randで4まで出るようにして、それを空白のマスで行う、とか 1……空白マスの上を動かす 2……右を 3……下を 4……左を ってな具合に 角と辺では別処理
534 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:05:26 ] >>533 ありがとうございます。自分では考えもつきませんでした……。 戴いた助言どおりに進めてみることにします。
535 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 04:56:30 ] >>519 簡単に作ってみた。C++詳しくないんで中身はほとんどCだけど。 元のソースはよくわからんかったので全く利用してませんが悪しからず。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6123.cpp
536 名前:535 mailto:sage [2008/03/05(水) 05:45:15 ] malloc()のとこ、型変えたのに直し忘れてた。 sizeof(unsigned char) ではなく sizeof(unsigned int) です。
537 名前:535 mailto:sage [2008/03/05(水) 06:59:44 ] 確認不足で申し訳ない。見直したら不具合が残ってたので訂正。 moveTest()のDIR_NとDIR_Sは case DIR_N: return (y_size > 1 && i >= x_size); case DIR_S: return (x_size == 1) ? (y_size > 1 && i < y_size-1) : (y_size > 1 && i < (x_size-1) * y_size); にしといて下さい。 あとshuffle()は最初のほうに if(x_size == 1 && y_size == 1) return; を加えて下さい。
538 名前:519 mailto:sage [2008/03/05(水) 12:42:03 ] >>537 本当にありがとうございます。助かりました。
539 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:29:19 ] >>531 すみません。15パズルのパリティの計算を教えてください。
540 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:44:18 ] >>539 初期状態に、戻すように、入れ替えて、いけば、いい、 それが、偶数回の、作業か、奇数回の、作業か、という、意味
541 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:05:03 ] [1] 授業単元:オペレーティングシステム [2] 問題文(含コード&リンク):ls -lの様な結果を表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語: C [4] 期限:2008年3月8日まで kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6124.c ↑自力でここまで作ったのですが、user、group、ownerのアクセス方式の表示の仕方が分かりません。 それが表示出来るようになればst.st_modeの値の代わりにそれを表示出来るようにさせたいです。 よろしくお願いします。
542 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:17:11 ] >>541 各ビットの意味はmanページに書いてあるだろ。 ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/stat.2.html 例えばls -lがどう表示するのか知りたいならinfoにある。 スティッキービットなどを考慮しなくていいのなら、 drwxrwxrwx形式でdはディレクトリ、以下ユーザ、グループ、他人の、それぞれ読み込み、書き込み、実行許可。 そうそう、dの部分はシンボリックリンクやデバイスなどの場合はそれに合わせて変わるのも忘れずに。
543 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:24:48 ] >>541 自力でそこまでできるんだったら、モードの表示も自力でできるだろう? 先頭の文字は、S_ISDIR(st.st_mode)ならば'd'、S_ISCHR(st.st_mode)ならば 'c'という風に表示すればいい。どう表示するかはman lsしてくれ。 残りの9文字は、st.st_mode & S_IRWXU ? 'r' : '-' のように一文字ずつ 出していけばいい。ただし、スティッキービットに注意すること。
544 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:32:01 ] >>543 間違えた。st.st_mode & S_IRUSR ? 'r' : '-' だた。
545 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 05:06:37 ] >>540 15パズルの任意の局面は、 (A) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (B) 1 2 3 4 5 6 7 8 9 10 11 12 13 15 14 のいずれかからスタートした入れ替え操作で到達可能という意味. (A)を(B)にする入れ替え操作は存在しない。(証明は簡単)
546 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 05:54:00 ] >>519 亀レスだし、VCないからcursesライブラリ使ってだけど、できたからうpってみる kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6126.txt
547 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 09:17:44 ] >>539 #include <iostream> using namespace std; #define XX 99 int parity(int *board) { int p = 0; for (int i = 0; i < 16; ++i) if (board[i] == XX) p ^= !(i & 4); else for (int j = i+1; j < 16; ++j) if (board[i] > board[j]) p = !p; return p; } int main() { int board[] = { 1,XX, 2, 4, 5, 6, 3, 8, 9,10, 7,11, 13,14,15,12 }; printf("parity = %d\n", parity(board)); }
548 名前:519 mailto:sage [2008/03/06(木) 10:14:55 ] まだ完成してはいないのですが、どうにか15パズルの課題、仕上げることが出来そうです。 >>546 さん、>>547 さん、 また、今まで助言を下さった方々、本当にありがとうございました。
549 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 19:13:46 ] >>545 それを、あらかじめ、判定するという、話なんですが
550 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:07:33 ] >>549 #define HEIGHT 4 #define WIDTH 4 typedef struct tab_board_t{ int num[HEIGHT][WIDTH]; }board_t; int is_solvable(board_t *board){ int ret=1, x, y; for(y=0;y<HEIGHT;y++){ for(x=0;x<WIDTH;x++){ ret=(ret+(board->num[y][x]/WIDTH-y))&1; ret=(ret+((board->num[y][x]%WIDTH)-x))&1; } } return ret; } /* 但し、完成した状態の定義を board_t board={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}}; とする */
551 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:34:23 ] >>550 間違ってるな
552 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:43:44 ] >>550 {{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,15,14,13}}を、与えると、1が、返ってきて、しまいましたが、、、 未完の、大作と、評価して、おきます
553 名前:550 mailto:sage [2008/03/06(木) 21:50:12 ] >>550 の修正版 (完成した状態の定義は board_t board={{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,SPACE}}; とする) #define HEIGHT 4 #define WIDTH 4 #define BOARD_SIZE ((HEIGHT)*(WIDTH)) #define SPACE ((BOARD_SIZE)-1) typedef struct tag_board_t{ int num[BOARD_SIZE]; }board_t; int swap(int *a, int *b){ int c; c=*a; *a=*b; *b=c; return (*a!=SPACE && *b!=SPACE); // 空白との交換はカウントしない } int sign(int a){ return (a>0)?1:(a<0)?-1:0; } // 数値の符号を返すだけ int is_solvable(board_t *board){ int check_pos, swap_pos, target_pos, swap_count=0; int diff_x, diff_y; board_t work; work=*board; for(check_pos=0;check_pos<WIDTH*HEIGHT;check_pos++){ for(target_pos=0;work.num[target_pos]!=check_pos;target_pos++); while(work.num[check_pos]!=check_pos){ diff_x = (check_pos%WIDTH) - (target_pos%WIDTH); diff_y = (check_pos/WIDTH) - (target_pos/WIDTH); if(diff_x) swap_pos=target_pos + sign(diff_x); else swap_pos=target_pos + sign(diff_y)*WIDTH; swap_count+=swap(&work.num[target_pos], &work.num[swap_pos]); target_pos=swap_pos; } } return (swap_count%2==0); }
554 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:34:55 ] 547 のほうが数段美しいな。非破壊的だし。
555 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:52:37 ] [1] 授業単元: ひまつぶし [2] 問題文(含コード&リンク):() 大きな川のこちらの岸辺に n 艘の船がある。 船 j は川を t_j 分で渡ることができる。 船を動かすとき、二艘繋いで動かすこともできる。 このときは、遅い船の時間だけかかってしまう。 こちらの岸辺にある船をすべて向こうの岸辺に 持って行くためにかかる最短時間を求めよ。 入力: 船の艘数 n (≦ 1000000) 各船が川を渡る時間 t_1, ..., t_n 出力: 最短時間 [3] 環境 [3.1] OS: 問わず [3.2] コンパイラ名とバージョン: 問わず [3.3] 言語: どちらでも可 [4] 期限: 03/10 まで [5] その他の制限: 特になし。
556 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:57:38 ] >>555 全部、同時に、出港すれば、、、、
557 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:58:45 ] 全ての船が一斉に渡り始めればいいので、 t_1からt_nの中の最小値が答え。
558 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:59:15 ] 最大値だったw
559 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:01:23 ] プログラム必要なしw
560 名前:555 mailto:sage [2008/03/07(金) 01:07:34 ] 条件の後出しですんません、船の運転手は 1 人です。 よくある問題設定なので書かなくても察してくれると思ってた・・・。
561 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:09:32 ] 甘いな、そんな素直に解釈するような連中だと思うのか?w
562 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:13:16 ] 2艘を繋いだり外したりする時間は考慮しなくていいのか?
563 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:13:46 ] 「二艘繋いで動かすこともできる。』と、いうのは、1+2=3という、意味ですか、それとも、1+1=2と、いう意味ですか?
564 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:22:15 ] 一番早い船に乗って、往復して一艘ずつ曳航すればいいのかな。 int required_time(int* t, int n) { if(n<=0) return 0; else if(n==1) return *t; else return std::accumulate(t, t+n, 0) + *min_element(t, t+n) * (n-1); }
565 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:27:01 ] 最後のところ訂正 else return std::accumulate(t, t+n, 0) + *std::min_element(t, t+n) * (n-2);
566 名前:555 mailto:sage [2008/03/07(金) 01:28:44 ] >>565 船の速さが 1 2 5 10 のとき、その解法だと 19 になりますが 最適解は 17 です({1,2}, {1}, {5,10}, {2}, {1,2})
567 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:35:27 ] それ以前に19になるか?
568 名前:555 mailto:sage [2008/03/07(金) 01:44:05 ] 実行して気づきました。問題文が不十分だったんですね。 > 遅い船の時間だけかかってしまう。 は、遅い船のスピードに支配される、という意味で使っていました。 ああ、もうぼろぼろ・・・
569 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:37:08 ] キニスルナ(・∀・) 春休み中はスレも停滞するし、暇つぶしの問題は歓迎だろ。 ただ、2つの場所を種々の条件で移動する問題はなぞなぞの要素が強いと思われ。
570 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:54:01 ] 作業系の問題よりは暇つぶしにはいいんじゃねーの? まあ俺はわからんけど
571 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:10:30 ] 個別の数値が決まってる奴はこの手のなぞなぞの定番だけど、一般化は考えたことなかったな。 少し考えてみようか。 解けない気がするけどw
572 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:47:35 ] 若干強引だけどこれでいけるか? int required_time(int* t, int n) { int t_temp; switch(n){ case 1: return t[0]; case 2: return t[1]; case 3: return t[0] + t[1] + t[2]; case 4: return t[0] + 3 * t[1] + t[3]; default: t_temp = 2 * t[0] + 3 * t[1] + t[n-1]; t[1] = t[0]; return temp_t + required_time(t + 1, n - 3); } }
573 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:59:42 ] >>572 なんかちがわね? t[] = {1,3,4,4} のとき そのプログラムだと 1 + 3*3 + 4 = 14 だけど (1,3)->, <-(1), (1,4)->, <-(1), (1,4)-> で13 になるよ
574 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:43:47 ] >>555 また、お前か
575 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:34:16 ] >>555 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6128.txt 総当りでやってみた。100万艘とかは無理w でもいろいろやってみると、以下が鉄則のようにみえる。 一、速い二艘を往復に使うべし 一、遅い方の船から二艘ずつを組にして渡るべし
576 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:08:31 ] [1] 授業単元:プログラミング演習 [2] 問題文:データ構造スタックを用いた逆ポーランド電卓の作成 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc32 [3.3] 言語: C [4] 期限: 3月中 初心者です 四則演算が行える電卓を作りたいのですが、よろしくお願いします。
577 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 11:12:29 ] 宿題ではないのですが [1] 授業単元:n/a [2] 問題文(含コード&リンク):n/a [3] 環境 [3.1] OS: (WindowsXPproSP2) [3.2] コンパイラ名とバージョン: (bccフリー版最新) [3.3] 言語: (どちらでも可) [4] 期限: (無期限) [5] その他の制限: () 基本的なノリは成分分析やバーコードバトラーです。 ・任意の文字列(桁数固定表記の数値がメイン)を任意のリスト(*)に基づいて一字ごとに点数化し、その和を返すプログラム。 ・a.txtファイル内に一行毎に一個の文字列を記録した文字列を、上記で丸ごと処理しc.txtファイル(**)として返すプログラム。 リスト自体は別個に独立したb.txtファイルで。 * リストの書式は丸投げですが、二軸マトリックス(x軸…対象文字列内の位置、y軸…対象となる文字の内容)でお願いします。 ** 点数が一行に一個ずつ並んでるだけです。 cd実行後のコマンドは"enscore a.txt b.txt c.txt"みたいな感じで。 例:"14159265358979323846"を点数化したい場合 x(左からA〜T),y(上から0〜10)。尚、y=10は数字以外の場合に適用されます、だから大小区別の英数字ならy=0〜62になります。 以下、該当部分が()で括られています。 {y=0|8,56,88,114,100,88,67,10,12,116,107,18,126,60,92,42,44,3,41,73} {y=1|(124),56,(46),41,81,15,126,95,86,17,105,80,126,71,35,5,107,109,118,15} {y=2|122,61,19,107,96,(50),128,96,64,46,6,18,73,69,44,(69),33,83,8,27} {y=3|84,57,100,128,38,88,86,52,(110),7,42,43,23,101,(47),45,(1),81,6,99} {y=4|3,(116),77,62,88,45,32,1,17,101,59,20,27,26,69,18,41,81,(24),107} {y=5|25,17,13,(2),108,120,7,(98),123,(65),121,122,116,91,40,109,70,13,73,23} {y=6|2,19,7,44,91,121,(88),10,58,98,123,109,119,93,88,40,88,99,112,(33)} {y=7|72,83,32,66,88,86,63,104,27,2,106,84,(7),9,73,18,0,64,6,118} {y=8|51,75,79,16,102,98,78,51,48,31,(118),36,110,47,12,68,98,(17),106,80} {y=9|68,109,114,49,(53),70,84,9,62,67,1,(44),80,(117),0,79,16,84,66,56} {y=10|60,34,105,58,73,99,110,127,9,61,115,23,45,60,39,80,36,3,14,101} 124+116+46+2+53+50+88+98+110+65+118+44+7+117+47+69+1+17+24+33} =1229
578 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 15:58:16 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 0001.jpg 0002.jpg 0003.jpg ....というファイルを順に読み込み、 動画として表示するアプリケーションを作成せよ。 問題文全文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6131.txt [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C++ [4] 期限:[2008年3月15日まで] [5] その他の制限: FLTKを使用する。 映像を直接扱うクラスやライブラリは使わない。(e.g., mpegs) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6132.txt 上は、自分でやったとこまでです。初心者なので訳が分からなくなってます。 あと、問題文が英語で本当にすみません。
579 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 16:55:37 ] >>577 Cで作ってみた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6133.txt
580 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:11:36 ] >>579 ありがとう、夜勤から帰ったらためしてみる。まずは取り急ぎ
581 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:57:24 ] >>576 当方の環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6134.txt K&R2 4.3 よりも無駄に長く汚くなってしまいました。とりあえず、そっちを読んでください。
582 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:55:05 ] >>581 バグがありました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6135.txt
583 名前:577 mailto:sage [2008/03/11(火) 11:25:18 ] >>579 折角作って頂いたのに本当に申し訳ないんだが、enscoreコマンド実行時にリストの中身と計算過程の表示を省くには何処を削ればいいんでしょう? 処理個数が多くなりそうなので…。
584 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:40:59 ] >>583 あれ?リストの中身表示、計算過程って表示されちゃってる? #define DEBUG ってなってなければ、表示されない(プログラムの実行コードに含まれない)はずなんだけど・・・ コンパイラによってデフォルトで DEBUG ついちゃうのかな? まぁ、#ifdef DEBUG 〜 #endif の間を削除しちゃえばいいさぁ〜
585 名前:デフォルトの名無しさん [2008/03/12(水) 11:51:16 ] 宿題じゃないいんですけれども [1] 授業単元:独学 [2] 問題文(含コード&リンク):stl [3] 環境 [3.1] OS: ubuntu [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: c++ [4] 期限: (無期限) [5] その他の制限: stlの使い方について質問です。今リストの中に1,2,4,8,16,32,64 と入っているんですが、"erase" を使って5番目の数字を削除して中身を表示し、 その後に3番目の数字を削除して表示。 そして、"insert"を使って3番目と4番目の 数字の間に7を入れて表示という感じにするにはどうしたらいいんですか? #include <iostream> #include <iterator> #include <list> using namespace std; int main(){ list<int> mylist; for(int i=1; i<=64; i *= 2) mylist.push_back(i); cout<<endl; list<int>::const_iterator itr1; for(itr1 = mylist.begin(); itr1 != mylist.end(); itr1++) cout<< *(itr1)<<" "; return 0; }
586 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 13:18:17 ] >>585 スレ違い。 初心者歓迎スレでもSTLスレでもお好きな方ヘどうぞ。
587 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:15:41 ] あー・・・春だなぁ。5〜6月までは、あんまりネタがないのかなぁ。
588 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:20:40 ] 今のうちに、C/C++とかアルゴリズムを勉強しておくといいんじゃね。 Structure and Interpretation of Computer Programs (SICP)辺りを読むのも良いかもな
589 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:58:40 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):約分を行う関数を作成せよ。 ただし、分子と分母をメンバとする構造体を用いて、分数を表す。 構造体タグには、typedefによってBUNSUという名前をつけて使用する。 [3] 環境 [3.1] OS:WindowsXP SP2 [3.2] コンパイラ名とバージョン:Developer studio [3.3] 言語:C++ [4] 期限:無制限 [5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6136.txt *1〜2の、約分処理と関数の呼び出し方がわかりません。 もしよければお願いします。
590 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 17:07:56 ] >構造体タグには、typedefによってBUNSUという名前をつけて使用する。 は? C++に構造体タグなんてありませんが。構造体名自体が型として使えるので、typedefする必要もありませんが。
591 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 18:21:48 ] どっちかといえば期限無制限に突っ込むべきだろ
592 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:20:13 ] 俺の半分は優しさで出来ています #include<stdio.h> typedef struct bunsu{ int bunshi; int bunbo; } BUNSU; int getgcd(int m, int n){ while(m*n){ if(m>n) m%=n; else n%=m; } return m+n; } void yakubun_p(BUNSU *x){ int gcd; gcd = getgcd(x->bunshi, x->bunbo); x->bunshi /= gcd; x->bunbo /= gcd; } int main(void){ BUNSU a; printf("分子?"); scanf("%d", &a.bunshi); printf("分母?"); scanf("%d", &a.bunbo); printf("%d / %d = ", a.bunshi, a.bunbo); yakubun_p(&a); printf("%d / %d\n", a.bunshi, a.bunbo); return 0; }
593 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:31:46 ] >>592 ありがとうございました。 C言語をはじめたばかりですが、がんばっていこうと思います!
594 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:54:42 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): VisualC++を使用して「はさみ将棋」を作成せよ。 テクスト、授業で配布したプリントのほかにも、自分で参考となる資料を集めて利用しても構わない。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C++ [4] 期限: 2008年3月28日まで [5] その他の制限:特になし。ただ、出来るだけ平易な文で作っていただけると助かります。
595 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:15:00 ] てst
596 名前:541 mailto:sage [2008/03/14(金) 01:59:06 ] [1] 授業単元:オペレーティングシステム [2] 問題文(含コード&リンク):ls -lの加え-a、-w、-F結果が表示出来るようにしなさい [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語: C [4] 期限:2008年3月17日まで kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6140.c 前回は助けて頂きありがとうございました。 ↑自力でここまで作ってみたのですが、-a、-wなどの部分を作成がまったく見当がつきません。 助けて頂けるとありがたいです、よろしくお願いします。
597 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 04:50:33 ] >>593 ちょっと待て。 > [3.3] 言語:C++ >C言語をはじめたばかりですが、がんばっていこうと思います! おまいさんは、何語を習っているのかさえ判っていなかったのか?
598 名前: ◆nUWYoBn0RQ [2008/03/14(金) 16:48:25 ] 助けてください。 課題で c言語の文字列ソートで char * month[]={"january" ,"february", "march","april","may","june","july"} をアルファベット順にソートかつ大文字に変えて表示するやり方 がわかりません。 教えてください。今日までなので時間がありません。 お願いします
599 名前:サッカー [2008/03/14(金) 17:09:48 ] 1] 授業単元:プログラミング [2] 問題文 :c言語の文字列ソートで char * month[]={"january" ,"february", "march","april","may","june","july"} をアルファベット順にソートかつ大文字に変えて表示しろ。 [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: 2008年3月15日まで 助けてください。 やり方が全くわかりません。 教えてください。 お願いします
600 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 17:43:58 ] >>599 ほいよ #include<stdio.h> #include<stdlib.h> #include<string.h> int cmp(const void*a,const void*b){return strcmp(a,b);} int main(void){ char * month[]={"january" ,"february", "march","april","may","june","july"}; const int N = sizeof month / sizeof * month; int i; qsort(month , N , sizeof * month , cmp); for(i=0;i<N;++i){ const char*it; for(it=month[i];*it;++it)putchar(toupper(*it)); puts(""); } return 0; }
601 名前:600 mailto:sage [2008/03/14(金) 17:46:38 ] わりい一行バグってた。cmpを置き換えてくれ int cmp(const void*a,const void*b){return strcmp(*(char**)a,*(char**)b);}
602 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 17:50:09 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 1、,学籍番号と名前と年齢からなる構造体「学生」を定義して、以下の二人の「学生」を 作りなさい。 ・学籍番号1番、「青木三郎」20歳 ・学籍番号2番、「加藤武雄」21歳 2,「学生」の学籍番号、名前、年齢を設定する関数を作り、1の問題を行いなさい。 [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++ [3.3] 言語: (C/C++/どちらでも可 のいずれか) C++ [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) できるだけ早く [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) クラスの作り方がよくわかりません。 よろしくお願いします。
603 名前:サッカー [2008/03/14(金) 17:53:30 ] マジ天才です。 助かりました。 ありがとうございます。
604 名前: ◆zCS1o.kilU [2008/03/14(金) 18:17:37 ] 1] 授業単元:プログラミング [2] 問題文 :mystrlen関数作成せよ。プロトタイプはint mystrlen (char*); またmain関数からmystrlen関数を呼び出し自分の名前の長さを求め なさい。 実行例「 ”山田太郎”は0008バイトです 」 [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: できるだけ早くお願いします。 [5] strlen関数使用禁止 お願いします。
605 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:27:16 ] >>604 好きなんどーぞ int mystrlen(char*p){ return strcspn(p,""); } int mystrlen(char*p){ return (char*)memchr(p,0,-1) - p; } int mystrlen(char*p){ return strchr(p,0) - p; }
606 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:27:23 ] >>602 struct Gakusei { int num; char* name; int age; void set(int _num, char* _name, int _age) { num = _num; name = _name; age = _age; } }; int main() { // 1 Gakusei g1 = {1, "青山三郎", 20}; Gakusei g2 = {2, "加藤武雄", 21}; // 2 g1.set(1, "青山三郎", 20); g2.set(2, "加藤武雄", 21); }
607 名前: ◆zCS1o.kilU [2008/03/14(金) 18:40:28 ] ありがとうございます。 もうひとつだけお願いがあります。1] 授業単元:プログラミング [2] 問題文 :キーボードから西暦と月を入力するとカレンダーを 表示するプログラムを作成せよ [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: できるだけ早くお願いします。 [5] scanf使用不可. fgetsでお願いします。 お願いします
608 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:44:19 ] >>604 当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4 です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6142.txt
609 名前: ◆zCS1o.kilU [2008/03/14(金) 19:03:27 ] そうなんですか。 ありがとうございます。
610 名前: ◆TJ9qoWuqvA [2008/03/14(金) 19:55:04 ] 教えてください。 わからないよ〜。 最後にこれができないと 単位がもらえないよ。
611 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:06:27 ] >>610 お前が誰だかわからないよ
612 名前:607 [2008/03/14(金) 20:21:56 ] 607 です。ありがとうございます。 もうひとつだけお願いがあります。1] 授業単元:プログラミング [2] 問題文 :キーボードから西暦と月を入力するとカレンダーを 表示するプログラムを作成せよ [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: できるだけ早くお願いします。 [5] scanf使用不可. fgetsでお願いします。 お願いします
613 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:20:32 ] >>607 >>612 当方で確認した環境は cygwin/WindowsXP, 処理系はgcc3.4.4 です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6143.txt
614 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:21:48 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):データ構造・スタックの作成 [3] 環境 [3.1] OS: windows vista [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C [4] 期限: できるだけ早く www2.uploda.org/uporg1305086.txt ↑スタックとして、これを使用したいと思います。 しかし、整数しか扱えず、浮動小数点数のプッシュが行えません。 関数の返却値をdouble型に変更してみたり、確保する型の変更など 試してみましたが、うまくいきませんでした。 浮動小数点数を扱える様に変更をよろしくおねがいします。
615 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:25:22 ] ksk
616 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:39:38 ] >>614 当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6144.txt
617 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:47:22 ] >>616 614です。 ありがとうございます。 実行してみたところ、一か所エラーがでてしまいました。13行目ですが、 エラー E2034 13: 'void *' 型は 'double *' 型に変換できない(関数 StackAlloc(Stack *,int) ) 処理系の違いによるものでしょうか。 何か対策がありましたら教えて頂けると助かります。
618 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:49:54 ] >>617 元のファイルもコンパイルできなかったのかな?
619 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:50:46 ] >>617 if ((s->stk = (double *)calloc(max, sizeof(double))) == NULL) { でどうでしょうか?
620 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:59:48 ] 614です。 >>618 614のファイルでは、整数のみ扱える状態でコンパイル、実行が行えました。 >>619 実行できました。ありがとうございます。 本当に助かりました。 このスタックを用いてプログラムの作成を行うのですが、 また解らないことがありましたら、質問させていただけたらと思いますので その際はよろしくお願いいたします。
621 名前:デフォルトの名無しさん [2008/03/14(金) 23:08:12 ] >>617 C++としてコンパイルしているだろ?
622 名前:607 [2008/03/14(金) 23:21:48 ] 613さんありがとうございます。たすかりました。
623 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:33:12 ] 614です。 >>617 拡張子を.cpp としてコンパイルしていました。 Cでコンパイルしたところ動きました。 ご指摘ありがとうございます。今後気を付けます。 >>619 訂正していただいたのにすみませんでした。 言語をCとせずにコンパイルしていたのが原因でした。 616が動作することも確認できました。 ありがとうございました。
624 名前:616 mailto:sage [2008/03/15(土) 05:59:16 ] >>620 該当行は double のときは、calloc() -> malloc() に訂正しておいてください。
625 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 07:40:55 ] >>596 後半だれてたから、読みづらいソースになってるかもしんないけど、 一応できたからうp。参考程度にどうぞ (間違ってたらごめんね) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6145.txt
626 名前:デフォルトの名無しさん [2008/03/15(土) 09:00:05 ] 英文字A-Zに対して、異なる二つの文字ごとに得点が与えられているとします 最も得点が高くなる文字列を求めたい 例えば3文字で次のように得点が与えられていれば AB 1 AC 5 BA 2 BC 3 CA 10 CB 1 BCA の得点13が最高得点
627 名前:デフォルトの名無しさん [2008/03/15(土) 09:02:50 ] 英字(26文字)を、1-1000までの数字に置き換えても求められるプログラムがよいです 計算量が増えますから、総当たりが難しいです
628 名前:626 [2008/03/15(土) 09:17:13 ] 巡回セールスマンで最短を最長に変えたものと同じですね 距離をマイナス倍すれば(例えば10から引く)巡回セールスマンと一致しますね
629 名前:デフォルトの名無しさん [2008/03/15(土) 09:29:21 ] でももとの位置へ戻ってこなくて良いところが違いますが・・・ レンタカーやタクシーで巡回するようなものです
630 名前:541 mailto:sage [2008/03/15(土) 10:48:04 ] >>625 ありがとうございます。 参考にさせて頂きます。
631 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:06:09 ] >>626 同じ点(文字)を二度以上通ってもいいですか? もし、いいなら単純な動的計画法が適用できる気が。
632 名前:デフォルトの名無しさん [2008/03/15(土) 11:13:59 ] >>631 おなじ文字を何度も使ったら値は無限に増えます ACACACACA・・・・とか 一度だけの並べ替えにしてください
633 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:17:26 ] >>632 ACA で終わりじゃないの?
634 名前:デフォルトの名無しさん [2008/03/15(土) 11:21:06 ] 一度だけの使用で、最も高得点になるものを求めたいです 文字は全て使わなくても良いですが、全部使った方が高得点になります
635 名前:626 [2008/03/15(土) 11:35:08 ] すみません 設定を間違えました 出直してきます
636 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:01:14 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):英和辞書を作成せよ。 辞書データはプログラム開始時にファイル(ファイル名はdic.dat)より読み込みメモリ上にリスト構造を構築する。 以下これをリストという。 次の機能をメニューで選べるようにすること。(機能ごとに関数にしておく) (1)検索:英単語(半角)を入力すると、リストより検索して日本語(全角)の意味を表示する。 (2)追加:新しい単語とその意味をキーボードより入力し、リストに追加する。 (3)修正:リストのデータを修正する。 (4)削除:リストより任意の単語を削除する。 (5)保存:リストをファイルに保存する。 (6)終了:プログラムの終了。もしデータが変更されているのに保存されていない時は、 保存せず終了して良いか確認する処理を行う。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:3月中 [5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6146.txt お願いします。
637 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:01:11 ] >>634 >文字は全て使わなくても良いですが、全部使った方が高得点になります それは得点配分しだいじゃないか?
638 名前:デフォルトの名無しさん [2008/03/15(土) 20:00:13 ] >>636 STLのmapをCに移植すればいいんじゃね?
639 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:03:22 ] リスト構造で実現しろって言ってるのに。
640 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:08:23 ] >>639 は出世しないタイプ
641 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:29:04 ] >>638 これがマリー・アントワネットの力か……
642 名前:デフォルトの名無しさん [2008/03/15(土) 21:14:11 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 標準入力からファイル名を受け取り、ファイル内容を以下のように要素毎に整列し出力せよ 入力ファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6147.txt 出力ファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6148.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc3.4 [3.3] 言語:C [4] 期限:3月20日 [5] その他の制限: 入力するファイルの行数は1000行以内とする 「Perlの方が楽かもねぇ」と言われてもどっちもわからず・・・
643 名前:デフォルトの名無しさん [2008/03/16(日) 05:45:48 ] >>642 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6149.c
644 名前:642 mailto:sage [2008/03/16(日) 06:50:08 ] >>643 6日かけてもロクにできなかったのに・・・ありがとうございます ソース内容理解して説明できるよう頑張ります
645 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:29:30 ] >>594 取り合えず動く程度の簡易なもの(非VC++)。 ルールはググって上2つぐらいをざっと見ただけなんでもしかしたら間違ってるかも。 役に立つか分かりませんが参考程度にどうぞ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6150.txt
646 名前:594 mailto:sage [2008/03/16(日) 15:41:04 ] >>645 本当にありがとうございます、助かりました。 参考にさせていただきます。
647 名前:sage [2008/03/16(日) 18:04:32 ] [1] 授業単元:プログラミング [2] 問題文 :入力した西暦が閏年かどうか出力せよ 閏年:4年に一度であり、100年に一度ではなく、400年に一度である [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: なるべく早く よろしくお願いします
648 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 18:23:04 ] >>647 #include <stdio.h> int is_leap_year(int year) { return (year%400==0) || ((year%100!=0)&&(year%4==0)); } int main() { int year; printf("西暦:"); scanf("%d", &year); printf("%d年は%sです。\n", year, is_leap_year(year) ? "閏年" : "平年"); return 0; }
649 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 18:27:02 ] >>647 >[4] 期限: なるべく早く Cより先に、この変な言葉を直すよう日本語を学べ。 #include <stdio.h> int main(void) { int d; char* toshi[] = {"平", "閏"}; scanf("%d", &d); printf("%s年\n",toshi[!(d&3)-!(d%100)+!(d%400)]); return 0; }
650 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 18:28:39 ] ×char* toshi[] ○static const char * const toshi[]
651 名前:636 mailto:sage [2008/03/16(日) 18:57:42 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):英和辞書を作成せよ。 辞書データはプログラム開始時にファイル(ファイル名はdic.dat)より読み込みメモリ上にリスト構造を構築する。 以下これをリストという。 次の機能をメニューで選べるようにすること。(機能ごとに関数にしておく) (1)検索:英単語(半角)を入力すると、リストより検索して日本語(全角)の意味を表示する。 (2)追加:新しい単語とその意味をキーボードより入力し、リストに追加する。 (3)修正:リストのデータを修正する。 (4)削除:リストより任意の単語を削除する。 (5)保存:リストをファイルに保存する。 (6)終了:プログラムの終了。もしデータが変更されているのに保存されていない時は、 保存せず終了して良いか確認する処理を行う。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:3月中 [5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6151.txt 1〜6の「」のに入っている処理の仕方がわかりません。 お願いします!
652 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:55:52 ] >>636 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6153.txt 651より以前から作ったので適当に変えた箇所がある。
653 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 00:54:00 ] >>650 >>649 のままで良いんじゃね?こんな所で質問するような奴が staticだconstを使ったら変に思われちまう。
654 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 06:18:05 ] というか、そろそろうるう年の条件式を、効率の良いものにしない? 最初に y%4 == 0 で条件に合わないものはそれ以降は比較しないと。 それが通ったら y%100 != 0 || y%400 == 0 にすると。
655 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 08:53:34 ] >>654 A || B はAが真ならBは評価されない。 A && B はAが偽ならBは評価されない。 Bの位置に関数呼び出しを入れたりするとA次第で実行されない、というのはよくバグの原因になる。
656 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 08:53:55 ] [1] 授業単元:プログラミング [2] 問題文 :英小文字をgetsで標準入力より配列テーブルへ入力する 入力されたデータの個数と共に配列の先頭アドレスを関数 英大文字変換に渡す 英大文字に変換されたデータをprintfで標準出力に出力する ただし、入力するデータの個数は最大10個までとする 入力のときの表示は「str=」、出力のときの表示は「STR=XXX....X」とする [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: 今日のお昼頃 よろしくお願い致します
657 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:14:10 ] >>656 #include <stdio.h> void capital_letter(char *str, int num); int main(void) { char str[10]; printf("str="); gets(str); // fgets(str, sizeof(str), stdin); にしたいところ capital_letter(str, sizeof(str)); printf("STR=%s",str); return 0; } void capital_letter(char *str, int num) { int i; for(i = 0; i < num; i++) { if('a' <= str[i] && 'z' >= str[i]) { str[i] += 'A' - 'a'; } } }
658 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:15:36 ] >>655 だから何?閏年の条件式になんでそんな無意味な突込みを??? Bの位置に関数呼び出しをするような条件式じゃないからw
659 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:20:20 ] >>658 >>654 が言うような最適化はすでにされてるって意味なんだが。
660 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:21:57 ] >>659 はぁ?ちゃんと読め。それから、数多く繰り返し実行をしてみろ。 明らかに4の倍数以外を400で割り切れるかまで条件判定しなくても済むから 処理時間に差が出ているんだが?
661 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:24:10 ] わかった、ではその速度差が出ると言うコードを提示してくれ。
662 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:27:20 ] int is_leap_year(int year) { return (year%400==0) || ((year%100!=0)&&(year%4==0)); } int is_leap_year(int year) { if(year%400) return 1; else if((year%100!=0)&&(year%4==0)) return 1; else return 0; }
663 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:28:19 ] >>661 いや、なんで自分で clock() を用いて検証しない? 何噛み付いてんの?理屈からして筋の通る理論に 無駄で間違った持論で噛み付かれても迷惑。 お前が理解していないとしか言いようがないんだが
664 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:31:14 ] >>662 いや、だから違うって、なんで先に400で割り切れる条件判定をするんだ? それが400年に1度で、更に4で割り切れない年も判定するのが無駄だって話なんだが・・・ まず4で割り切れなきゃ、100で割り切れない、または、400で割り切れるという条件判定に 持ち込まないという条件について述べているんだが?
665 名前:デフォルトの名無しさん [2008/03/17(月) 09:32:59 ] 裏切り者の福留を許さない。
666 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:39:22 ] return (year%400==0) || ((year%100!=0)&&(year%4==0)); return (year%4==0 && (year%100!=0 || year%400==0));
667 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:44:42 ] ここであえて%100から試すのを提案する。 year % (year % 100 != 0 ? 4 : 400) == 0
668 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:52:23 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6154.c 回数を多くすれば、些細なことだが無駄に気づくだろう
669 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 10:02:13 ] >year%4==0 && (year%100!=0 || year%400==0) 測ってないけどこの形が最速じゃね。
670 名前:661 mailto:sage [2008/03/17(月) 10:16:09 ] >>663 なんで私にレスするのか理解に苦しむ。 噛み付くも何も、>660が阿呆なことを言うから論破しようと思っただけなんだが。
671 名前:デフォルトの名無しさん [2008/03/17(月) 13:13:55 ] >>670 > 阿呆なこと 何が?そうやってアホとか相手を罵倒する発言、人間性を疑うよ。 言葉にはあんたの人間性がモロに露呈しているが、噛み付いているのが あんただけって気づかない?そう、あんたが話題の本質を理解せずに 勘違いしているだけだろ。論より証拠。あんたもソースで示したら? 論点が食い違っていることが明白だから。
672 名前:661 mailto:sage [2008/03/17(月) 13:15:34 ] >>671 このスレは、>661と>670しか書いていないんですが。 それとも、勝手に他人の発言を拡大解釈したがる阿呆ですか?
673 名前:656 mailto:sage [2008/03/17(月) 13:17:10 ] >>657 ありがとうございます。助かりました
674 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 13:17:56 ] >>669 理屈としてはそれでおk。
675 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 13:19:19 ] >>672 あんたさすがに自分の勘違いを認めない上に、このスレに粘着しているのか。 未熟者がでしゃばると、お前みたいな墓穴を掘っても、更に何か言い訳をしたり 相手を否定して自分を押し切ろうとするから嫌われるんだよ。マジ、ソースを出せよ gdgd言ってねーで。ごちゃごちゃとみっともないんだよ、言い訳するやつって。
676 名前:661 mailto:sage [2008/03/17(月) 13:21:16 ] >gdgd言ってねーで。ごちゃごちゃとみっともないんだよ、言い訳するやつって。 いや、自己紹介しなくてもw
677 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 13:21:50 ] >>655 をもう一度読んでみな。いつ誰がBの位置に関数を呼び出す処理について 話を始めた?ここから勘違いを始めて、それについて必死に弁解する意味がないだろw なのに、アホだの、なんだこの低俗な品のない奴は?まぁ、春休み中なんで、 どんな精神レベルの低い子供かは分かるが、こんなのがそのまま大人になったら面倒だな。
678 名前:661 mailto:sage [2008/03/17(月) 13:25:35 ] おーい、>655はどこに行った? あんたのレスに粘着されてるぞ〜w まぁ、いきなり関数呼び出し云々を持ち出した>655も半端に知識をひけらかしたいだけに見えなくもないが。 言っていることは正しいだけに、場とタイミングを間違えたとしか言いようがないな。 恐らくは、安易に短絡構文を使ってデバッグに苦労した経験でもあったのだろう。 >>677 で、誰が何をどう勘違いして、どう弁解していると「あんたは」考えているのかな?
679 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 13:50:49 ] 言ってることは正しくてもコミュニケーション能力が不足していたら伝わらない典型だな。 別に君が相手側を説得することにメリットがあるわけでも無し、そろそろ放っておいたらどうよ。 どっちにとは言わんけど。
680 名前:デフォルトの名無しさん [2008/03/17(月) 13:51:37 ] 議論なら他でやれカスども
681 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:02:30 ] >>668 > for(i=1; i<=MAX; i++) { > for(y=1; y<=MAX_Y; y++) { > if( y%4 != 0 ) leap=0; > else if( y%100 != 0 || y%400 == 0 ) leap = 1; > } > } 潜在的バグがあるね 以下のようにすれば顕在化する for(y=1; y<=MAX_Y; y++) { ↓ for(y=1; y<=MAX_Y; y++,leap=1) {
682 名前:デフォルトの名無しさん [2008/03/17(月) 14:46:59 ] うるう年の判定なんて別に高速じゃなくてもいいじゃないか。
683 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:50:06 ] まぁ、事実上4年に一度で充分だしね。 # まさか、1900年や2100年を処理しなくてはいけないケースなんてそうそうないだろ。
684 名前:デフォルトの名無しさん [2008/03/17(月) 14:53:45 ] 問題になるほど何回も何回も判定を行うなら、0〜3000くらいの判定表(0か1が入るintとかcharの配列)を作ってテーブル参照にするとか。 範囲外はいつものの方法でやるとして。
685 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 15:00:48 ] 発想は悪くないけど、無駄だから。
686 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:23:50 ] はぁ・・・効率よく、無駄を省くという点が重要なのに、やれ自分にとって 必要あるないだの、何を基準に話を始めてんだ? それが分かってないから、お前らはいつまで経っても 客観的な立場、意見が重要となる社会に出てまともに活動が出来ないんだよ。 路上じゃあんたらにとってそんなルールは必要ないとか都合が悪いとか言ってると すぐに事故るぞ。自分が原因で。
687 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:28:44 ] まともに議論できる奴はこのスレにはいないな。 所詮は宿題スレか。
688 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:34:18 ] 効率の基準が違うから〜♪ スレ違いはしょうがない〜♪
689 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:36:06 ] 宿題スレに何を期待してたんだ…
690 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 17:24:37 ] >>668 かなり差が出るんだな。 正直、感動した。 >>681 もう少し詳しく
691 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:02:49 ] 400の倍数に該当しない、100で割り切れたときの判定が不十分か。 たまたまその前年が平年でleapを平年の値で受け継いでいるが。
692 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:24:39 ] >>691 説明ありがとん。 つーか、自分の鈍さに絶望。
693 名前:648 mailto:sage [2008/03/17(月) 22:17:07 ] 俺が最初に4で割り切れるかを判定しなかったばかりに、スレがこんなことに!w
694 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:19:46 ] [1] 授業単元:プログラミング [2] 問題文 :5つの数字を標準入力より配列テーブルへ入力する。 配列の先頭アドレスと共に結果用の配列の先頭アドレスを関数 四則演算に渡す。 四則演算された結果をprintfで標準出力に出力する。 入力のときの表示は DATA = とする 出力のときの表示は X + Y = Z X - Y = Z X * Y = Z X / Y = Z とする なお、加算はaの0と1番目、減算はaの0と2番目、乗算はaの0と3番目、 除算はaの0と4番目をそれぞれ行い、計算結果をpに入れる。 注)ポインタを使用すること。 リンク方法 cal(a,p); 入出力情報・「記号 a 型名 char *」「記号 p 型名 int *」 [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: 今日の朝まで よろしくおねがいします
695 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:33:20 ] >>694 #include <stdio.h> void cal(char *a, int *p) { p[0] = a[0]+a[1]; p[1] = a[0]-a[2]; p[2] = a[0]*a[3]; p[3] = a[0]/a[4]; } int main() { char a[5]; int p[4], i, tmp; /* 入力 */ for(i=0; i<5; i++) { printf("DATA="); scanf("%d", &tmp); a[i] = (char)tmp; } /* 計算 */ cal(a, p); /* 出力 */ printf("%d+%d=%d %d-%d=%d %d*%d=%d %d/%d=%d\n", (int)a[0], (int)a[1], p[0], (int)a[0], (int)a[2], p[1], (int)a[0], (int)a[3], p[2], (int)a[0], (int)a[4], p[3]); return 0; }
696 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 06:33:18 ] 久しぶりにアイツが来たのかと思ったじゃねーかw
697 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 07:03:53 ] >>654 過去スレでも似たような議論あったな。 int isLeapyear(int year) { return year%4 ? 0 : year % 100 ? 1 : year % 400 ? 0 : 1; } &&とか||使わないでこれで十分じゃね?
698 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 07:31:13 ] えっと、4で割り切れても100で割り切れた場合の対処が不十分だったという指摘があったが・・・ とにかく、4の倍数に当たらないものまで、100で割り切れるかどうか、400で割り切れるかどうか といった判定にまで持ち込まなければ、その無駄がかなり省けるというのは 繰り返す回数を増やして目に見える処理時間の差を出したコードを参照して頂ければお分かりになられるかと。
699 名前:694 mailto:sage [2008/03/18(火) 07:43:30 ] >>695 ありがとうございます
700 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 08:47:13 ] まぁ、それほど大きなロスではないが、関数を呼び出して値を返す仕組みと、 main関数の中に条件判定を入れて処理するのとでは、自分の環境で計測したところ、 1.7倍の差が出た。mainの中で判定した場合で1秒だと、関数を呼び出した方は1.7秒。
701 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:05:24 ] まさかとは思うが、最適化しないで較べてないか?
702 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 13:59:46 ] 最適化しちまったら同じになってしまうだろう
703 名前:デフォルトの名無しさん [2008/03/18(火) 19:13:06 ] 最適化して同じになるなら コードが読みやすいほうが良いに決まってるだろ。 実用時は最適化するんだから。
704 名前:名無しです [2008/03/19(水) 22:00:09 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ・リスト構造の実現 1,グラフデータを記憶する隣接リストの作成, 2,深さ優先探索に必要なスタック, 3,幅優先探索に必要なキューの作成に必須なデータ構造です. 4,ポインタを用いて動的に確保するかの選択が必要です. 5,また,データへのアクセス効率を考えて,両方向環状リストとして構築する ・上記リスト構造を用いて,スタックおよびキューの実現 もっとも大雑把に書くと, スタックを使ったグラフの深さ優先探索,キューを使ったグラフの幅優先探索,グラフの連結成分分解の実装. ファイル(複数のグラフデータが列記されている)からグラフを1つずつ読み込み,プログラム上で扱い やすいデータ構造上にグラフデータを反映させ,その上で探索してもらうという構成になっています. グラフは無向グラフです [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン:visual studio 2003 [3.3] 言語: C言語 [4] 期限: 20008年3月20日20:00まで [5] その他の制限: C言語初心者なのでなるべく簡単にしてくれるとありがたいです. リンクの張り方がわからず、問題文が長くなりお手数をかけて申し訳ありません。 どうぞよろしくお願いします。
705 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 06:51:42 ] >>704 4.が意味不明。 ポインタを使わなければ任意で複数のエッジの表現はできない。
706 名前:名無しです [2008/03/20(木) 09:40:57 ] 4について、領域を(配列を用いて)静的に確保するか,ポインタを用いて動的に確保するかの選択が必要です. 「静的」と「動的」とは,例えば配列 a[10]のように格納する領域が指定されているのを静的といい, 動的というのは問題によりその格納する領域が変化すると、説明されました 文章が稚拙でわかりにくいところが多々あるかもしれませんが、よろしくお願いします
707 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 11:43:20 ] >>706 リストは動的に領域を確保しないと意味ないぞ。 目的が単にスタック、キューの実現なら、配列を使って実装できるけど、 リストを使うことが課題で決められているなら、動的に確保するしかない。
708 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 11:52:50 ] 多分リスト構造で表現するのと ノード数Xノード数の2次元配列を使う表現の2種類を区別しろというこではなかろうか?
709 名前:名無しです [2008/03/20(木) 11:55:02 ] なるほど。課題でリストを使うようにと言われているので動的に確保したいです。 後出しになってしまってすいません。ご教授お願いします
710 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:06:38 ] あとファイルのフォーマットがわからないと 後出しでファイルの入出力の仕様追加が発生すると困りそうだな。
711 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:08:32 ] >>708 なんか俺もそう思うんだが、 >>704 の1にはグラフデータを記憶する隣接リストの作成って書いてあるんだよな。 なんか余計分からなくなってきた…orz
712 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:15:52 ] >>709 もう少し詳しい課題の内容が分からないと教えられないかも
713 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:22:42 ] 実は元教官の俺が言うのもなんだが、 ワザと曖昧な出題をして学生がちゃんと仕様を確定する的確な質問をするか。 頓珍漢な答えを提出するか。 曖昧さの中から考えられるすべてのケースを想定して複数回答を提出するか というのを試したことがある。
714 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:32:57 ] >>713 >>704 が出された正確な課題で、わざと曖昧な課題にしてあるのなら いくらでも作りようがあるけど、なんか単に課題が書ききれてないだけのような気が…。
715 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 13:17:43 ] このスレのことをよく知っていて、わざと曖昧に出題してるとか…
716 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 13:23:05 ] ちなみに713がどんな問題を出したのか気になる
717 名前:名無しです [2008/03/20(木) 13:47:10 ] たぶん>>708 だと思います。 ファイルの入出力の仕様というのはfopenとかのことでしょうか? 「リスト構造」を基に「スタック」,「キュー」,およびグラフのデータ構造(隣接リスト等)を実現し, アルゴリズムに従い,グラフ上を探索し,得られた探索木を出力してもらうプログラムの作成と課題には 書いてあるのですが、これじゃ情報不足でしょうか? 至らぬ文章力ですいません orz
718 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:04:39 ] どこかに書いてあるなら、書いてあることすべて写して書き込めばいいのに 量が多いなら>>1 のうpろだを使うとかして。
719 名前:名無しです [2008/03/20(木) 19:55:13 ] ファイル kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6158.txt 読み込むデータはこれを渡されました。
720 名前:名無しです [2008/03/20(木) 22:46:18 ] 期限で3月20日20:00と書きましたが解けるまでやらなきゃいけないので ぜひご指導お願いします 何度も書き込んですいません orz
721 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 23:26:25 ] >>720 で、グラフの探索とのことですが、何を探索すればいいのでしょうか? 1: 2 3 4 5 10 とかあるのは、「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」という意味でしょうか? そして、互いに一番遠い距離にあるノードの組を求めればいいのでしょうか? 何か情報をくださらないと、これだけでは私は解けないのです。
722 名前:名無しです [2008/03/21(金) 07:52:46 ] 1: 2 3 4 5 10とあるのは、「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」 という意味です。 ファイル kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6159.txt 深さ優先探索を途中までやって間違っているやつを知り合いにもらいました。これを 書き直してわかりやすようにしてはもらえないでしょうか? お願いします
723 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:21:30 ] >>704 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6160.c ごり押しで作ってたら、かなり汚いソースになってしまった 初心者には難しいと思うから、ほとんど参考にはならないと思うけど だれもうpしてないので上げてきます
724 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 12:48:03 ] スレチなのを承知でお願いします。気に触ったら無視して下さい。 [1] 授業単元:C#の個人課題 [2] 問題文(含コード&リンク):VC#(VS2008C#)にてwindowsフォームアプリケーションにて WEBカメラ(USB)をプレビューするプログラムを書け。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン:VC#2005or2008 [3.3] 言語: (C#) [4] 期限: [無期限] C#だけどやってもいいか。という方いらっしゃいましたらお願いします。
725 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 16:05:35 ] 内容が変じゃないか?ここ作成依頼スレじゃないぞ ぶっちゃけ知りたいこと課題に偽装しただけにしかみえない
726 名前:名無しです [2008/03/21(金) 22:17:45 ] >>704 作って頂きありがとうございます。 ですがすいませんわからないです orz >>722 のやつを作り変えて簡単なプログラムを作れないでしょうか? 何度もお願いして悪いと思うのですがお願いします。
727 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:16:37 ] 未だに>>704 の問題文が意味わからんのは俺だけ? 「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」 これだけ求めたいのなら、ファイルから読み込んだデータを線形リストに格納して ノード番号の位置のデータを参照するだけで済むだろう。 スタック、キューなんて使う必要ないし使いどころがないよな。 >>721 のいうように互いに一番遠い距離にあるノードの組を求めるとか、そんな問題ならわかるが。
728 名前:デフォルトの名無しさん [2008/03/22(土) 13:37:49 ] www.na.cse.nagoya-u.ac.jp/~reiji/lect/alg01/sec10-2.html tnt.math.metro-u.ac.jp/labo/grad/2003/egu/adjoin_list.htm tnt.math.metro-u.ac.jp/labo/grad/2004/masa/graph/0.html
729 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:43:50 ] >>727 > 未だに>>704 の問題文が意味わからんのは俺だけ? 本人も含めて誰もわかっていないのでは? >>704 からは、実装方法に関する制限は読み取れるが、 結局どういう問題を解きたいのかが示されていない。
730 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:48:19 ] とりあえず混乱しすぎだぞ。おまいら。 ・隣接リスト != リンクリスト, 連結リスト etc. ・動的確保しない連結リスト表現 struct Node { int num; int next; } nodes[20]; とでもして next は次のノードを指す添え字番号を指す。 例えば次の要素アクセスするなら nodes[nodes[i].next]。無効値は -1 とか。 C 使いなら普通ポインタ使うんでこんなことしないだろうが、アルゴリズムやデータ構造の教科書的にはたまにある表現だと思う。 ・「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」はファイルフォーマットの説明。 ・「スタック、キューなんて使う必要ないし使いどころがないよな。」→幅優先探索と深さ優先探索で使うって書いてあるじゃん。 ・(とりあえずの)探索内容→グラフ上を探索し,得られた探索木を出力 つまり単純に辿るだけ。出力フォーマットはしらんが、とりあえずどういう風に探索したかを出力できればいいんだろ。 木というからにはちゃんと親子が分かるようにするべきっぽく、>722 もそんな感じだ。 ・グラフの連結成分分解って書いてあるからここは深さ優先を使うことになるはず。
731 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:52:04 ] まとめるとこういうことだろう。 ・両方向環状リストの実装 ・上記を用いた、スタック、キュー、隣接リストの実装 ・上記を用いた、深さ優先探索、幅優先探索アルゴリズムの実装(出力は探索木) ・上記を用いた、グラフの連結成分分解の実装 これ、何回かに分けて出された課題をまとめてやろうとしてるんじゃないの?
732 名前:名無しです [2008/03/22(土) 15:01:51 ] 説明が下手でみなさんを混乱させてしまって本当に申し訳ありません。 >>731 さんがまとめてることをしたいんです。こんなにわかりにくい説明で 理解してくださってありがとうございます。
733 名前:名無しです [2008/03/22(土) 19:43:43 ] >>731 さんのを基にもう一度作ってもらうわけにはいかないでしょうか? 私が最初から>>731 さんのように書けば良かったのですが、説明が下手なのと 理解力がないばかりに orz
734 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:56:13 ] >>733 双方向リングリストの実装のみ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6164.c
735 名前:733 mailto:sage [2008/03/23(日) 00:03:31 ] >>734 リングリストなのに double ended はねーよ orz
736 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:17:48 ] double circular linked list が正しい英語
737 名前:733 mailto:sage [2008/03/23(日) 00:21:49 ] >>734 はバグってた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6165.c 訂正内容 次の行を追加 list->next->prev=ret;
738 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 06:55:06 ] >>733 >>737 を元にスタック実装して、グラフの連結成分分解を作ってみた 連結成分について考え方が間違ってたらすまん できるかぎり簡単にしたつもり kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6166.c
739 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 10:14:59 ] [1] 授業単元:プログラミング [2] 問題文: 問1)次のコードの実行結果を答えなさい。 byte a = 3; System.out.println(a = 2); 問2)次のコードの実行結果を答えなさい。 short a = 3; System.out.println(a == 2); 問3)次のコードの実行結果を答えなさい。 int a = 0; if (a == 1) System.out.print("aの値:"); System.out.println(a); System.out.println("終了"); [3] 環境 [4] 期限:[無期限] [5] その他の制限: なし レベルが違うような質問で申し訳ありません・・。 スレ違いでしたらスルーでお願いします。
740 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 10:19:48 ] Javaの宿題スレにゴー
741 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 10:34:10 ] >>740 ご親切にありがとうございました。
742 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 17:05:36 ] なんだか和んだぞ。
743 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 19:59:02 ] ナゴナゴ
744 名前:名無しです [2008/03/23(日) 22:19:32 ] みなさん>>704 を解いて頂きありがとうございました。
745 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:22:15 ] >>738 あぁ・・・ミスった memset(adj, 0, sizeof(adj)*NODENUM*NODENUM); を memset(adj, 0, sizeof(int)*NODENUM*NODENUM); に変えてね・・・
746 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 04:54:50 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6168.txt [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語:C言語 [4] 期限:2008年3月24日午前11時(できれば午前中で・・ 急なお願いですがよろしくお願いします。 [5] その他の制限:なし
747 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 06:15:00 ] 教官からどう指示されたのか不明だが、 フローチャートは矢印で繋ぐだけじゃ不十分だよ。
748 名前:746 mailto:sage [2008/03/24(月) 08:06:46 ] 矢印だけではダメなのはわかっています、確かに不十分ですよね それ以外は自分でんはんとかしようと思っているので・・・ ここではそれしか表現できなくて
749 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 09:55:10 ] 丸投げするか自分で全部やるかどっちかにしろよこんな簡単なもの。 この程度の物は矢印をまともに全部書いたらほとんどそれで答えじゃねーか。
750 名前:746 mailto:sage [2008/03/24(月) 10:37:09 ] その程度すら分からないんです、スイマセン・・、丸投げでおねがいします。
751 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:55:48 ] もう時間ないが、処理の流れはわかっているようだから ソースにくどいほどコメント書いて、それを適切な四角で括って 矢印で繋げばいいんじゃねーの。
752 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 12:35:40 ] ○開始 ↓ ◇センスの有無 ↓あり ↓なし □合格処理□不合格処理 ↓←───┘ ○終了
753 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:24:28 ] [1] 授業単元:プログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6170.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio 2003 [3.3] 言語:C [4] 期限:3/27 よろしくお願いします。
754 名前:デフォルトの名無しさん [2008/03/24(月) 13:31:41 ] >>753 超初心者の宿題だろう 自分で出来ないのかよ
755 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:32:42 ] >>753 strcatとstrlen使っちゃ駄目ってのは面倒だね。 (1) #include<string.h> int mystrlen(char*p){ return strchr(p,0)-p; } (2) #include<string.h> int mystrcatlen(char*a,char*b){ return strchr(strcpy(strchr(a,0),b),0)-a; }
756 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:34:34 ] >>754 なんだと!テメこのやろー ここがどこだか分かってるのか? 戦闘アドレス なめんなよ
757 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:38:50 ] ああ、main部分も書くのか。じゃあこれを>>755 の関数定義の下に付けといて。 (1) #include<stdio.h> int main(){ char p[100]; printf("文字列を入力してください -> "); scanf("%99s",p); printf("'%s'の長さは%dです\n",p,mystrlen(p)); } (2) #include<stdio.h> int main(){ char p[100],q[100]; printf("文字列を入力してください -> "); scanf("%99s",p); printf("文字列を入力してください -> "); scanf("%99s",q); printf("'%s'と'%s'を繋げると",p,q); printf("'%s'になり、長さは%dです\n",p,mystrcatlen(p,q)); }
758 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 14:15:04 ] >>757 助かりました。 ありがとうございます。
759 名前:名無しです [2008/03/24(月) 17:44:14 ] >>704 なんですが>>738 で解いてもらったやつでプログラムの動作チェックを行ったら, コンパイルすると「int main(int argc, char **argv){ /*argv main関数に引数を渡す*/」 でエラーが出てしまいます. エラー表示は「'0x40'は認識できません」と「'0x81'は認識できません」の2つが出てしまいます. 後,幅優先探索と連結成分分解のプログラムは>>738 には入ってないんでしょうか? 何度もレスしてすいません.どうかお力を貸してください.
760 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:46:39 ] コメント以外のところに全角スペースがあるんだろ
761 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:21:20 ] >>759 幅優先探索は入ってない 連結成分分解ってのが、つながってる点をまとめて表示することでないなら、 俺の連結成分の考えかたが間違ってる
762 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 00:00:16 ] >>759 連結成分分解は、>>738 で問題ない? 問題ないなら、幅優先探索での連結成分分解も作るけど (キューの実装できれば深さ優先探索とほとんど処理変わらないから、 必要ないかもしれないけど)
763 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:17:34 ] ちょっと面白い問題考えたから、みんなで解いてみてくれ。 Python で作ったプログラムで N < 10 までは試したけど、 発展問題についてはまだやってない。 基本問題: 例えば N = 8 としたときに 「この文章には0が1個、1が5個、2が3個、3が2個、 4が1個、5が2個、6が1個、7が1個含まれています」 という文章が生成されるとして、9以下の任意の自然数Nについて もこのような文章を生成するプログラムを作れ。 解がない場合は「解なし」とする。 発展問題: Nが10以上の時、解はあるだろうか?
764 名前:デフォルトの名無しさん [2008/03/25(火) 02:30:37 ] 0から順に数えていき、値が更新されたら追加していけばいつか出来ると思うが
765 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:46:44 ] 基本問題がわからない
766 名前:デフォルトの名無しさん [2008/03/25(火) 02:50:48 ] >>765 文書中に現れる文字をカウントして正しい文書にする
767 名前:デフォルトの名無しさん [2008/03/25(火) 02:54:58 ] もし解があることがわかれば総当たりでやればいつか解けるので いつでもとけるのかどうかを考えればよい
768 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:55:46 ] >>765 正しい自己言及文を生成する問題。 「」の中の数字の数と文章の内容を確認すれ。
769 名前:デフォルトの名無しさん [2008/03/25(火) 03:04:03 ] 0、1、・・・N-1と並べて、 0の個数をカウントしてそれを記録 次に1の個数をカウントして記録 もしその個数に0が現れれば0を更新 それにも1が現れれば1の個数を更新 ・・・・ 無限に値が更新される事はなく次へ進めるとは思う たとえば0が現れるのは桁上がりが現れるときだから(何度か更新を繰り返したとすると) 一度に0がいくつも増えなくては行けなくなりいつか停止すると思う
770 名前:デフォルトの名無しさん [2008/03/25(火) 03:07:45 ] 解ありをちゃんと説明してくれれば後は簡単なんだ だれか頼む
771 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:14:53 ] 「1が1個」 ↓ (あ、1の数が変わった。更新しよう) ↓ 「1 が 2 個」 ↓ (あ、1の数が1個にもどった。更新しよう) ↓ 無限ループ。
772 名前:デフォルトの名無しさん [2008/03/25(火) 03:17:33 ] 解無しも有るのか・・・
773 名前:デフォルトの名無しさん [2008/03/25(火) 03:25:48 ] nがn個ってなったら駄目なんだな そうなる所はカウントを保留しておき個数が変化するのを待ってカウントするか 簡単にはできそうにないね 巡回セールスマンと同じ種類では?
774 名前:871 mailto:sage [2008/03/25(火) 03:27:12 ] (さっき Python スレで突っ込まれた) ちなみに、Nの意味はN以上の数が出てこないって解釈で。すると N=1 のときは解なし。 N=2 も解なし。 N=3 も解なし。 N=4 では 「0が1個、1が3個、2が1個、3が3個」 「0が1個、1が2個、2が3個、3が2個」 N=10 ってのは「"10"という部分文字列の数」という解釈にしようと思う。
775 名前:デフォルトの名無しさん [2008/03/25(火) 03:29:53 ] N=1は解あるだろ 0が1個じゃないの? 間違えている?
776 名前:デフォルトの名無しさん [2008/03/25(火) 03:31:13 ] N=2 0が1個、1が2個では? どこか間違えている?
777 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:31:36 ] N以上が現出するとダメらしい。
778 名前:871 mailto:sage [2008/03/25(火) 03:34:29 ] 「0が1個」 だと、0については言えてるけど、 1について言及が無いので美しくない(俺的に) できれば文章中に出てくる全ての数字について言及させたい。 だから <N 以上の数を使わない>てルールをつけたんだ。
779 名前:デフォルトの名無しさん [2008/03/25(火) 03:34:50 ] そしたら総当たりの有限時間では解判定は出来るんだな その制限を外した場合は>>771 のような無限ループは発生するのだろうか?
780 名前:デフォルトの名無しさん [2008/03/25(火) 03:44:13 ] N以上が現れない場合でも、簡単には求められないよな 試行錯誤か、全パターンを生成して文書チェックするかくらいで いずれにしても時間がかかる 例えばN=1000を一日以内に解くプログラムとかは作れないんじゃないか?
781 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 04:38:11 ] 0が1個、1が12個、2が3個、3が2個、4が1個、5が1個、6が1個、7が1個、8が1個、 9が1個、10が1個、11が1個、12が2個、13が1個、14が1個。
782 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 04:57:56 ] >>781 その文章中の0は2個ありそうだ。 例えば11という数字があった場合、1として2個で11として1個と数えるのか、 それとも11という塊になっている場合は1としてはカウントしないのか。
783 名前:デフォルトの名無しさん [2008/03/25(火) 04:59:50 ] 111は、1が3つ、11が2つ、111が1つ ですよね
784 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 05:01:08 ] こういう問題の場合数えないのが普通だと思うけど。
785 名前:デフォルトの名無しさん [2008/03/25(火) 05:04:00 ] 異なるものがいくつあるのか正しく求めるのが正解のはずだ 783が正解
786 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 05:14:04 ] 数値の組み合わせ(順序数, 順序数と個数自身を含めた個数)について無矛盾にする問題とみなすか、 文章から得られる全ての部分文字列の集合内の数値に相当する要素の個数について無矛盾にする問題とみなすか。
787 名前:デフォルトの名無しさん [2008/03/25(火) 05:18:23 ] これはやる意味ないと思っている 巡回セールスマンと同じく多項式時間では解けないというやつと思う プログラム作るだけ時間の無駄と思っている
788 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:22:49 ] 0が2 1が8 2が3 3が3 4が1 5が1 6が1 7が1 8が2 9が1 10が1
789 名前:デフォルトの名無しさん [2008/03/25(火) 11:25:04 ] 一般Nで解けるソースはりつけてよ
790 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:53:54 ] const int N = <整数> std::string S[N]; int count(int num){ int sum=0; std::string substr = <num の文字列表現> for(int i=0; i<N; ++i) { std::string i2s = i の文字列表現 sum += <文字列 i2s に含まれる substr の数> sum += <文字列 S[i] に含まれる substr の数>; } return sum; } int check(){ for (int i=0; i<N; ++i) { if (count(i) != <文字列S[i]の整数表現>) return; } printf("----\n"); for (int i=0; i<N; ++i) printf("%d が %s\n", i, S[i]); } void find(int depth) { if (depth < 0) { check(); return; } for (int i=0; i<N; ++i) { S[depth] = <i の文字列表現>; find(depth-1); } void main() { find(N-1); }
791 名前:名無しです [2008/03/25(火) 12:20:30 ] 流れを切って申し訳ありません >>704 の問題ですが >>738 さんのでやると連結成分分解のプログラムの動作を確認できるんですけど,ずっと同じ出力結果なんです。 出力結果の数字が何を指しているのかわからないのでどのような意味なのか教えてもらえないでしょうか? 幅優先探索での連結成分分解もよくわからないので作っていただけないでしょうか? よろしくお願いします
792 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:42:01 ] >>789 間違ってるかもしれないし、厳密解でもない ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6174.c
793 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 15:38:35 ] 763って個数の合計はN*2に決まってるんだから 対数時間で計算出来そうにみえるけど ナップザック系とは関係なくないか
794 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 16:26:33 ] >>763 面白いな
795 名前:デフォルトの名無しさん [2008/03/25(火) 20:59:56 ] コード貼るならここがいいよ ttp://codepad.org 実行結果までやってくれる
796 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:48:06 ] [1] 授業単元:プログラミング言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6176.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6177.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン:gcc 3.4 VC 6.0 [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限:明日の夜まで [5] その他の制限:ほとんど素人が手をつけ始めたくらいの知識しかないです。だから難しいことはしてないかも。 何問か課題を出されたのですがどうしてもこの2つが分かりません。よろしくお願いします。
797 名前:796 mailto:sage [2008/03/25(火) 21:49:55 ] 申し訳ありません。OSと言語のこと忘れてました。 OSはwindowsで言語はC言語です。
798 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:55:15 ] >>796 一問だけ解いてみた #include <stdio.h> int main(void){ int i, j; for(i=0;i<26;i++){ for(j=0;j<=i;j++) putchar('A'+i); for(;j<=26;j++) putchar('Z'-i); putchar('\n'); } return 0; }
799 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:01:47 ] >>763 やってみたけど問題としてはツマンナイ答えしかでないっぽいよ。 いいアルゴリズム探す気力なくなったの途中でやめました.. ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6178.c
800 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:08:22 ] >>799 対応しているのは N=10 まで?
801 名前:799 mailto:sage [2008/03/25(火) 22:10:25 ] 10行目まちがえた。適当でごめん × if( c[ a[ i ] ] != 1 ) ○ if( c[ i ] != 1 )
802 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:13:38 ] 800 N=19ぐらいまで。それ以上でも正解は同じパターン一個っぽい。 (のでそれ以上追求するのやめました。)
803 名前:796 mailto:sage [2008/03/25(火) 22:16:38 ] >>798 ありがとうございます。putchar使えば良かったのですね。
804 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:18:17 ] >>802 N=11 のときに 0 と 1 の個数が違うんだが…
805 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:28:36 ] >>796 下の奴適当にやってみた 曜日を調べるのは「C言語 曜日」でぐぐって一番上の奴使った ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6179.txt
806 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:14:47 ] >>800 のやつを貼付けてみた。 ttp://codepad.org/3hP8x4xd
807 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:32:13 ] >>791 全部のグラフで同じ出力結果になるってこと? 出力結果はただ単に、到達可能な点をまとめて{ }で囲んで表示してるだけ 出力結果が何を指しているのか分からないってことは、 >>738 のプログラムがあってないってことなんで、幅優先探索は作れない
808 名前:デフォルトの名無しさん [2008/03/26(水) 10:24:33 ] >>796 1番目の問題の表示例は AZZZZZZZZZZZZZZZZZZZZZZZZZZ BBYYYYYYYYYYYYYYYYYYYYYYYYY CCCXXXXXXXXXXXXXXXXXXXXXXXX の間違いか? AZZZZZZZZZZZZZZZZZZZZZZZZZZZ BBYYYYYYYYYYYYYYYYYYYYYYYYYY CCCXXXXXXXXXXXXXXXXXXXXXXXXX だと26行目は ZZZZZZZZZZZZZZZZZZZZZZZZZZAA になってしまうぞ。
809 名前:デフォルトの名無しさん [2008/03/26(水) 20:37:58 ] [1] 授業単元: プログラミング演習 [2] 問題文:5人のテストの点数をキーボードから入力し、合計と平均を表せ。 [3] 環境 [3.1] OS: Windows・Linux/ [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: 明日まで 初期的な問題ですがお願いします。
810 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:55:18 ] >>809 #include<stdio.h> int main() { int i, test[5], sum = 0; for (i=0; i<5; i++) { printf("%d人目の点数を入力してください:", i+1); scanf("%d", &test[i]); sum += test[i]; } printf("合計:%d 平均:%f\n", sum, (double)sum / 5); }
811 名前:デフォルトの名無しさん [2008/03/26(水) 23:19:00 ] test+iでええやん。
812 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:25:25 ] >>811 君は一年後自分のレスを思い出してこう言うだろう 「認めたくないものだな、自分自身の若さ故の過ちと言うものを。」
813 名前:812 mailto:sage [2008/03/26(水) 23:27:41 ] おれは今自分自身の過ちを後悔している コピペ元が間違ってた orz 「認めたくないものだな。自分自身の、若さ故の過ちというものを。」
814 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:55:53 ] ガノタ乙 と言って欲しいんだろ?
815 名前:デフォルトの名無しさん [2008/03/27(木) 00:01:02 ] >>812-813 なんだこいつ・・・
816 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:07:28 ] それより>>811 の解説してくれ
817 名前:812 mailto:sage [2008/03/27(木) 00:18:13 ] >>816 シンタックスシュガーを知ったばかりなので使いたがっている状態
818 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 01:08:39 ] 糖衣構文でええやん。
819 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 02:17:54 ] ところで、 >>44 > /* 文字列の長さ */ > for(str_length=0; str[str_length]; str_length++) {} ではなく str_length = sizeof (str) - 1; だと思うが。
820 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 02:20:36 ] >>811 そもそもtest[5]はscoreでええがな
821 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 02:30:33 ] >>819 わざわざ「文字列の長さ」と書いてあるんだから配列の大きさを基準にしちゃダメじゃないか?
822 名前:デフォルトの名無しさん [2008/03/27(木) 09:03:35 ] >>817 こいつもしかして、test[i]こそがシンタックスシュガーだということを知らないのでは・・・
823 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 10:49:45 ] >>816 test[i]は*(test+i)のシンタックスシュガー &test[i]は&*(test+i)のシンタックスシュガー &*ってムダじゃね?ってことだろ。
824 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 14:09:52 ] 糖衣だろうがなんだろうが &test[i] なんて書き方はしねーよ
825 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 14:17:26 ] それが、&test[i]の方が多数派だったりするんだよw
826 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 14:29:03 ] 確かに&test[i]って記述はよく見かけるね 俺は個人的に好かない書き方だ Cの配列とアドレッシングとの関連がわかってないのかな
827 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:00:27 ] 俺はCだと基本どうでもいい。所詮、構文糖。 が、C++だと&a[i]とa+iの意味が違う事がある。(std::vector等)。 STL等のランダムアクセス可能なコンテナだと&a[i]は使えるけどa+iは使えない。 そうなるとCを使うときもC++の流儀に合わせて&a[i]と書きたくなる。
828 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:21:10 ] vectorで&a[i]なんて何に使うんだ?
829 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:45:00 ] char*を要求する関数を呼び出すときとか
830 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:55:40 ] char*ならstd::string使えよ・・・
831 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 16:00:56 ] 非constのchar*が必要なとき
832 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 16:48:17 ] &を見れば定義をみないでもアドレスであることがわかる ソース中の[をみれば配列にアクセスしている箇所を testをキーワードにして検索したりしないでもすぐ探せる 保守しやすくなるからワザとやってるんじゃないの
833 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 16:52:58 ] >>826 Cの配列とアドレッシングとの関連がわかっていることと &test[i]と書くことは全く別問題。
834 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 22:46:33 ] &test[ i ] 配列testのi番目の要素のアドレス test + i ポインタtestからi * nずらしたアドレス って感じだから前者の方がしっくりくるって人が多数派ににるんじゃない?
835 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 23:52:10 ] &test[i]って書き方はあまりしないけど、&test[0]って書き方なら結構するな testだけだとパッと見わかりにくいし。
836 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 04:23:24 ] >>835 char buf[1024]; int size = sizeof(&buf[0]); って書くってこと?
837 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 04:35:51 ] オッス、オラC言語歴10年、もっとオラがwktkするような宿題を依頼してくれYO!
838 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 04:42:23 ] >>836 何をしたいのか理解できない
839 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:17:42 ] 整数を入力してください:25 1234567890123456789012345 こんな感じで1234567890123…を読み込まれた整数の個数だけ繰り返し表示するプログラムを作成する問題なのですが 誰か教えて頂けないでしょうか?
840 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:27:22 ] [1] 授業単元: [2] 問題文(含コード&リンク):>>839 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:BCC Developer 1.2.21 [3.3] 言語:C [4] 期限:[無期限] [5] その他の制限:独学ゆえに聞ける人が居なくて困ってます
841 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:29:21 ] printf("%u", n%10); あとは頑張れ。
842 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:30:16 ] >>839 #include <stdio.h> int main() { int n, i; printf( "整数を入力してください:" ); scanf( "%d", &n ); for(i=1; i<=n; i++) putchar( '0'+i%10 ); return 0; }
843 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:30:26 ] 独力で学習することが独学。 聞ける人がいないのは孤独。
844 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:31:01 ] >>841 勉強用に捻くれたコードにしてみた。 #include<stdio.h> int main(void){ int n; printf("整数を入力してください:"); for(scanf("%d",&n);n>0;n-=10) printf("%.*s",n,"1234567890"); return 0; }
845 名前:844 mailto:sage [2008/03/29(土) 14:31:36 ] おっとアンカミス s/841/840
846 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:42:21 ] ありがとうございます! 上京したてで友達がいない中、予習してまして…
847 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 14:50:16 ] 勉強用に、の意味がわからない
848 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 16:14:46 ] 勉強用に捻くれたコードを提示すると、捻くれた知識が身に付くだけだぞ。
849 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:55:02 ] と、捻くれた人が言ってます
850 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:43:08 ] >>840 と >>844 は師匠と弟子か? もしそうならスレ立てしてそっちでやれよ ついでに俺は前置きで > こんなの書いても現段階だと悪影響にしかならん気はするぞ って書いておいたんだがな
851 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:55:00 ] >って書いておいたんだがな どこに?
852 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:11:50 ] >>850 > >>840 と >>844 は師匠と弟子か? いや、まったく関係なし。 単に暇つぶしで適当かつ、それなりに捻くってコードを書いただけ。 真面目なコードは既に出てたし、こういう捻った書き方もあるよーってね。 #まぁぶっちゃけprintfの書式で遊んでみたかっただけなんだけど。
853 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 19:16:56 ] 勉強用に、って自分の勉強のことか
854 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 21:07:15 ] 変なコードを書くときは、一々捻くれたとか書かないでそのまま書く。 そういうことを書くとちょっと変わった俺臭がきついから。
855 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 21:10:10 ] いよいよCにすら関係なくなってきたぞ
856 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 23:39:59 ] まぁ、ぶっちゃけ、これらを習って最終的に何を作る目的があるのか? 自分も大学生時代にC言語の授業はあったけど、そこで習ったことだけじゃ通用せんが 必要なことは習っていた。その後、自分でライブラリを調べて、日ごろの使用目的に応じて 必要なプログラムを作るようになった。そうなるのが望ましい。
857 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:22:05 ] まあここに来るのは「プログラムの宿題マンドクサ。誰かにやってもらおう」って人だから、望むべくもないかもね。
858 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:36:29 ] それくらいの人の方がうれしい 単位がかかってるとか理解できないからもっと簡単にしてくれとかちょっとうざい
859 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:43:56 ] 何でも良いから宿題かもん
860 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:46:37 ] ひまなら project Euler でもやってれば
861 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 00:48:37 ] おおやってみるdクス
862 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 12:55:14 ] [1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク):() 指定文字列と一致する文字列が規定の文字列に存在するかどうかを2分探索法で探索するプログラム [3] 環境 [3.1] OS: (Windows/Linux/等々) linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)3月31日AM9:00まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)特になし 上記のプログラムの作り方が分かりません。文字列は2つとも配列に格納してある状態です。よろしくお願いします。
863 名前:862 mailto:sage [2008/03/30(日) 12:57:51 ] ↑書き忘れました。 規定の文字列というのは2分探索法ですので aaabbcのように辞書順にソートされている1行の文字列です。
864 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:32:09 ] | 1 2 3 4… 9 --------------------- 1| 1 2 3 4… 9 2| 2 4 6 8… 18 3| 3 6 9 12… 27 4| 4 8 12 16… 36 以下省略 と、いった感じの九九の表をforを使って作りたいのですが、どうしたらよいのでしょうか?
865 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 14:02:38 ] int main() { int i, j; const int max = 9; printf(" |"); for (i = 1; i <= max; i++) { printf(" %3d", i); } printf("\n--+"); for (i = 1; i <= max; i++) { printf("----"); } for (i = 1; i <= max; i++) { printf("\n%2d|", i); for (j = 1; j <= max; j++) { printf(" %3d", i * j); } } return 0; }
866 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 15:06:39 ] >>862 mainは適当に書いたから書き直したほうがいいかも kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6186.c
867 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 15:09:28 ] >>862 二分探索には標準ライブラリ関数bsearchを使いました。 #include <stdio.h> #include <stdlib.h> #include <string.h> int cmp( const void* key, const void* elm ) { return strcmp( (const char*)key, *(const char**)elm ); } int main(void) { // 規定の文字列。辞書順にソートされていること。 static const char* const table[] = { "abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz", }; const char** hit; char str[101]; printf( "検索文字列:" ); scanf( "%100s", str ); hit = (const char**)bsearch( str, table, sizeof(table)/sizeof(*table), sizeof(*table), cmp ); if( hit ) printf( "'%s'は%d番目に存在します。\n", str, hit-table ); else printf( "'%s'は存在しません。\n", str ); return 0; }
868 名前:867 mailto:sage [2008/03/30(日) 15:21:42 ] >>863 を把握していなかった。修正。 #include <stdio.h> #include <stdlib.h> #include <string.h> int cmp( const void* key, const void* base ) { const char* key_str = (const char*)key; return strncmp( key_str, (const char*)base, strlen(key_str) ); } int main(void) { static const char base[] = "aaabbc"; // 規定の文字列 const char* hit; char str[101]; printf( "検索文字列:" ); scanf( "%100s", str ); hit = (const char*)bsearch( str, base, strlen(base), 1, cmp ); if( hit ) printf( "'%s'は%d文字目から存在します。\n", str, hit-base+1 ); else printf( "'%s'は存在しません。\n", str ); return 0; }
869 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:03:32 ] >>864 int x,y; puts(" | 1 2 3 4 5 6 7 8 9\n------------------------------" for(x=1; x<10; x++) { printf("%d | ", x); for(y=1; y<10; y++) printf("%d ", x * y); }
870 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:08:44 ] >>869
871 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:50:16 ] 〉〉868 アルゴリズムの問題なのだから、bsearchを使うのはだめなんじゃないか?アルゴリズムを作って使う課題なのだろうし。
872 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:57:05 ] C++ のSTLのvectorで、要素の最後から開放していくのはこんな感じであってますか? std::vector<Hoge*>::reverse_iterator itr = v.rbegin() ; while( false == v.empty() ) { delete *itr++ ; v.pop_back() ; }
873 名前:デフォルトの名無しさん [2008/03/31(月) 23:11:01 ] 基本的に領域の開放は無理だろ swapでやるしか無いのでは? ブロックごとに管理して100個使わなくなったら解放とかじゃないか
874 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:11:47 ] constでない操作を呼び出した時点でiteratorは無効になる。 (実装によりたまたま有効なままかもしれないけど) ↓でいいんじゃない。 while(!v.empty()) { delete v.back(); v.pop_back(); }
875 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:14:51 ] pop_backした際にiteratorが無効になるので駄目。 なので while( ! v.empty() ){ delete v.back(); v.pop_back(); } もしくは for(std::vector<Hoge*>::reverse_iterator itr = v.rbegin();itr != v.rend();++itr) delete *itr; v.clear(); もしくは std::for_each(v.rbegin(),v.rend(),boost::checkd_deleter<Hoge>()); v.clear(); あたりをどうぞ。 2番目か3番目がお勧め(3は要boost)
876 名前:デフォルトの名無しさん [2008/03/31(月) 23:18:15 ] 上のソースで、一つずつ領域解放出来るの??? swapしか出来ないと思ってたけど
877 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:21:33 ] 解放しようとしているものを取り違えている。 v.empty()がtrueだけどメモリがreserveされてる話とは別。 vector<Hoge*>().swap(v); てことだろうけど、これだとvの中のHoge*が指す先はリークする。
878 名前:デフォルトの名無しさん [2008/03/31(月) 23:22:22 ] delete v.back(); 'delete' のオペランドは非 const ポインタでなければならない
879 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:23:14 ] >>878 vがconstなんだろ。それなら無理だ。
880 名前:デフォルトの名無しさん [2008/03/31(月) 23:23:47 ] >>877 後ろからサイズを小さくしていくならばresize()という関数あるけど駄目なの?
881 名前:デフォルトの名無しさん [2008/03/31(月) 23:24:36 ] vector<int> v(10000); だが・・・
882 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:25:26 ] >>880 元の質問読んでる?vector<Hoge*>の各要素が指す先をdeleteしつvectorをemptyにしたいって言ってるんだよ。
883 名前:デフォルトの名無しさん [2008/03/31(月) 23:31:04 ] そういうことね
884 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:39:18 ] >>875 3番目はboost無くても数行で実装できるよね www.google.com/search?q=for_each+delete
885 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 23:48:18 ] >>875 うん。今回だとdeleteを適用する関数オブジェクト作るだけだしね。
886 名前:デフォルトの名無しさん [2008/04/01(火) 16:21:58 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6189.txt [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン: visual studio 2003 [3.3] 言語:C言語 [4] 期限:2008年4月2日午前8時 [5] その他の制限:なし よろしくお願いします