1 名前:デフォルトの名無しさん [2009/05/18(月) 23:06:51 ] あなたが解けない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++の宿題片付けます 125代目 pc12.2ch.net/test/read.cgi/tech/1240226599/
152 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:59:48 ] >>151 落ち着いて、相手に分かる言葉で頼む。
153 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:04:06 ] >>115 1つだけ聞かせてくれ。 これは、学校の講義で宿題として出されたものなのか? 自分がこういうことをやりたいだけなのか?
154 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:04:28 ] Aの単語表示\tBのファイルの全ての文字を読み込んで表示 を4回繰り返してテキストにとる
155 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:07:07 ] つまりBは10個あると書いてあるけど一個しかないんだね
156 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:14:53 ] >>145 もうあれだ、system関数でシェルスクリプト呼んじゃえ。 cat B0[1-4] | paste A - > C でお望みのものができるから。
157 名前:デフォルトの名無しさん [2009/05/23(土) 04:03:23 ] >>75 さんありがとうございます。
158 名前:デフォルトの名無しさん [2009/05/23(土) 04:06:05 ] >>95 ありがとうございました この問題もわからないので教えてください [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): (1)[0,1]の一様乱数x,yを発生させるプログラムを作れ (2)[0,1]の一様乱数x,yを発生させ、x^2+y^2<1となる確立を求めろ (一様乱数を発生させる試行を繰り返し、(上式を満たす回数)/(試行回数)から確立を求める) またπの数値を求めろ [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C++ [4] 期限: 5月25日 宜しくお願いします
159 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 08:37:50 ] >>158 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9227.txt 標準関数std::rand()はやや性能が悪いため コンピュータ・アルゴリズム事典(奥村晴彦著)より乱数の改良を 行うようにした
160 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:02:48 ] >>059 (1) 提出期限過ぎてるけど、2整数か?の突っ込みは無しで。 #include <stdio.h> int main() { int n, c; printf("2進数を1つ以上入力してください:最後は1000\n"); do { for(n = 0; ;) { c = getchar(); if (c == '0' || c == '1') { n <<= 1; n |= (c == '1') ? 1 : 0; /* 1/0 を入力 */ } else if (c == EOF) return 1; else break; } printf("%d ", n); if(c == '\n') puts(""); } while(n != 0x8); /* 1000 (binary) */ return 0; }
161 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:13:32 ] 問題を誤読してる気がする。
162 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:19:46 ] [1] 授業単元: 情報リテラシー [2] 問題文: 10から110までの乱数を100個作り、 同時ににアスキーコードで文字に変換して小文字だけを大文字にせよ [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: 富士通 [3.3] 言語:C言語 [4] 期限:[2009年05月26日h:16:30まで] [5] その他の制限: アスキーコードやら何やら今一良く分かりません。 よろしくお願いします。
163 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:44:55 ] >>162 珍しいコンパイラwww #include<stdio.h> #include<stdlib.h> #include<ctype.h> int main(void) { int i, x; int max=110, min=10; for(i=0;i<100;i++) { x=rand()%(max-min+1)+min; if(islower(x)) x=toupper(x); printf("%c", x); } return 0; }
164 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:53:40 ] 京大?
165 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 13:00:49 ] Faithless C compiler とか >>163 種蒔かんで良いのか?
166 名前:110 mailto:sage [2009/05/23(土) 13:05:38 ] >>112 >>113 >>123 アドバイスありがとうございます。 課題中で具体的に示されてある修正点だけでいいので、どなたかプログラムを修正してもらえないでしょうか? 提出期限は明後日なのですが、実際にプログラムを動かして色々と考察を書かないといけないので・・ よろしくお願いしますm( _ _)m
167 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 13:20:58 ] 後だしでなく必ず勝つ。 x=rand()/(RAND_MAX+1.0)*(max-min+1)+min;
168 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 17:07:20 ] >>151 // Usage: my_paste a1 b1 b2 b3 b4 ... > c1 // a: 行数はb(max)行 bの数と一致しない場合は途中まで処理する。 // b: 行数は1行のみ。改行で終わる。サイズは大きくても良い。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { FILE *inA, *inB, *outC = stdout; char bufA[80]; // ファイルA読込用(1行を読込めるサイズが必要) char bufB[256]; // ファイルB読込用(複数回に分けて読み込むので適当で良い) int i, readsize; if(argc < 3) return -1; inA = fopen(argv[1], "r"); if (inA == NULL) { fprintf(stderr, "Can't open %s\n", argv[1]); exit(1); } for (i = 0; i < argc-2; i++) { inB = fopen(argv[i+2], "r"); if (inB == NULL) { fprintf(stderr, "Can't open %s\n", argv[i+2]); break; } // Aを1行読込み、改行を取り除き、末尾にTabをつけてCに出力 if(fgets(bufA, sizeof(bufA), inA) == NULL) { fclose(inB); break; } bufA[strlen(bufA) - 1] = 0; fprintf(outC, "%s\t", bufA); // Bをバッファサイズ単位で読込み、Cに追記する(必要な回数繰返す) while ((readsize = fread(bufB, 1, sizeof(bufB), inB)) > 0) { fwrite(bufB, 1, readsize, outC); } fclose(inB); } fclose(inA); return 0; }
169 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 17:18:34 ] [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9228.c [3] 環境 [3.1] OS: (Windows/Linux/等々) linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [5] その他の制限 問題文のプログラムはls -aslを実行するプログラムである。これを参考にオプション -a -F -l -dを引数とした場合に lsコマンドと同じ動作をするようなプログラムmylsを作れ。 ・statシステムコールではなくlstatシステムコールを用いる ・オプションは-aといった引数に続けて指定、-aFl、-laといった複数オプションにも順不同に対応 ・myls - aといった場合にはUsageを表示する ・UID、GIDは数字のままでいい オプション指定にgetopt関数を使って while((option = getopt(argc, argv, "aFld")) != -1){ switch (option){ case... って書こうとしてるんだけど、case 'a':を書こうとした時に下にあるvoid関数のどの部分で ls -aと同じ動作をしているのかが分からない。どなたかお願いします。
170 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 17:40:37 ] >>169 Part125_994 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9210.txt
171 名前:162 mailto:sage [2009/05/23(土) 17:48:45 ] >>163 ありがとうございます。
172 名前:デフォルトの名無しさん [2009/05/23(土) 18:58:19 ] 1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9229.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C++ [4] 期限: 5月25日 [5] その他の制限:条件の判定にif(1.0!=(1.0+e))のようなif文を用いる eはεのこと よろしくお願いします。
173 名前:デフォルトの名無しさん [2009/05/23(土) 19:13:25 ] [1]授業単元:アルゴリズム [2]問題文(含コード&リンク) 問7-6 12x12のセルを持つ迷路がある。 スタートからゴールまでの最短経路を探したい。 (1)フローチャートを書け。 (2)実際に最短経路を調べ、表示するプログラムを書け。 ヒント 迷路は二次元配列で出来ている。 スタートやゴールのセル、壁のセルは最初は分からないようになっている。 手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。 [3]:環境 [3.1]OS:XPsp2 [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C [4]期限:5月26日8:00 [5]その他の制限:ソースコードにはしっかりコメントを記述すること、と言われました。 また迷路を生成するプログラムは無くても良いそうです。 C言語に関しては配列を学んだ所までです。(構造体やポインタはまだやってません。) 最悪フローチャートだけでも構いません。よろしくお願いします。
174 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:19:43 ] 迷路探査は、ネット調べればソースごとあるぞ。
175 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:20:11 ] >>172 Part125_146 #include <stdio.h> #include <float.h> #include <math.h> int main() { double e1, e2; unsigned int n; e1 = 1.0; printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON); for(n=1; n<4294967295u; n++) { e2 = e1 / 10.0; if(1.0 == (1.0 + e2)) break; e1 = e2; } printf("%.15e %d\n", e1, n-1); }
176 名前:173 [2009/05/23(土) 19:35:12 ] >>174 言葉足らずで申し訳ありません…… 迷路探索のソースはいくつか探すことが出来たのですが、 更に最短経路を探すものが見つからなくて今回お願いしました……
177 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:45:01 ] >>176 普通の迷路なら経路はただ一つなんじゃない? 経路が複数あるって、巡回路の最適解を求めるような問題?
178 名前:173 [2009/05/23(土) 19:57:20 ] >>177 上手く言えませんが壁の配置によっては経路が複数あります 袋小路とかも含めて総当たりで経路を調べる、のだとしたら巡回路の問題なのかもしれません すみません、あまりよくわかってません……
179 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:01:59 ] >>173 再起関数で、深さをカウントしていって、144段(縦*横)以上になったら打ち切れば良いよ。 で手数をへらして検索。
180 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:48:53 ] >>173 最短経路が必要な場合は、2DRPGの最短移動アルゴリズムを使えばいいよ。 12x12の配列Aをワークとして用意する。型はintでいいや。 Aはすべて-1で初期化しておく。 まずスタート地点の決定。これは総当たりだから省略。 現在の探索深度を示すワーク int depth を用意して0に初期化する。 さて探索だけど、 1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。 2.Aを全探索して、値がdepthになっているものがあれば、 その上下左右(斜めも移動できるなら斜めも)に移動可能かどうかを 調べる。移動可能で、かつその位置に対応するAが-1なら、その位置に depth+1を書き込む。 移動可能な位置がゴールなら終了。4へ。 3.A全体を操作し終わるまで調べて、ひとつもdepthがなければ終了。ゴールには到達できない。 1つでもdepthがあれば、++depthして、2を繰り返す。 4.ここからが最短経路探索。 まずゴールには到達しているから、ゴールのdepthは分かってる。 そこから 上下左右のAの値が depth-1 になっている位置が最短経路。 複数ある場合の処理は好きなようにすればいいが、今回は単純に最初に みつかった場所へ移動すればいいだろう。 5.これを繰り返してスタートに到達するまで続ける。なおスタートには必ず到達できる。
181 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:51:41 ] >>180 すまん ×1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。 ○1.スタート地点に対応するAに0を代入する。
182 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:55:26 ] ちなみに医学部の卒業研究見学したけど、怖かった。 犬を生きたまま仰向けで四肢を固定し、毛を剃って電気メスで腹を切る。 肋骨をノコギリで切って、心臓にいろいろな電気信号を与えて生体の反応を調べる。 もちろん全身麻酔はしてるけど、生体の反応を損ねないようにギリギリの量にしてるから、ピクピク動いてた。
183 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:12:16 ] >>179 >>173 >手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。 を満たせなくね?
184 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:21:39 ] スタート地点も探索で見つけないといけない? 予め指定がないと、何処から始めたら良いものやら。
185 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:34:53 ] 多分出題者が間違ってるんだろうが、バックトレースじゃなくてバックトラックだろうな。
186 名前:デフォルトの名無しさん [2009/05/23(土) 21:35:20 ] 流石にスタート地点は総当たりじゃないかなあ そうでなかったらうーん
187 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:53:30 ] >>173 やってみた 基本的に >>180 の内容 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9230.c
188 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 22:19:36 ] >>187 「構造体やポインタはやってない」の制限にひっかかってるよw
189 名前:185 mailto:sage [2009/05/23(土) 22:22:45 ] ごめん。オレが勘違いしてたようだ。 バックトレースって、ゴールから逆にたどるって意味だなきっと。 >>180 のやり方で良さそうだね。
190 名前:187 mailto:sage [2009/05/23(土) 22:24:36 ] >>173 >>188 の指摘を受けて >>187 の修正版 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9231.c
191 名前:172 mailto:sage [2009/05/24(日) 00:24:38 ] >>175 ありがとうございました
192 名前:175 mailto:sage [2009/05/24(日) 01:02:49 ] >>172 間違い。1.0!=1.0+εとなる最小のεではなかった。 #include <stdio.h> #include <float.h> #include <math.h> int main() { double e1, e2; unsigned int n; e1 = DBL_MIN; printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON); for(n=1; n<4294967295u; n++) { e2 = e1 * 10; if(1.0 != (1.0 + e2)) break; e1 = e2; } printf("%.15e %d\n", e1, n-1); }
193 名前:172 mailto:sage [2009/05/24(日) 11:56:33 ] >>175 >>192 訂正ありがとうございます
194 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:51:50 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9232.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C++ [4] 期限: 5月26日朝 [5] その他の制限:よろしくおねがいします
195 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:46:05 ] >>170 ありがとうございます。
196 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:44:53 ] >>194 なんでうpろだ使ったんだwwwww
197 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:57:13 ] wwwwwww うけたwwwww
198 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:51:42 ] 一行伝えるのに資源使いすぎw
199 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 18:47:24 ] 宿題スレで分岐限定法の課題はあったでしょうか? あったのであれば、教えてもらいたいです。
200 名前:194 の心の声 mailto:sage [2009/05/24(日) 19:38:49 ] >>196 ろだにあげておくとweb検索で引っかかりにくいし、 どういう問題を依頼したかスレのログに残らないから。 そんな事も分からないのに問題解けるのかよw
201 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:41:44 ] [1] 授業単元:プログラミング演習2 [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9233.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まで] または [無期限] のいずれか) 5/26日午前9時 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ポインタ配列まで習ってます PCで規制が掛かっていたので携帯からの書き込みで申し訳ありません
202 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:57:33 ] >>201 課題1 my_sort_strings()は、どうやって並べ替える文字列を取得すれば良いですか?
203 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:08:03 ] 引数を何にするのかも問題のうちだろ、jk
204 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:16:14 ] >>203 並べ替えの対象となるポインタ配列はmainのローカル変数 my_sort_strings()は引数なし
205 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:19:37 ] >>204 なんでそうなるんだ? > 課題1 > 文字配列のソートを行って出力する以下のプログラムを完成させよ > ただし、my_sort_stringsはポインタ配列とそのよう素数を因数として、 > 登録されている文字配列を昇順に並べ替える関数である。 因数は引数の間違いで 関数プロトタイプはこうなるだろ void my_sort_strings(char **p,int n);
206 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:20:25 ] アホか、問題文では省略されてる引数を補って書くんだよw
207 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:21:23 ] わかるとは思うが206は204あてな
208 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:28:14 ] プロトタイプまで書かれていても、それを書き換えても良いのかね? 私なら、まず確認のためにどうするか聞くが。
209 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:38:21 ] そんなことより課題2を読む限り 課題1は先頭の一文字だけでソートするべきなのか?
210 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:39:24 ] みたいだね。 2見る前に書いたらmin_index()がまんま2の仕様になってたw
211 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:36:02 ] C++始めたばかりのド素人なんですが質問させてください。 「数直線上で4つの整数を入力して二種類の区画を指定し、その区画が重なるか否かを 判定するプログラム」 【出力結果例 区画A:2 5 区画B:1 3 重なる 】 となるプログラムを作成してみたんですが、↓のでいいでしょうか? 正確な問題文や細かい所は都合により今は見れないので、不明瞭な点もあるかと思いますが、 よければ添削お願いします。あと、使うのはIf文のみでお願いします。
212 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:36:47 ] #include <iostream> using namespace std; int main() { int x1,x2,x3,x4; cout << "区画A:”; cin >> x1 >> x2; cout <<"区画B:”; cin >> x3 >> x4; If(x4<x1 && x3<x1 && x4<x2 && x3<x2){ cout<<"重ならない”<<endl; If(x2<x3 && x1<x3 && x2<x4 && x1<x4){ cout<<"重ならない”<<endl; } else{ cout<<"重なる”<<endl; } return 0; }
213 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:40:57 ] テンプレに沿っていないので正規の質問とはみなされていない故 オブジェクション。 これは断じてC言語やC++言語の問題ぢゃなく、論理(ロジック) の問題。
214 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:51:31 ] If文は使えないな
215 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:53:12 ] 失礼しました。 授業単元:基本プログラミング 問題文:>>211 OS:Windows コンパイラ名:g++ 言語:C++ 期限:明日の午後6時まで その他の制限:If文のみ使用 です! ロジックも含めて、文法が合ってるかや無駄な部分がないかなどの意見も頂けたらと思い 質問させて頂きました、スレ違いでしたら申し訳ないありませんでしたorz
216 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:57:58 ] 1の右端が2の左端より大きくて1の左端が2の右端より小さいとき重なる
217 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:13:18 ] >>216 の言うとおり、重なるときを考えた方がわかりやすい あと、本当にx1<x2,x3<x4になってるか入力値のチェックも欲しい
218 名前:211 mailto:sage [2009/05/24(日) 22:30:14 ] >>216 >>217 なるほど… そっちのやり方も今試してみたんですが、x1x2x3x4の値はそれぞれ自由なので、 例えば出力結果 区画A:15 6 区画B:7 −8 重なる にもなるようにしないといけないので、整数の入力値の場合分けがかなり面倒になって プログラムが>>211 より長くなってしまうかなと思ってるんんですがどうでしょう… といっても、>>211 のプログラムとロジックで矛盾や穴などが無いかも自分では自信が無いのですが… なにぶん今はプログラムを実行できる環境にいないので机上の空論状態なんですorz
219 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:36:28 ] >>211 区間の両端の数値は区間の中なのか外なのかが決まってないと 区間A:1 4 区間B:4 6 のとき重なっていると見なすかどうかが決められない。 区間A:1 1 区間B:1 6 も同様。両端の値は区間の中なの?外なの?
220 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:38:07 ] >>219 >>212 だとどちらも重なるだろ
221 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:41:38 ] >>218 x1,x2とx3,x4をそれぞれ小さい順に並べ替える if ((x3 < x1 && x1 < x4 || x3 < x2 && x2 < x4) || (x1 < x3 && x3 < x2 || x1 < x4 && x4 < x2)) { 重なっている }
222 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:46:00 ] >>218 先に大小みて入れ替えるほうが簡潔でわかりやすいと思うが if(x1 > x2) { int temp = x1; x1 = x2; x2 = temp;} if(x3 > x4) { int temp = x3; x3 = x4; x4 = temp;} if(x1 < x4 && x2 > x3) cout << "重なる"; else cout << "重ならない";
223 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:51:40 ] >>219 あ、言葉足らずでごめんなさい、端が点と点で重なってる場合も重なってるとみなされます >>221 おお、なるほど それだとif文も一つで済んでいいですね! 参考になりました、ありがとうございます!
224 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:56:53 ] >>222 ごめんなさい、まだ授業でtempを習ってないもので… でも後学のためになりました、ありがとうございます
225 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:56:56 ] すべての数が不一致であることを前提とする。4つの数で 最大の元が属する区画名をA,最小の元が属する区画名をBとする。 A=Bの時は重なる A<>Bの場合、区画Aで4数最大のものでないものをy 区画Bの元で4数最小でないものをzとする。 重なるのはy<zの場合のみ 上のことをコーディングすれば良いんぢゃ? (変数は常に値渡しされるとは限らないから関数内で 勝手に変更することはC++では許されない。念の為)
226 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:01:01 ] >>220 >>211 数値の型がわかんなかったのでテンプレで。数値の入力部分は好きにどうぞ。 #include <iostream> template <class T> class Range { public: Range() {} Range(const T& v0, const T& v1) { create(v0, v1); } Range(const Range<T>& s) { *this = s; } virtual ~Range() {} const Range<T>& operator=(const Range<T>& s) { min_ = s.min_; max_ = s.max_; return *this; } void create(const T& v0, const T& v1) { if(v0 < v1) { min_ = v0; max_ = v1; } else { min_ = v1; max_ = v0; } } bool isIntersect(const Range<T>& s) const { if(min_ <= s.min_) { return max_ >= s.min_; // 接するのも交わりと見なす //return max_ > s.min_; // 接するものは交わりとは見なさない } else { return s.isIntersect(*this); } } private: T min_; T max_; }; int main() { Range<int> r0(2,5); Range<int> r1(1,3); if(r0.isIntersect(r1)) { cout << "重なる" << endl; } else { cout << "重ならない" << endl; } }
227 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:04:34 ] 沢山のアドバイスありがとうございました! 色々と参考になりました お陰様でいっぱしの形になって提出できそうです これからも精進します(`・ω・´)
228 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:07:15 ] >>221 >>222 うっ、if文のみ使用って、判定にswitchとかを使うなという意味じゃないのか・・・ ごめん。
229 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:09:15 ] >>212 == >>216 で合ってる。医女
230 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:18:47 ] >>201 min_index() を使ってない my_strcmp() の使い方が分からなかったので strcmp() と同じだと仮定 課題1 void my_sort_strings(char **p,int n) { int i, j; for(i=0;i<n;i++) { for(j=0;j+1<n-i;j++) { if(*p[j]>*p[j+1]) swap_strings(p, j, j+1); } } } 課題2 void lexicograhic_sort(char **p,int n) { int i, j; for(i=0;i<n;i++) { for(j=0;j+1<n-i;j++) { if(my_strcmp(p[j], p[j+1])>0) swap_strings(p, j, j+1); } } }
231 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:09:02 ] 自由課題:可憐な カレン ダーを作ってくれ
232 名前:デフォルトの名無しさん mailto:age [2009/05/25(月) 01:12:14 ] 【質問テンプレ】 [1] テキストファイル [2]Write a program to parse words onto separate lines; that is, locate and write each word to its own line.(課題文は英文で与えられている) [3] 環境 [3.1] OSWindows [3.2]VisualC++ [3.3] 言語:C [4] 期限: (2009年5月26日9:30) [5] 制限はなし
233 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:26:18 ] >>232 合ってるかどうか分からんけど #include<stdio.h> int main(void){ char buf[100+1]; while(scanf("%100s", buf)==1){ puts(buf); } return 0; }
234 名前:デフォルトの名無しさん mailto:age [2009/05/25(月) 01:42:40 ] >>232 に追加 テキストファイルを作成する必要がある。
235 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:56:36 ] 1111 aaaa ddd dddd-dfgg ddddd 9999. 2222 dddd ggg, gggg 444- 444 sss ddddd ccc - ddd rrrr345 333 444. >>232 #include <stdio.h> int main(){ int c, cr = 1, minus = 0; while( (c = getchar()) != EOF ){ if(c == ' ' || c == '\t') { if(minus == 1) ; /* minus_space_return */ else if(cr != 0) putchar('\n'); /* space_minus_return */ cr = 0; } else if(c == '\n') { if(minus == 1) ; /* minus_return */ else if(cr != 0) putchar('\n'); cr = 0; minus = 0; } else if(c == ',' || c == '.') { if(minus == 1) putchar('-'); if(cr != 0) putchar('\n'); cr = 0; minus = 0; } else if(c == '-') { minus = 1; } else { if(minus == 1) putchar('-'); /* minus_not return */ putchar(c); cr = 1; minus = 0; } } }
236 名前:デフォルトの名無しさん [2009/05/25(月) 13:12:58 ] [1]数理物理 [2]問題文: ルジャンドル多項式のゼロ点(Pn(x)=0を満たすx)を求めたい。 @ n=4 の時 (解析解あり。) A n=10の時 (解析解なし。) の2つの場合についてニュートン法または2分法を用いて求めよ。 ttp://www.mns.kyutech.ac.jp/~kamada/suuributuri/sub2.html [3]OS:Linux/コンパイラ:わかんね/言語C [4]5/26まで お願いします。
237 名前:194 mailto:sage [2009/05/25(月) 17:15:46 ] 資源を使いすぎた者ですが、num_putファセットどなたか分かる方いませんか? ぐぐっても日本語の文献がほとんどヒットしません。英語のは見つかりますがどれも例がめちゃ難しいのしかないです 問題の意味は、このファセットを使って230764530を出力すると1000単位でコンマをつけて出力するようにしろとのことです なので「230,764,530」になるといいです よろしこおねがいします
238 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 17:53:00 ] std::locale locale_; OutIt outit; std::ios_base& format = ; std::num_put<charT, OutIt>& hoge = std::use_faset<std::num_put<charT, OutIt>(locale_); hoge.put(outit, format, char, value); こんな感じで後は自分で設定すればいいよ
239 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:23:52 ] >>237 MSDNに載ってるじゃないか。英語だけど、丸写しでもうごいたぞ?? #include <iostream> //ttp://msdn.microsoft.com/ja-jp/library/31fhezza.aspx //230764530 int main(){ long Val = 230764530; std::locale Loc("japanese"); std::cout.imbue(Loc); std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); return 0; }
240 名前:194 mailto:sage [2009/05/25(月) 18:33:33 ] >>239 すみません エラー: ‘_Iter’は‘std::basic_ostream<char, std::char_traits<char> >’のメンバではありませんという コンパイルエラーになるのですが何かわかりますでしょうか
241 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:53:40 ] >>240 _Iterはイテレータをtypedefしたものだと思うのだが、最初にアンダースコアが入ってるからベンダ定数かもしれん。 俺の使ってるコンパイラはVC9EE(VC2008)なんだが、おまいさんはなにをつかってるんだい? うちではちゃんと通るし230,764,530とでる。 で、ちょっと改変してみた。これで動かなかったら俺の範疇外だ。 #include <iostream> //ttp://msdn.microsoft.com/ja-jp/library/31fhezza.aspx //230764530 int main(){ long Val = 230764530; std::locale Loc("japanese"); //std::locale::global(std::locale("japanese")); std::cout.imbue(Loc); //std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); std::use_facet<std::num_put<char>>(Loc).put(std::ostreambuf_iterator<char>(std::cout.rdbuf()),std::cout,' ',Val); return 0; }
242 名前:194 mailto:sage [2009/05/25(月) 19:13:16 ] >>241 大変失礼しました。 最初にVisualStudioを使っていますと書いておきながらg++でコンパイルしていました。 上記のコードも試したのですが terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Abort trap というエラーになりました。しかし、VC++2008で試したところ問題なく動いたので、これで十分です。 ありがとうございました。
243 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:27:47 ] [1] 授業単元: 上級者のためのC++ [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9234.txt [3] 環境 [3.1] OS: ウィンドウズXP [3.2] コンパイラ名とバージョン: VisualC++2008 [3.3] 言語: C++ [4] 期限: 2009年5月28日朝まで [5] その他の制限: 難しいですが何卒よろしくおねがいします
244 名前:デフォルトの名無しさん [2009/05/25(月) 20:05:55 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9235.txt [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: 5月27日12:00 [5] その他の制限: 是非、よろしくお願いします
245 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:22:06 ] >>243 1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9236.txt
246 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:32:18 ] >>243 2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9237.txt
247 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:21:23 ] >>244 (1) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9239.txt (2) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9240.txt
248 名前:デフォルトの名無しさん [2009/05/25(月) 21:21:24 ] [1] 授業単元:情報処理 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9238.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C/C++ [4] 期限: 明日5月26日 23:30まで [5] その他の制限: 特にありません。 問題数が多いです。 お手数ですがどうかよろしくお願いいたします。
249 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:36:12 ] またフィボナッチ…
250 名前:デフォルトの名無しさん [2009/05/25(月) 22:21:20 ] >>247 さん、ありがとうございます。 ただ、(2)のプログラムの #include <iterator> #include <algorithm> という2つのインクルードを初めてみました。これはどういう場合に使うのでしょうか? やはりこれを使わないとプログラムは難しくなってしまうんですか?
251 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:23:31 ] ぐぐれ
252 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:26:41 ] >>250 ソート処理をstd::sort、出力をstd::ostream_iteratorに丸投げしているため。 これらを見たことないとなるとソートは自分で書きなさいってことなのかね