1 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:08:18 ] あなたが解けない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++の宿題片付けます 130代目 pc12.2ch.net/test/read.cgi/tech/1250204272/
321 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 13:54:52 ] [1] 授業単元:C++ [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10006.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10007.txt [3] 環境 [3.1] OS:Windows [3.3] 言語:C++ [4] 期限: 2009年10月30日 私なりに考えてみましたがわかりませんでした。 どなたかお解りになる方がいましたら宜しくお願い致します。
322 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:09:43 ] >321 ポインタがわかっていないようですね。その点は要復習。 第3、第4引数がポインタ渡しか参照渡しか、曖昧ですが、 一応参照渡しでやってみた。 doubleの余りとか適当。 void div(int op1, int op2, int& sho, int& amari) { sho = op1 / op2; amari = op1 % op2; } void div(double op1, double op2, double& sho, double& amari) { sho = int(op1 / op2); amari = op1 - sho * op2; }
323 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:10:12 ] インラインアセンブラでidivとか言ったら怒られるだろうか。
324 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:22:58 ] >>254 codepad.org/kbfG5GKd プログラムの最初に想定しているファイル形式と出力を書いておきます。
325 名前:324 mailto:sage [2009/10/25(日) 21:26:09 ] 書き直しました。 codepad.org/Yi4G9x0S
326 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:39:30 ] [1] 授業単元:C言語とアルゴリズム [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10008.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:明日まで よろしくおねがいします!!
327 名前:デフォルトの名無しさん [2009/10/25(日) 21:53:33 ] [1] 授業単元: C言語プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10009.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009年10月28日 16:00まで
328 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:57:20 ] >>326 問題1−2 #include<stdio.h> char *ul2a(char buf[40], unsigned long value){ int i; char *p; for(i=31,p=buf;i>=0;i--){ *p++=((value>>i)&1)+'0'; if(i%4==0) *p++=' '; } *--p='\0'; return buf; } int main(int argc, char *argv[]){ char buf[40]; unsigned long x=0, y=0; printf("符号なし32bit整数2つを入力してください.\n"); scanf("%lu %lu", &x, &y); printf("%lu は2進表示で %s ,\n", x, ul2a(buf, x)); printf("%lu は2進表示で %s です.\n", y, ul2a(buf, y)); printf("~%lu は2進表示で %s ,\n", x, ul2a(buf, ~x)); printf("~%lu は2進表示で %s です.\n", y, ul2a(buf, ~y)); printf("%lu << 1は2進表示で %s ,\n", x, ul2a(buf, x<<1)); printf("%lu >> 1は2進表示で %s です.\n", y, ul2a(buf, y>>1 )); printf("%lu & %lu は2進表示で %s です.\n", x, y, ul2a(buf, x&y)); printf("%lu | %lu は2進表示で %s です.\n", x, y, ul2a(buf, x|y)); printf("%lu ^ %lu は2進表示で %s です.\n", x, y, ul2a(buf, x^y)); return 0; }
329 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:23:33 ] >>326 問題1: codepad.org/f8POt06D 問題2: codepad.org/IObqxmMY
330 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:41:19 ] >>326 です >>328 、329さんありがとうございます。 問題1−1なんですが>>328 さんの問題1−2のようにもう少し簡単になりませんか?
331 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:43:38 ] すげー煽りだw
332 名前:329 mailto:sage [2009/10/25(日) 22:51:03 ] >>330 >>328 ではポインタを使っていますが、>>329 ではポインタを使わず、算術演算(割り算と余り演算子)で処理しています。 あるいは、わかりやすいように配列にいったん結果をいれるようにしています。4桁ごとのくぎりも普通にかいています。 >>329 も簡単だと思いますが( >>328 を否定しているわけではありません)、やっぱり短く書いたほうがわかりやすいでしょうか?
333 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:37:00 ] [1] 授業単元: [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10010.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10012.zip [3] 環境 [3.1] OS: Windows? [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: (2009年10月30日17;50まで うまく実行できません。おねがいいたします。
334 名前: ◆pGt6/pVDLk mailto:sage [2009/10/25(日) 23:40:45 ]
335 名前:333 ◆F8HqQ.0zX2 mailto:sage [2009/10/25(日) 23:43:07 ] 見にくいですが、宜しくおねがいします。
336 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:03:32 ] >327 気が向いただけ、ただ気が向いただけ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10013.zip s/foo.zip/foo.tar.gz/
337 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:40:51 ] これ作ったら神。 PS postscriptのテキスト抽出するやつ。日本語対応版。 フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増える。
338 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:47:46 ] ちょっとした質問なんですが、 123 この数列を配列に 321 と、格納するにはどうすれば良いですか?
339 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:54:04 ] a[0]=1,a[1]=2,a[2]=3; tmp=a[0],a[0]=a[2],a[2]=tmp; //swap(a,b) a[2]=1,a[1]=2,a[0]=3; ちょっと横道に
340 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 00:55:46 ] >>339 説明不足でした scanfから数字を入力して、 その数字を>>338 みたいにするにはどうすれば良いですか?
341 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:09:21 ] 後ろから順に前に入れていけばいい。
342 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:11:38 ] そのやり方がよく・・・
343 名前:デフォルトの名無しさん [2009/10/26(月) 01:25:30 ] [1] 授業単元: C言語演習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10014.txt [3] 環境 [3.1] OS: (Windows/Linux) [3.2] gcc 3.4 [3.3] 言語: C お願いしますm(_ _)m
344 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:27:01 ] 意味がよくわからんけどこういうことかな int a[3]; int i; for (i = 0; i < 3; i++) scanf("%d", &a[2-i]);
345 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:27:58 ] >>344 は>>340 へのレスね
346 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 01:38:59 ] >>345 123 って入力したときに、 配列に _____ |3|2|1| ーーーーー って格納させる方法です・・・ 国語力無くて申し訳ない
347 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:31:10 ] >>346 #include <stdio.h> int main(void){ int i; int x; int a[3]; scanf("%d",&x); for(i=0;i<3;i++){ a[i] = x%10; x /= 10; } for(i=0;i<3;i++) printf("a[%d] = %d\n",i,a[i]); return 0; }
348 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:44:17 ] なるほど。数字のみなら>>347 もありか。 文字もokな一般的なものを考えてみたのが↓。 >>346 #include <stdio.h> int main(void){ int pt1 = 0 , pt2 = 0; char s[101] = "", tmp; printf("input : "); scanf("%s", s); while(s[pt2 + 1]!='\0'){ pt2++; } while(pt1 < pt2){ tmp = s[pt1]; s[pt1] = s[pt2]; s[pt2] = tmp; pt1++; pt2--; } printf("output : %s\n", s); return 0; }
349 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:46:11 ] >343 一応作ったけど、凝り始めると終わらない
350 名前:333 mailto:sage [2009/10/26(月) 09:42:08 ] [1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10010.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10015.zip [3] 環境 [3.1] OS: Windows? [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009年10月30日17;50まで すいません。少し補足させていただきますm(。._.)m
351 名前:デフォルトの名無しさん [2009/10/26(月) 12:50:45 ] >>304 ps2textというのがある。 www.asahi-net.or.jp/~yw3t-trns/namazu/windows/ps2text/
352 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:27:19 ] >>351 それは、ゴーストスクリプトという専用ツールを呼び出すだけ。 遅いし、確実には抽出できなかったよ。 動作環境: PerlActivePerl ghostscript日本語ghostscript, (ghostscript 8.11 以降推奨)
353 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:04:58 ] postscriptのフォーマット概要がここに書いてあるけど、これだけでは抽出できないみたい。 バージョンが1〜4.2くらいてまであって、それぞれに対応しないと駄目みたい。 www.bunmeisha.co.jp/LaTeX2e/pskihonF.html こっちは開発元資料へのリンクあり fontforge.sourceforge.net/ja/bibliography.html
354 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:40:10 ] >>350 問題の前半が省かれてるっぽいのでよくわからんが、 set_mapがコメントの内容とあってない。 コメントが正しいなら //マップ内なら数値を代入 void set_map(int n, int x, int y, double v) { if (x >= 0 && X > x && y >= 0 && Y > y) { map_q[n][y][x] = v; } } upされたやつだとy=-1とかでもmap_qに値をセットしてたから それでsegmentaition fautになってる あと mainの中でcountの初期化がされてない
355 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:11:19 ] [1] 授業単元:C言語とアルゴリズム [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10016.txt [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:早めに。。 よろしくお願いします!
356 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:31:21 ] >>355 @ #include <stdio.h> #include <ctype.h> int main(void) { int l = 0, u = 0, d = 0; char str[256], *p; printf("文字列を入力して下さい.\n"); scanf("%s", str); for(p=str; *p; p++) { if(islower(*p)) l++; else if(isupper(*p)) u++; else if(isdigit(*p)) d++; } printf("入力文字列は %s で\n", str); printf("小文字は%d文字,大文字は%d文字,数字は%d文字です.\n", l, u, d); return 0; }
357 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:38:43 ] >>355 A #include <stdio.h> #include <string.h> #include <ctype.h> int main(void) { char surname[21], firstname[21], fullname[41], *p; printf("姓を入力して下さい.\n"); scanf("%s", surname); printf("名を入力して下さい.\n"); scanf("%s", firstname); strcpy(fullname, surname); strcat(fullname, firstname); printf("入力した氏名は%sです.\n", fullname); for(p=fullname; *p; p++) { if(islower(*p)) *p += ('A' - 'a'); else if(isupper(*p)) *p += ('a' - 'A'); } printf("小文字と大文字の交換後の文字列は%sです.\n", fullname); return 0; }
358 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:10:17 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): (1)ライプニッツの公式を用いて円周率の近似値を求める時、その値が3.14から3.15の間になるまで nを増やしていき、そのnの値(繰り返し回数)を求めるプログラムを作成せよ。 (2)ライプニッツの公式を用いて円周率の近似値を以下の条件で求めよ。 nの値が増えるにつれ、それまでの近似値の平均値を求め、近似値と平均値の差が平均値の1%におさまるまで繰り返す。 (最初にfor文を使って計算を繰り返すたびに平均値も出力するプログラムを作成する。 そしてforをwhileに置き換えたプログラムを作成する。そのときdo()whileを使え。) [3] 環境 [3.1] OS: WindowsVista [3.2] コンパイラ gcc [3.3] 言語: C [4] 期限: 09年10月28日20:00まで [5] その他の制限: (1)に関してはif elseを使った文。(2)に関しては問題文通りです。 大学の授業ですが、全くならってない範囲を出題されました… お願いします。
359 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:20:30 ] 単純なループだから習ってないとは思えない。 応用がきかないのか数学的知識がないだけかググることすらできないのか。
360 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:43:24 ] >>358 (1) #include <stdio.h> int main(void) { int n; double d = 0; for(n=0; d < 3.14 || 3.15 < d; n++) { if(n & 1) d -= 4.0 / (n * 2 + 1); else d += 4.0 / (n * 2 + 1); } printf("%d回", n); return 0; }
361 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:52:15 ] [1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10010.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10017.zip [3] 環境 [3.1] OS: Windows? [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009年10月30日17;50まで 何度も何度も申し訳ないです。 自分の分からないところだけ載せてました。 それだけでは分かりづらいですね。 (B)が分かりませんお願いします。
362 名前:デフォルトの名無しさん [2009/10/26(月) 17:57:57 ] >>349 ありがとうございます。 動けば十分ですので、貼ってもらえると嬉しいですm(_ _)m
363 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 18:02:14 ] >362 O(N^2)だから遅すぎて、お兄たん泣きたくなった、プロファイルかけたらqsort()の300倍の遅さ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10018.c
364 名前:デフォルトの名無しさん [2009/10/26(月) 18:09:16 ] >>363 ありがとうございます!今から解読して勉強します。。
365 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 18:36:31 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10019.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++ [3.3] 言語:C++ [4] 期限:2009年10月27日 昼12時 [5] その他の制限: すみませんが宜しくお願い致します。
366 名前:333 ◆F8HqQ.0zX2 mailto:sage [2009/10/26(月) 19:51:00 ] >>354 ありがとうございます。 実行して出力はできるようになりましたが、 100試行ごとの出力ができません。 ご教授をい願いします。
367 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 21:24:57 ] >>365 #include <stdio.h> double f(double x) { return 3 * x * x; } #define N 1000 int main() { int i; double sum = 0.0; for (i = 0; i < N; i++) sum += 1.0 / N * f((double)i / N); printf("S = %lf\n", sum); return 0; } /* end */
368 名前:333 ◆F8HqQ.0zX2 mailto:sage [2009/10/26(月) 21:45:12 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10020.txt ここまでできました。 実行して出力したときに、 countを1000にするとうまく表示されるのですが、 countを100にしたときに、どうして壁を突き破るのか教えてください。 また、100にしても壁を突き破らない方法を教えてください。
369 名前:デフォルトの名無しさん [2009/10/26(月) 21:54:15 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10021.txt [3.1] OS:Windows vista [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008 [3.3] 言語:C [4] 期限:2009年10月28日 [5] その他の制限:特に無いです。 よろしくお願いします。
370 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 21:58:38 ] >>347->>348 ありがとうございました!!!!!!
371 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:37:06 ] 1] 授業単元:プログラミング [2] 問題文(含コード&リンク):ニュートン法を用いて三次方程式の解を求める。 [3] 環境 [3.1] OS: Windows vista [3.2] コンパイラ名とバージョン: Visual Studio 2008 [3.3] 言語: C++ [4] 期限: 2009/10/28 [5] その他の制限: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10022.txt どこが悪いのかわかりません…。 ググりましたが自分の考えたアルゴリズムを尊重したいので、参考になりませんでした。
372 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:47:56 ] >>371 なんでa,b,c,d,x1,y1を整数にするの?浮動小数点数でいいじゃん
373 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:53:11 ] >>371 ニュートン法はお前の考えたアルゴリズムじゃねえだろw
374 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:00:51 ] ワシが育てた
375 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 00:32:40 ] >>359 すいませんが、教えてもらってないので何とも言えません(´・ω・`) >>360 ありがとうございます。助かりました。 (2)に関しては教授にきいてみます
376 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 02:38:37 ] >>358 ,375 #include <stdio.h> #include <math.h> int main(void){ int n; double d = 0, sum = 3; for(n = 0; (sum / n - d) > 0.01; n++) { if(n & 1) d -= 4.0 / (n * 2 + 1); else d += 4.0 / (n * 2 + 1); sum += d; printf("%d 回目 , 平均 = %f\n",n,sum/n); } return 0; }
377 名前:デフォルトの名無しさん [2009/10/27(火) 02:39:56 ] [1] 授業単元:数値計算演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10023.c 上のソースコードのうち、行列計算を行うmatmul_blockが正しい結果を返しません どこが間違っているのかご指摘お願いします [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2009年10月27日19時まで
378 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:36:11 ] >>371 アルゴリズムはあっていると思います。 >>372 の指摘のとおり、 a, b, c, x1, y1 を double にするとうまくいきます。 じゃあ、なにがまちがっているかというと、私にもわかんないんですが。
379 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:40:18 ] 多次元配列はCではあまり使わないほうが良い。 ポインタと相性が合わないから
380 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:17:00 ] >>377 68行目の第3引数cでとりあえず普通に警告@VC2008
381 名前:デフォルトの名無しさん [2009/10/27(火) 09:37:03 ] >>379-380 計算に与えられる行列はこのような配列で表せということだったんで・・・ デバッガで追いかけてみても、matmul_cacheのcは想定された動きしてるんで問題はないんじゃないかと思うんですが
382 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 11:19:07 ] いったん別の言語で書き直してみると良いかも (GPCとかFPCとか)
383 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 12:18:21 ] 三角形と四角形がぶつかったときの当たり判定をとりたいのですがどうすればよいでしょうか
384 名前:デフォルトの名無しさん [2009/10/27(火) 12:34:38 ] PostScriptをPDFに変換してからテキスト抽出すればいいと思うけど。
385 名前:デフォルトの名無しさん [2009/10/27(火) 12:37:29 ] >>383 BeginPath(hdc); Polyline(hdc, ..., 3); EndPath(hdc); hRgn1 = PathToRegion(hdc); BeginPath(hdc); Polyline(hdc, ..., 4); EndPath(hdc); hRgn2 = PathToRegion(hdc); hRgn = CreateRectRgn(0, 0, 0, 0); if (CombineRgn(hRgn, hRgn1, hRgn2, RGN_AND) == NULLREGION) { ... } else { ... }
386 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 12:43:19 ] >>385 せっかく書いていただいたのにすみません 全て計算で求めなくてはいけないので関数は使用できないんです…
387 名前:デフォルトの名無しさん [2009/10/27(火) 13:10:14 ] >>386 後出しじゃ判らんだろ。 前提として得られる情報がどれだけ有るか(x,y座標など)、を書くべし。
388 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 13:57:34 ] 詳細に書くと内外判定で三角形の中に四角形が入っているか(触れている場合も“入っている”と認識)どうかを検査したいのです XY座標は毎回変動します。関数は使わずに計算のみで求めなくてはならないので困っています
389 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 14:43:41 ] >>388 四角形の頂点が全て、三角形の内側にある事。 三角形の内側にある <--- 三辺をベクトルとみなして、各ベクトルから見て同じ側にある事。
390 名前:デフォルトの名無しさん [2009/10/27(火) 14:44:44 ] 四角形の辺と三角形の辺と交わっているか、 四角形の内部に三角形があるか、 三角形の内部に四角形があるかのどれかだろう。
391 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 14:54:35 ] >>390 三角形と四角形とが、互いに離れている場合もあり得る。
392 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:18:06 ] >>367 ありがとうございました!助かりました。
393 名前:デフォルトの名無しさん [2009/10/27(火) 15:20:18 ] 線分の当たり判定 totoki.my.land.to/pgm/001.html 三角形、多角形による包含判定 www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Hougan.htm
394 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:21:48 ] >>389 完全に三角形のなかに含まれている場合はそれで良いのですが一部分でも触れている場合値を返すようにしたいのです 四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます
395 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:24:23 ] 繰り返しますが、関数は使わずに計算のみで求めなくてはならないので困っています
396 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:28:40 ] [1] 授業単元:卒業研究 [2] 問題文(含コード&リンク):白黒濃淡画像[0-255]をカラー画像に変換 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:cygwin [3.3] 言語:C [4] 期限: ([2010年1月10日24:00まで]) [5]その他の制限: ・色をユーザーから指定することはできない。 ・画像はできればppm形式 様々な本や書類に目を通し、ネットを用いて一通り調べたつもりですが、一向に見つかりません。 難題だとは思います。最低限情報のある場所だけでも教えてもらえれば幸いです。 どうか御願い致します。
397 名前:デフォルトの名無しさん [2009/10/27(火) 15:29:06 ] >>395 自分で作った関数もダメですか?
398 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 15:34:08 ] >>397 それは大丈夫です
399 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:06:23 ] 入力ファイルからデータを読み込みロジック部分を関数化し、 qsort関数以外を使用して番号順にソートしたいのですが何かいい方法を教えてください。 読み込んだデータの例) F016 C002 C002 C015 H001 F016 C015 H001 H009 H009 左のデータをソートし、右のように並び替えたいです。
400 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:09:04 ] sort関数
401 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:43:57 ] >396 通常は原理的に不可能です。 なぜなら、カラー画像は一般的に3つの独立したベクトルが張る色空間で表現されます。 ここで、色空間をRGB、濃淡をGrayとすると、明らかにベクトルが足りないので、色空間を変換できません。 よって、GrayからRGBへの色空間の変更ができないので、濃淡画像をカラー画像に変換することは*通常*できないことが示された。 疑似カラー画像に変換したり、ユーザか適当に色を配置してそれを元にカラー画像にすることは既に研究されています。 グレースケール画像に色差情報をこっそり埋め込んだり埋め込まなかったりって、最近僕が研究したんだけど。
402 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 16:51:38 ] >>399 すきなソートアルゴリズムを関数化すればいいだけじゃね?
403 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 17:25:05 ] >>394 > 四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます 四角形の頂点が全て内側or三角形の辺上、という前提で、↑ってどんな状況だろう? まさか3次元以上? あと、課題だったらテンプレに沿って、課題文をそのまま載せて欲しいんだが。
404 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:03:04 ] 3角形の中に四角形の点が1つ以上あれば、でよくね
405 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:04:09 ] ああだめか。 結局交点も必要か
406 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:54:32 ] 何気に難しいな
407 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:02:32 ] 四角形のいずれの頂点も三角形の外側にあり、かつ、交点がない 以外は全部触れてるんじゃないの
408 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:23:11 ] 四角形に4点だけで判定すると三角形の先っちょが刺さってる状態だと触れていると判定されないんだな
409 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 19:44:18 ] 完全に数学の話題也 三角形の一点が原点になるように平行移動 三角形の原点を含む一辺がx軸になるように回転変換 原点を含みx軸と一致しない辺のy軸へ正射影 原点を含む2つの辺の長さが一致するように、y軸方向もしくは x軸方向へのスカラー変換 これを行い三角形を直角二等辺三角形に変換して考える。 四角形に対しても同じ操作を行う。(四角形は四角形に移る) 交点を持つ条件は四角形の2つの頂点を結ぶ6個の直線が x軸、y軸、直線x+y=1と交わる点の座標の値でわかる。
410 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:05:23 ] >>409 よくわからないが、それは速いのか?
411 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:07:42 ] >>410 とりあえず、見るからに誤差が大きそう
412 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:30:49 ] こういう話は数学に詳しくないと難しいな
413 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:33:16 ] 離散数学しかやってないからな…
414 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 20:48:33 ] >>401 >>396 です 丁寧にお答えいただきありがとうございます。 ユーザーから色は指定できないので、とりあえず疑似カラーについて調べてみたのですが、いまいちよくわかりませんでした。 何か参考になる文献やサイトがあれば教えていただきたいです。
415 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:27:07 ] >414 ・疑似カラー化について 0710g36やnakatani1.pdfをクエリにして検索する ・ユーザ指定色について colorization-siggraph04をクエリにして検索する ・色差情報の埋め込みについて 色差情報 埋めこみ カラー 復元をクエリにして検索する ちなみに僕がやったのは、3つ目の色差情報を埋め込む方法ね あとは自分で適当な単語を選べば見付かると思う、CiNiiとかでね
416 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:32:17 ] >>407 ,408 >>389 では「四角形の頂点が全て、三角形の内側にある事」が判定条件。
417 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:44:29 ] >>416 意図が見えん。
418 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 21:47:28 ] >>415 わざわざURLまで貼っていただきありがとうございます。 明日URLを参考にしてプログラムを作ってみたいと思います。
419 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 22:56:02 ] >>383 イメージはこれでOK? ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10024.zip
420 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:06:39 ] >>408 これで、どうだろ。 三角形の頂点が全て、四角形の外にある。 and 四角形の頂点が全て、三角形の外にある。
421 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:20:56 ] >>419 左側のNGをOKにしたらイメージ通りです