- 1 名前:デフォルトの名無しさん [2008/04/29(火) 09:44:57 ]
- 言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 26 pc11.2ch.net/test/read.cgi/tech/1206196600/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 105代目 pc11.2ch.net/test/read.cgi/tech/1208268461/
- 620 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:58:13 ]
- 数学板でも思ったんだが、前の質問に答えてもらってるのに、
それに何の反応もせずに「質問を変えます」はないだろ。社会常識的な意味で。
- 621 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:59:29 ]
- >>620
すみません・・・
- 622 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:00:11 ]
- 整数の 0〜(n-1) の乱数を発生させて
double にキャストして n で割ればいいんじゃない
- 623 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:02:03 ]
- >>622
レスありがとうございます a=rand()/(RAND_MAX+1.0); としてもいいのですが>>618さんの方法で書くことはできませんか?
- 624 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:04:35 ]
- a[i+1]=a[i]*j%10000;
b[i+1]=a[i+1]/(10000.0);
- 625 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:32:58 ]
- >>624 ありがとうございます
一応書いてみたのですがエラーが出てしまいます どこがおかしいですか?ちなみに円周率を求めるプログラムです #include <stdio.h> int main(void) { double i,max; double x,y,pi; int a[1000],j; double b; double c=0,d=0; max=100; a[0]=9454; j=9456; for(i=0;i<=max;i++) { a[i+1]=a[i]*j%10000;/*ここでエラーが出ます。*/ b[i+1]=a[i+1]/(10000.0); if((b[i+1]*b[i+1]+b[i]*b[i])<=1.0) { c+=1.0; } else{ d+=1; } } pi=4*c/(c+d); printf("%f\n",pi); return 0; }
- 626 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:36:24 ]
- 数字を渡したら曜日を表示する関数を作ったのですが、関数内に
char youbi[7][] = {"日曜日", "月曜日",....} と書きました。 これだと関数が呼ばれるたびに変数を作って文字列を入れてることになりますよね? 頻繁に呼ぶ関数にこういうことすると速度などに悪い影響ありますか?
- 627 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:36:32 ]
- double i
- 628 名前:626 mailto:sage [2008/05/12(月) 01:37:21 ]
- すみません訂正します。
char youbi[][7] です。
- 629 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:38:28 ]
- >625
iをintで宣言すること。 >626 ある場合もあるし、無い場合もあるが、大抵の場合気にするほどの差ではない。
- 630 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:38:30 ]
- &はアンパサンドだけど
|はなんていうんだっけ? なかなか検索ひっかからないんだよね
- 631 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:39:40 ]
- >>627
そうですね・・・すみません でも、 配列または、ポインタでない変数に添字が使われました。とエラーがでます・・・ どこを直せばよいですか?
- 632 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:39:53 ]
- パイプ
- 633 名前:626 mailto:sage [2008/05/12(月) 01:41:06 ]
- >>629
ありがとうございます 気にしないことにします
- 634 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:41:24 ]
- >>631
そこまでエラーメッセージ読んでてわからないほうがどうかしてる
- 635 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:42:22 ]
- >>631
それくらいコンパイラが懇切丁寧に教えてくれてるだろうに無視すんなよ 頼むからエラーをこぴぺしてくれ
- 636 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:42:39 ]
- >631
配列でもポインタでもないものに添え字が使われたから。あとは行番号を見ること。 念のために言っておくが添え字とは[?]の部分のこと。
- 637 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:43:07 ]
- >631
double b;
- 638 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:44:55 ]
- せめてエラーメッセージの意味を考えることくらいはしてほしいよまったく
ただのcharの配列にしか過ぎないのかっての
- 639 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:45:36 ]
- >>634
あ、bを配列で宣言するのを忘れてました・・・ ありがとうございます やっぱりプログラムは苦手だなあ 数学板の回答者に戻ります
- 640 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 01:46:40 ]
- オーバーフロー・・・
- 641 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 02:46:41 ]
- 数学板ってあんなんでも回答側になれんの?
- 642 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 05:18:50 ]
- わざわざ自称している時点で…
- 643 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 06:01:05 ]
- ↓聖徳太子知ってる?知らない?
- 644 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 06:28:38 ]
- 乗算合同法や線形合同法の利点ってメモリ使わないことなのに、
配列に保存してどうすんだよw
- 645 名前:↑ mailto:sage [2008/05/12(月) 06:56:00 ]
- ttp://jp.youtube.com/watch?v=RIL28wqOQGA
- 646 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 07:36:33 ]
- >>626
staticを付けるといい。 ついでにconstも付けるとさらにいい。
- 647 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 07:49:12 ]
- >>612
%nの仕様は調べた? >>626 static const char * const youbi[] = {"sunday", "monday", ...}
- 648 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 09:15:06 ]
- リテラル参照はこっちのほうがいいかも?
char *youbi[7] = {"日曜日", "月曜日",....} 好みの問題ですかねぇ・・・
- 649 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 11:15:18 ]
- >>648
それだと毎回youbiを更新するコストが発生するし、constによる保護ができない。 ついでに言えば、態々7という定数を埋め込む意義が全くない。
- 650 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 12:37:55 ]
- 確かにスタックに積む場合にはその分の手間がかかるけど、staticのほうがデータ参照は遅くなるんじゃないかったっけ?
- 651 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 12:44:16 ]
- const だけつけとけばコンパイラが何とかしてくれそうな気がするんですがどうなんですか?
- 652 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 12:50:33 ]
- 抽象的な質問しないで、具体的に質問してくれ。
つーか、入門者がパフォーマンスを気にするな。
- 653 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 13:07:40 ]
- 曜日文字列を使うような関数が、パフォーマンス気にするほど頻繁に呼ばれてるとは思えないねぇ
そうだとしても実測してみなきゃわかんないしね
- 654 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 13:11:25 ]
- >>653
もし頻繁に呼んでるとしたら、いっそ廃止して その上の(おそらくループの本体がある)関数で文字列をautoに積んで インラインで処理させたほうが速いだろうね
- 655 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 13:19:00 ]
- >>629で終わった話をいつまでグダグダやってるんだ
- 656 名前:デフォルトの名無しさん [2008/05/12(月) 13:22:59 ]
- TEST.Cをコマンドプロンプトで指名してコンパイルする時、拡張子が.Cだとコンパイルできなくて.cだとコンパイルできたんだけど、.Cと.cって違うの?
- 657 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 13:26:35 ]
- >>656
少なくともそのコンパイラにとっては違うからコンパイルできなかったのだろう。
- 658 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:05:58 ]
- ファイル名の指定を間違ってたんじゃないの
ファイル名の大文字小文字を区別する環境としない環境があるから、それも書いてくれ
- 659 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:16:09 ]
- Sun辺りは.CはC++の拡張子だった希ガス。
- 660 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:24:22 ]
- 上の
static const char * const youbi[] って何でconst2つも付けるのかが分からないんですが static const char * youbi[] じゃあダメなんですか? あと、普通の変数でも static const int const とかやる必要はあるんですか?
- 661 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:30:52 ]
- static const char *youbi[]
youbiの先の文字列が書き換え不可能 static char * const youbi[] youbiが書き換え不可能 static const char * const youbi[] 両方
- 662 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:36:31 ]
- static const char *youbi[]
は "火曜日" って文字列を "火曜"
- 663 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:38:16 ]
- 途中で書いてしまった
static const char *youbi[] は "火曜日" って文字列を "火曜" に変えたりするのが不可能で static char * const youbi[] は youbi[1] に別の文字列のポインタを渡すのが不可能になる って事なんですか?
- 664 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:54:23 ]
- const char *youbi[] は
const char 型のポインタ(文字列定数)を入れる youbi配列で、新たに文字列定数のポインタを入れることは出来て、 char * const youbi[] は youbiの中のポインタ変数固定だから、文字列そのものは書き変えられてもポインタの指す先は変えられないって事なんですね やっと理解出来ました ありがとうございます
- 665 名前:デフォルトの名無しさん [2008/05/12(月) 16:40:42 ]
- #include<stdio.h>
double f(double x) { double y; y=(((3.1*x-1.8)*x+5.7)*x+1.0)*x-6.2; return (y); } main() { double x,y; int i; for(i=-20;i<=20;i++){ x=0.5*i; y=f(x); printf("x=%7.3f y=%12.3f\n",x,y); } } このプログラムのyの値の総和を計算するプログラムを作れ。 これをだれかお願いします。
- 666 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 16:42:08 ]
- >>665
わかりましたちょっとまっててください
- 667 名前:デフォルトの名無しさん [2008/05/12(月) 16:46:32 ]
- >>657 なるほど〜 コンパイラの仕様か〜
>>658 指定の仕方は大丈夫なはず コンパイラはMinGW これでいいのかな? >>659 Sunってコンパイラ名・・? コンパイラによって違うってこと?
- 668 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 16:55:13 ]
- 宿題丸投げは宿題スレへ
- 669 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:15:43 ]
- >>667
>>>659 Sunってコンパイラ名・・? コンパイラによって違うってこと? Javaを開発し、OpenOfficeを提供している世界最大級のコンピュータソフト・ハード兼業企業。 古くから、SunOSというUnix系のOSを作っている。
- 670 名前:デフォルトの名無しさん [2008/05/12(月) 17:55:41 ]
- あ〜 なるほど OSによって違うってことか〜
勉強になりました
- 671 名前:デフォルトの名無しさん [2008/05/12(月) 19:47:16 ]
- 配列に配列を足すことってできないの?
a += b; みたいな
- 672 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:58:27 ]
- Linux上では問題なく動作したのですが、
windows(BCC Developer)だと、ファイルをオープンする事ができなくなりました ファイルパスを絶対パスにしたりと、試行錯誤しましたが解決しません どうか、解決法をお願いします ソース void read_area(struct prefecture *are) { int i; FILE *fpa; if(( fpa = fopen("menseki.txt" , "rw")) == NULL) { printf("ファイルが見つかりませんでした\n"); exit(1); } for(i=0;i<47;i++) { fscanf(fpa,"%s %d",are->name,&are->area); are++; } } txtファイルは、Debugフォルダとその上のファルダに置いています
- 673 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:00:38 ]
- >>672
ソースファイルと同じ場所に置けばいけるはずだけど
- 674 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:01:55 ]
- exeと同じ場所
- 675 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:05:20 ]
- >>673
日本語読めますか? >>672 それが原因かどうかは判らんが、"rw"は間違い。 実装によってはファイルが空になってもおかしくない。 >>671 できません。配列の要素ごとの足し算ならループから書くことになります。 配列の連結と言うことなら、malloc(), realloc()を使うことになるのでその辺りを先ず勉強する必要あり。
- 676 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:06:59 ]
- >>671
それだけの日本語ではさっぱりですよ。 たぶんこういうこと? for ( int i = 0; i < SIZE; i++ ) { a[ i ] += b[ i ]; }
- 677 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:07:58 ]
- >>673-674
ファイルの置き場所に問題があるのかと思い、ソースがある場所を含め、 プログラムに関係ありそうなフォルダ全てに置いたのですが、解決しませんでした… これは、BCCの環境設定?を変更・追加する必要があるのでしょうか? >>675 Linuxで動いたのは運が良かったからかもしれません… 指摘していただいた点について、もう一度解決法を探してみます
- 678 名前:677 mailto:sage [2008/05/12(月) 20:16:39 ]
- "rw"を"r"にした所、正常に動作しました!
よく考えてみれば、書き込みする必要がないので、"w"は不要ですね… >>673-675 つまらない質問にも関わらず、素早い対応して頂き、 本当にありがとうございます
- 679 名前:デフォルトの名無しさん [2008/05/12(月) 20:27:05 ]
- >>676
そうだけど 構造体のときは不便だなって思った
- 680 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:28:31 ]
- そう思ったんならC++へ旅立ってしまえ
- 681 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:54:06 ]
- >>679
そんなのラッパー関数かいときゃ次からは楽じゃないか。
- 682 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:25:44 ]
- >>641
なれるよ 数学なんて実に簡単なことだ
- 683 名前:デフォルトの名無しさん [2008/05/12(月) 22:34:04 ]
- C言語勉強したいのですがフリーソフトはないんでしょうか?
- 684 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:34:47 ]
- >>683
ぐぐれ
- 685 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:39:47 ]
- >>683
マイクロソフトが無料で配布してるよ
- 686 名前:デフォルトの名無しさん [2008/05/12(月) 22:52:43 ]
- www.microsoft.com/japan/msdn/vstudio/express/default.aspx
これですか?どれをダウンロードすればいいんでしょうか
- 687 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:53:37 ]
- >>686
visualC++だ そしてとっととうせろ
- 688 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:54:42 ]
- >>686
登録とかめんどくさいからBCC使うといいよ 俺はvisual C++使ってるけど
- 689 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:01:50 ]
- BCC もメルアド登録必要じゃね?
- 690 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:02:36 ]
- デバッガは登録必要だったような気がするけど
コンパイラは要らなかったような…
- 691 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:03:17 ]
- >>689
いらない
- 692 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:06:20 ]
- あれ? メルアド変わるまでスパムのように来てたんだが。
- 693 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:12:22 ]
- VC++も登録いらんだろ
isoを落とせば
- 694 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:13:13 ]
- それめんどい
- 695 名前:デフォルトの名無しさん [2008/05/13(火) 08:04:28 ]
- C++のプログラム作ろうと思ったらVBの作成画面みたいなんですけど
単純にC言語のプログラムを作りたい時はどうしたらいいんですか?
- 696 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 08:08:04 ]
- >>695
お使いのソフトウェアのスレへどうぞ。
- 697 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 08:14:19 ]
- >>695
誤 C++のプログラム作ろうと思ったらVBの作成画面みたいなんですけど 正 VisualC++でC++プログラム作ろうと思ったらVBの作成画面みたいなんですけど Win32コンソールアプリケーションを選べ
- 698 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 08:19:27 ]
- >>697
それだとスレ違い。ここはCスレ。
- 699 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:56:55 ]
- 実行時に与えられる条件により異なる値で初期化して、
以後はconstに扱われるような変数を宣言することはできますか?
- 700 名前:699 mailto:sage [2008/05/13(火) 13:59:49 ]
- 追記 環境変数のような働きをするグローバル変数です
- 701 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:34:04 ]
- >>699
実装によっては可能かもしれないが、直接に行うことは一般的にはできない。 constな変数はそれが作成されたときに(関数の外で宣言される変数ならプログラムの開始時、あらゆる関数の外で)初期化されて 以後のコード中では変更できなくなるため、実質的にコンパイル時に解決可能な式でしか初期化できない。 ポインタを間にはさめば、以下のような方法で似たようなものを間接的に宣言することができる。 value.c) static int value; const int * const vp=&value; value.h) extern const int * const vp; #define VALUE (*vp) このようにしておけば、グローバル変数(のふりをしているマクロ)VALUEの実体であるvalueは、少なくともvalue.c以外で変更されることはない。
- 702 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:17:07 ]
- あとは、取得用の関数を公開する形にして
当該の変数をstaticにしてほかのファイルからは見えないようにするとか、 const変数を動的初期化できるC++へ移ってしまうとかが考え付く。
- 703 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:32:16 ]
- int GetValue()
{ static int value=-1; if(value < 0){ /* 最初に呼び出されたときに初期化される */ : : } return value; } #define VALUE GetValue() な手か
- 704 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 16:14:38 ]
- 失礼します。
void hoge(double** matrix) {} 等として受け取ったdouble**の配列の要素数をその関数内で知るすべがあったらご教授願います。
- 705 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 16:24:57 ]
- ありません
- 706 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 16:33:22 ]
- 配列matrixの終端要素になにか特別な値が格納されていれば
それを検出することで長さを知ることができる そうでなければ無理
- 707 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:00:51 ]
- char name[100];
name="hoge.txt"; みたいに代入したいんですが、エラーになります。 *name="hoge.txt"; でもできません。どうやるんでしたっけ?
- 708 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:04:40 ]
- 何で駄目なのかはわかる?
strcpy(name, "hoge.txt") とか? strncpy(name, sizeof(name) - 1, "hoge.txt")か
- 709 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:07:16 ]
- >>708
すいません。わからないので教えていただけるとありがたいです
- 710 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:24:03 ]
- >>709
Cでは配列は二級オブジェクト(メモリ上に存在するが演算の対象にならない)で、 配列名は大抵の場合配列そのものではなく配列の先頭要素のアドレスを意味する。 アドレスに代入することはできないので、name="hoge.txt"; のような文は無効になる。 配列名に対して直接=演算子が使えるのは、宣言時に初期化するときだけである。 配列に対して任意の配列をコピーするにはmemcpyやmemmove、 あるいは配列が'\0'で終わるcharの配列(文字列)である場合にはstr〜系の関数を使う。
- 711 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:43:39 ]
- 1)
strcpy(name, "hoge.txt"); 2) strncpy(name, sizeof(name)-1, "hoge.txt"); name[sizeof(name)-1]='\0'; 3) name[0]='\0'; strncat(name, sizeof(name)-1, "hoge.txt"); 1)はもっとも単純明快だが、もしnameに割り当てられている領域が コピーしようとしている文字列より小さかったらたぶん問題がおきる そのような場合に文字列を切り詰めて安全を保証したいなら2)または3)を使う
- 712 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:51:33 ]
- わかりました!どもうありがとうございました
- 713 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:00:36 ]
- >>711
横見だが 2 および 3 の引数の並びちがうぢゃろ。 strncpy(name, "hoge.txt", sizeof(name) - 1); name[sizeof(name) - 1] = 0;
- 714 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:24:12 ]
- 文字列リテラルをコピーするのにstrn*()を使うのか……
- 715 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:24:59 ]
- 当然だろ
- 716 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:26:55 ]
- sprintfでおk
- 717 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:18:04 ]
- だからオーバーフローが・・・
- 718 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:20:16 ]
- オーバーランじゃねーの?
それともオーバーフローでもおkなの?
- 719 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:21:04 ]
- おk
- 720 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:22:55 ]
- ttp://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%83%B3
ラン姉ちゃんの方でした、すまそ
|

|