- 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/
- 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さんありがとうございます。たすかりました。
|

|