1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/
844 名前:デフォルトの名無しさん [2009/09/05(土) 23:05:49 ] Linuxでは出力もマジックナンバーと呼ぶんだけどな。 ドザは頭が悪くて困る。
845 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:09:48 ] C言語でプログラムを作成してる際にわからないことがあったので質問させてください 3次元座標(-0,5、0,5、0)を (sin(t)、t、cos(t)) みたいな形で現したいと思ってるんですがどのように現すのか教えてください よろしくお願いします
846 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:16:03 ] どうも使い方の間違いを肯定したくなくてすり替えばかりしているように見える よくあることだけどな
847 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:17:38 ] >>845 sin(0.5)は-0.5ではないし、cos(0.5)も0ではないが・・・ どういう意味なので?
848 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:19:00 ] >>845 double point_3d[3]; point_3d[0] = sin(t); point_3d[1] = t; point_3d[2] = cos(t); とか?
849 名前:845 mailto:sage [2009/09/05(土) 23:25:39 ] DrawLine関数で (-0,5、0、0)から(-0,5、0,5、0)までの直線をひきたいんですが、その後にその線を変数θを使用して回転させたいと思ってるのでsincosで座標を現したいと思ったのですが 可能でしょうか?
850 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:35:32 ] Linuxでも >例えばint foo = 'abcd'としてprintf("%d\n", foo)としたときの出力が、所謂マジックナンバー。 なんていったりはしないよ。 もし言うというなら、Linux板にコピペしてきてそのスレで1000人の同意があったら認める^^
851 名前:デフォルトの名無しさん [2009/09/05(土) 23:43:12 ] >>849 直交座標系と極座標系の変換を知りたいの? もし単に回転させたいならアフィン変換すればいいだけだけど。
852 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:48:39 ] >>851 よくわかりません x座標が-0,5なので-cos(60)でいいのかと思ってやってみてもうまくいかなくて… 3次元での座標を表すときのsinθcosθというのは単に数値を入れるのとは全く別物なんでしょうか? (0,5、1、0)の座標をsincosの座標で現したいと思ったときに(cos(60)、1、sin(0))と表してもまったく別の位置に表示されるんですけど
853 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:51:36 ] sin,cosの引数はラジアン。
854 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:52:08 ] sin、cosの引数は度じゃなくラジアンだから *3.14/180 しないとだめ
855 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 23:59:56 ] ありがとうございます わかりました
856 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:29:07 ] こないだからC++以前に数学がわかってないやつが多いな
857 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:34:46 ] というか、本にせよリファレンスにせよ、どっかで説明読めば 引数がラジアンだってことくらい書いてあるはず 理論に基づいて組み上げるんじゃなく カンでプログラミングしてるんじゃないか
858 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 00:52:37 ] 普段からsmartポインタって乱用してる? 複雑な管理が必要になる部分以外は余分なコストがかかるから使わないほうがいいのかなって思ったんだけど
859 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:02:17 ] RAIIとかPimplイディオムを実現するには必要不可欠だろうが
860 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:05:49 ] RAIIとpimplってほんとによく出てくるなぁ。 RAIIはさておき、pimplは目の当たりにしたことがないから実感がわかない
861 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:06:50 ] 使わなかったところで、それと同様のコードを自分で書く羽目になるだけ、自分へコストが跳ね返ってくる。 まあ、最も単純かつ実行時の負荷が低コストでしかも標準のauto_ptrが残念な出来なのは仕方がない。 unique_ptrに期待しましょう。
862 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:07:24 ] Exceptional C++を読みなせえ
863 名前:845 mailto:sage [2009/09/06(日) 01:51:30 ] すいません さっき教えていただいた通りにラジアンで線を引けたのですが、for文で線を何本も引いて円を書こうと思い (sin(θ×t)、1、cos(0)) とし、tの値を少しずつ大きくしていきました。 そうするとx軸に沿って円がかけるはずだとおもうのですが45度から130度くらいまでの扇形みたいな形しかできません まったく理由がわかりません どなたかアドバイスをください お願いします
864 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:59:23 ] 自己解決しました
865 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 02:01:44 ] 質問の文章考えてるヒマがあったらトライ&エラーやってた方が有意義じゃないか?
866 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 08:28:07 ] >>858 乱用してるよ!! スマポのメリット>>>>>>>>>>>>ほんのわずかなコスト
867 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 09:05:17 ] >>858 スマポの評価はboostのスマポ、特にshared_ptrを使ってからしたほうがいい。 マジお勧め。
868 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 11:04:43 ] 確かにboostのshared_ptrはその利便性からいって鬼。 これ以上ないほどの。
869 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 11:12:58 ] FFTで求めた実部データと虚部データから振幅スペクトルを求めるにはどうしたらいいですか? パワースペクトルだと大きすぎるのでさけたいです
870 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 11:19:21 ] >>869 帰れ
871 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 12:08:14 ] >>869 mag=hypot(real,image)
872 名前:デフォルトの名無しさん [2009/09/06(日) 12:19:02 ] >>870 だが断る
873 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:29:57 ] グローバル変数を使う時は、関数プロトタイプ宣言より前じゃないとダメなんでしょうか?
874 名前:873 mailto:sage [2009/09/06(日) 14:30:42 ] 日本語おかしかったです、すいません グローバル変数を使う時は、関数プロトタイプ宣言より前にグローバル変数の宣言をしないとダメなんでしょうか?
875 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:32:20 ] グローバル変数の宣言と関数プロトタイプは何の関係もなくね?
876 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:33:31 ] そうでしたか、ありがとうございます
877 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:45:55 ] かかわるプロジェクトでは必ず三項演算子は目の敵になってるんですがgotoみたいな存在なんですか?
878 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:48:40 ] そんなことないよ。 記述の仕方を統一したかっただけじゃない?
879 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:51:37 ] 行数稼げないからって理由だったら嫌だなw
880 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:54:15 ] >>877 なんでだろね。 どうも三項演算子を理解できないレベルに合わせろってことらしいんだが、まじかね。
881 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 16:26:07 ] 理解なんて数秒で済むと思うんだけど 古いコンパイラで条件演算子にバグがあって禁止されていた事はあった
882 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 16:58:04 ] >>880 構造化プログラミングから逸脱する場合には不可ってことだと 思うんだけど、本質が理解されないまま全部NGになってること はよくあるね。 参考演算子そのものの理解は当然だれでもできる。
883 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:01:43 ] ゴメン、「三項」ね。
884 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:02:09 ] 三項演算子は()を下手に省略するとアレ?って挙動になってバグ取り高い壁になる
885 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:10:05 ] >>882 構造化プログラミング? 逸脱する場合としない場合kwsk。 逸脱するというのであればすべて逸脱では。
886 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:14:19 ] どんな用途か知らんが、三項演算子は特に問題ないと思うがw
887 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:17:26 ] >>882 三項演算子どころか、ポインタもろくに理解せずに仕事してるやつ多数。 それが現実。
888 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:23:23 ] int x = 0; int y = 0; bool b = なにかを代入; //逸脱しないとき if (b) { x = 123; } else { x = 456; } これは、x = b ? 123 : 456; とできるけど、bの意味する内容とか局所性によってはまぁ許容かな…。 //逸脱するとき if (b) { x = 123; y = 234; } else { x = 456; y = 789; } こっちは x = b ? 123 : 456; y = b ? 234 : 789; で書けるけど、b の真偽値に応じた代入処理のセットだと言うことが分からない。 elseifの節が後で現れるともう保守性までNG。>>885 の指摘通り、逸脱するかと 言えば全部逸脱だと思う。ちなみにオレは三項演算子は、ほぼNGにしたい派。
889 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:27:37 ] >>888 そもそもそんなコード書かないだろというか例が悪すぎるw
890 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:32:20 ] 何とも都合のいい主観判断をするものだ
891 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:33:21 ] >>888 なんでNGかkwsk。 2つ目みたいな書き方はめったにしないと思うが、その最初の例でNGにしたい理由は?
892 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:36:16 ] class HogeString { private: char* str; public: bool isEmpty()const{ return (name == NULL) ? true : false; } // これをifで書いたら bool isEmpty()const{ if(name == NULL){ return true; } return false; } }; ifだと冗長的な感じがする。こういうのは三項演算子でも良いと思うんだけどな。
893 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:38:30 ] return name == NULL;
894 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:41:46 ] ですよねぇ〜。書いた後で気づいたわ。
895 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 17:43:47 ] ワロタ
896 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 18:54:01 ] string, int, int, int の4つのデータをまとめて扱いたいのですが、 mapだと2つ以上の値のセットを扱うとエラーが出てしまいました。 こういう2つ以上の値のセットを扱うためのコンテナってありますか?
897 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 18:56:27 ] keyとなるものだけを残して他の3つは構造体かクラスにすれば良いじゃん。
898 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:36:57 ] namespaceってプロジェクトにひとつぐらいで十分?もっと細かく分けたほうが良いかな
899 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:37:19 ] CからC++に来たけど&が参照だったりアドレスだったりして気が狂いそうです
900 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:39:40 ] >>898 好き好き。 >>899 狂ってろ。
901 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 20:52:05 ] *がポインタ宣言だったり参照はがしだったり掛け算だったりする Cから来たなら大丈夫よ
902 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:07:11 ] >>899 使い方が全然違うじゃん。 ・・・それぐらい分からないと他言語でも無理だろ。
903 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:08:13 ] >>898 俺は2階層ぐらいだけど。 一番大きいプロジェクトの根幹のnamespaceと、 namespace implementationとか。
904 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:37:13 ] C++のSTLに含まれているstringのメンバ関数に、 find_first_not_ofというものがありますが、 この関数を find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789") という風に使って、アルファベットと数字とアンダーバー以外の文字数が 最初に出現する文字数を調べようとしたのですが、うまく働いてくれません。 (;や+などを感知してくれません) これはなぜでしょうか?
905 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:46:43 ] >>904 とりあえずソースかけ。 話はそれから。
906 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:49:20 ] >>904 codepad ttp://codepad.org/ ここで。
907 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 21:53:17 ] >アルファベットと数字とアンダーバー以外の文字数が最初に出現する文字数 文字数が出現する文字数ってなんだ?
908 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:12:22 ] ちょっとぐらい間違ってる日本語を補正する頭もないのかお前は
909 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 22:25:16 ] >>908 2か所間違ってるけどな。 まあなんにせよ>>906 にあるところに貼ってくれるのをまとう。
910 名前:デフォルトの名無しさん [2009/09/07(月) 19:31:24 ] CあるいはC++でSQLサーバに接続するにはどうしたらいいのでしょうか? 検索しても.NETFrameworkを使ったやり方しかなく困っています どなたかご教授お願いします
911 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 19:32:59 ] sage忘れすまそ('A`)
912 名前:デフォルトの名無しさん [2009/09/07(月) 19:48:12 ] 質問です。 32ビットのWindowsの場合malloc()で確保出来るメモリサイズは2Gほどだったと思いますが、 これは、1プロセスあたりの制限ですか? 1つのプログラムで、malloc()を2カ所で呼び出すと、それぞれの箇所で2G確保できるのでしょうか?
913 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 19:54:23 ] >>910 ODBCでよければ、 ODBC C++とか、ODBC VC++で検索。
914 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:11:32 ] >>912 プロセスごとに2GB
915 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:40:05 ] >>912 どんだけ激しいメモリ消費なんだw
916 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:44:44 ] >>914 THX 困ったなぁ・・・。ディスクアクセスしながらちびちびやるか。 >>915 48Gほどのテキストデータを木構造に展開して色々やらないといけないのよ。 う〜む、もう少しダイナミックにオンメモリでやりたかった・・・
917 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:45:33 ] >>916 You, 64ビットに移行しちゃいなYO!
918 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:48:57 ] BDが真っ青
919 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:53:13 ] >>916 64bitしかあるまいw どのみちそんなにメモリ詰めないだろw
920 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 20:59:40 ] サーバ用でもない限りマザーボードの上限に引っかかるな
921 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 21:25:21 ] >>916 アルゴリズムを検討してメモリの消費量を抑えるのが手っ取り早い。そのほうがいろいろ高速化できる。 それでも解決しないなら最後の手段として64bitOSと64bitコンパイラの採用を考える事になると思うよ。 どんなにメモリがあってもアルゴリズムを改良しないと演算時間がとてつもなくかかりそうな予感。
922 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 21:43:58 ] 48GBのテキストデータって何ぞ? 漏れのおかずフォルダでもそんなにねーぞ。
923 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 21:59:47 ] >>922 そうか、本当に無いのか検証の必要があるな。よし、どっかにアップロードしろ。
924 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:00:23 ] ゲーム作っててつまずいたので質問します struct Test{ TEST1 b[2]; 省略 } std::list< Test > lstTest; こうやって使ってるんですが、このTEST1の配列を動的に確保することってできますか? リストの中にリストとかしてみたんですが、同じような動きにならなくて困ってます。(ポインタの問題?
925 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:10:58 ] リストの中にリスト、大丈夫なはずだが
926 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:11:14 ] 64Gって、研究かな? 今は、64Gのテキストデータなんてのを普通に使うようになったのか・・ 恐ろしい時代だ・・・。
927 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:12:01 ] >>924 struct Test { std::vector<TEST1> b; }; でいいと思う。 あと解説サイトを見てlistとvectorの使い分けを覚えよう。
928 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 22:14:01 ] list -> 知的でおしゃれな感じを出したいときに使う vector -> スマートなやり手プログラマを演出したいときにはコレ deque -> 研究者気取りのあなたに
929 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:22:48 ] 48GBとかのデータを扱うなら、クラスタ上でMPIとか使って並列プログラミングってのが筋かなあ
930 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:54:41 ] buf[10] = 0xff buf[11] = 0x32 ... int kansu(u_1 *buf){` i = 10; printf("test buf[i] %d", i, buf[i]) このようなプログラムで、引数で配列を渡したとき printfでbuf[10]等の中身を見ようとしたとき、表示がおかしな値になるのですが どうしてでしょうか? %d, %s, %x 等もおかしかったのですが
931 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 23:55:52 ] "test buf[%d] %d" では?
932 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:14:45 ] >>931 すみません、ここに書き方間違ってました。 実際のプログラムではそうかいてます。申し訳ありません。 そう書いて、表示がおかしかたtのです
933 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:23:39 ] %x
934 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:34:53 ] ソースを張るなり上げるなりしてください
935 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:40:31 ] u_1が何なのかわからないとなぁ typedef unsigned char u_1; だったらprintf()はスタック破壊してるだろうし typedef unsigned long double u_1; だったら表示がおかしいとかの次元じゃないし
936 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:47:23 ] >>935 u_1は、unsignede char です スタック?どの辺がおかしいのでしょうか?
937 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:06:55 ] >>930 断片だけ書かれてもわからん。 おかしな値が再現するソースを見せてくれ。
938 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:11:54 ] >>937 すみません、今手元にないのでそのままお見せできないんですが 下のような感じです。とはいってもさっきと一緒で分かりにくいでしょうが・・ buf[50] ; buf[1] = 0; buf[2] =5 等代入 void kansu(buf); void kansu(u_1 *buf){` i = 10; printf("test buf[%d] %d", i, buf[i]) printf以降でbuf[i]の中身を別のバッファにコピーしてるのですが、 それを確認しようと思い、printfで確認しようとしたところ まずその確認以前にうまく表示できなかったもので・・・
939 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:18:12 ] そもそも、bufの型はなんなんだ? メモリは確保されてるのか?
940 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:18:36 ] >>939 malloc関数でかくほしております
941 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:19:31 ] >>939 bufは、unsigned char です
942 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:23:51 ] mallocで確保するんならbuf[50]は変な気がするけどな。
943 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:40:27 ] >>941 > i = 10; > printf("test buf[%d] %d", i, buf[i]) 別に表示がおかしくなることはないと思うがな。 この部分の、期待している表示と実際の表示を書いてくれ。
944 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 07:33:43 ] >>943 期待しているのは、buf[i]に代入した値が表示したいのですが、 全く関係ない数字が表示されてしまいます。4桁とか