1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ] プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。 関連スレやURLは>>2 以降。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・ぐぐる ・マニュアルで探す ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(なるべくそのままで) ・実行環境(OS名、コンパイラ名) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって小心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。 宗教的な話題は禁止します。
610 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 20:40:37 ] >>601 が真にやりたいことが理解できてなくて 説明がうまいこといってないのか 俺の読解力がないのかが判断つかねえ
611 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 21:29:28 ] R=5 G=3 B=8から、RGB値の#538が欲しい、だと解釈したので>>606 でいいと思ってる
612 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 21:41:17 ] サンプルのdが0x538だったら惑うことも無かったろう
613 名前:612 mailto:sage [2009/12/08(火) 21:42:19 ] 8bitの合成で24bitだから正しくは0x050308か
614 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 12:49:28 ] >>601 今の人はビットフィールドって知らないのか?
615 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 12:51:22 ] はぁ?
616 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 12:58:29 ] >>610 1行目と2行目の関連がまるで見えないので説明の問題だと思う
617 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 13:00:10 ] >>614 もし、8ビット毎の合成だったらunionだけでOKだな
618 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:24:01 ] C++/CLIってググっても情報少ないんだけど、 あまり使われていないのでしょうか?
619 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:31:41 ] えぇ、使われてません。 C++のルールからあまりに外れまくっている上に C#より面倒なくせにやれることはC#未満という有様なので。 用途がすごく限られます。
620 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:45:58 ] >>618 殆どはC#とC++の情報を読み替えるだけで賄える
621 名前:デフォルトの名無しさん [2009/12/12(土) 10:38:17 ] aとbというunsigned long型で、 aとbの差が±30以上ならint型cに1を入れる、というプログラムを作成したいのですが、 なにかいい方法はありませんか?
622 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:42:36 ] 普通に引き算の結果を比較するんじゃダメなの?
623 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:43:50 ] >>621 どうやったらダメだったのかとか自分の案くらい書けば?
624 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:44:31 ] unsigned じゃ引き算の結果のマイナスは表現できないから困るだろ
625 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:51:25 ] int main(){ unsigned long a = 39.5; unsigned long b = 6.4; unsigned long d; if(a>b){ d = a-b; }else{ d = b-a; } int c = 0; if(d>30){ c= 1; } cout << c << endl; }
626 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:51:25 ] 絶対値とりゃいい
627 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 11:49:49 ] if (a >= b + 30 || b >= a + 30) { c = 1; }
628 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 11:53:10 ] 最大値付近だとまずくない?
629 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:15:02 ] まずかった なんか綺麗に書けないかなと思ったけど難しかった
630 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:34:01 ] if (abs(a-b) > 30) c = 1;
631 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:34:58 ] 「30以上」
632 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:42:20 ] abs()の引数はintじゃねーの?
633 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 13:28:53 ] unsigned longのままでやりたいなら c = (a > b ? a - b : b - a) > 30 ? 1 : c;
634 名前:デフォルトの名無しさん [2009/12/12(土) 15:08:18 ] 横からスマソ int型のif文で、 if (x <= -50) みたいにできなかったっけ?
635 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 15:16:04 ] >>634 出来るが、一体どうしたね
636 名前:デフォルトの名無しさん [2009/12/12(土) 15:21:43 ] いや、int型のほうは負も扱えたよなと思って
637 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 15:22:29 ] >>636 今更なにを。。。 どの言語を普段お使いの方ですか?
638 名前:デフォルトの名無しさん [2009/12/12(土) 18:59:13 ] ここ数年、開発部門から離れてCとかC++も触れる機会が無かったからさ そろそろ戻れるって聞いて、必死で覚えなおしてる
639 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 19:01:58 ] ×戻れる ○戻される
640 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 19:14:33 ] >>1 なんで宗教的な話は禁止とか書いてあんの? プログラムと宗教って何か関係性でもあったの? 普通に考えたらプログラム板なんだから宗教の話なんてスレチのイタチだってのに わざわざ書くってことは何か理由がってのこと?
641 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 19:51:37 ] はい
642 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 20:37:59 ] >>640 vimとemacsのどちらがよりC++コーディングに適しているのか教えてください
643 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 21:20:01 ] 以下のコードのように文字列定数の先頭アドレスを返して 関数呼び出し元で利用するのは問題ないでしょうか。 手元の環境(gcc 4.4.0)では"abc"と表示されました。 #include <stdio.h> char *func() { return "abc"; } int main(void) { puts(func()); return 0; }
644 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 21:41:40 ] >>643 定数は問題ない
645 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 21:58:57 ] 問題ないけど戻り値の型はconst chara*のほうがいいと思う
646 名前:643 mailto:sage [2009/12/12(土) 22:46:26 ] ありがとうございます。
647 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 04:59:03 ] >>642 それはエディタ論争だから鼬害
648 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 10:14:46 ] >>647 バカ発見www 単に彼は「宗教的な話は禁止」の例えで出したんだろjk
649 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 10:20:43 ] この板における「宗教」の意味を理解してないか、わざと理解してないふりをしてるアホには、 何を言っても無駄だろう。
650 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 11:21:40 ] viにしろ!!!!
651 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:22:13 ] 神は量子クラスを継承して光子オブジェクトを作られたわけだが それ以前から原子クラスを継承した水素オブジェクトは存在したのだな
652 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:33:22 ] >>651 いや存在してないと思うぜ。逆じゃねぇのか? あと、テンプレートの特殊化の方が近いと思うんだぜ。 template<double spin, double Mass, double Electric charge, 俺の知らない要素> class SubatomicParticle;
653 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:48:26 ] 逆というか、skyとgroundクラスをまず最初に作って そのとき一緒にwaterクラスも実装したらしい
654 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 15:26:49 ] 宗教的な話題は禁止します。
655 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 15:33:52 ] リアル宗教ktkr
656 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 17:01:10 ] C#信者だけど質問してもいい?
657 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 17:31:08 ] どうぞ
658 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 17:40:34 ] どうぞじゃねぇよ スレ違いだろ
659 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:00:32 ] C#信者だけど(C/C++の)質問してもいい?
660 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:08:40 ] >>659 ダメ 改宗してからおいでなさい。
661 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:15:40 ] C/C++/C# は宗教だったのか
662 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:26:25 ] そうです!!
663 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 20:14:15 ] すみませんがどうすればいいか教えてください。 下記のコードのcuetarget=cue_parse_file(fp);までは実行に成功するのですが、cd_dump(cuetarget);以降が実行されず、実行が止まってしまいます。 #include "C:/libcue-1.3.0/bin/cd.h" #include "C:/libcue-1.3.0/bin/cdtext.h" #include "C:/libcue-1.3.0/bin/cue_parser.h" #include "C:/libcue-1.3.0/bin/libcue.h" #include "C:/libcue-1.3.0/bin/rem.h" #include "C:/libcue-1.3.0/bin/time.h" int main(int argc, char** argv) { FILE *fp; /*ファイルポインタの宣言 */ Cd *cuetarget; /* ファイルのオープン */ if ((fp = fopen("S:/CDImage.cue", "r")) == NULL) { printf("file open error!!\n"); exit(EXIT_FAILURE); /*エラーの場合は異常終了する */ }else{ cuetarget=cue_parse_file(fp); if (cuetarget=NULL){ exit(EXIT_FAILURE); /*エラーの場合は異常終了する */ }else{ cd_dump(cuetarget); } } fclose(fp); /*ファイルのクローズ */ return (EXIT_SUCCESS); ・エラーメッセージ 特になし。 ・実行環境 OS:WindowsXP コンパイラ:MingW IDE:NetBeans6.0.1 使用したライブラリ:libcue-1.3.0( ttp://sourceforge.jp/projects/sfnet_libcue/ ) ・最終的にやりたいこと Cueシートの全てのトラックの、トラック名、アーティスト名などの属性を、別に用意したファイルの内容で自動的に置き換える。 (そのためにCueシートの解析用ライブラリをDLしてきた。)
664 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 20:18:23 ] とりあえず、PATHを通しとけ CUEファイルに原因があるかもしれないから CUEをどこかにあげてみて
665 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 20:44:05 ] >>664 PATHは通してあります。 CUEはこれです。 ttp://www1.axfc.net/uploader/Sc/so/63656
666 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 21:19:00 ] >>663 この辺があやしい if (cuetarget=NULL){
667 名前:663 mailto:sage [2009/12/13(日) 21:27:17 ] 解決しました。ありがとうございます。我ながら何をやっているのか…。
668 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:10:06 ] 定数を左辺値にしないから・・・・・
669 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:27:02 ] いまどきのコンパイルなら警告出るだろ
670 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 22:50:01 ] 脳内警告が常に出ます
671 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:07:23 ] >>668 左辺値の意味わかってないだろ。 まあどっちにしても定数を左に置くやつは信用できないけどな。
672 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:30:07 ] >>671 右の間違いだろ
673 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:44:07 ] プログラムの意味的にそうするのが自然であればそれでいいけど 単に凡ミスを防ぐために読みづらくするのは嫌だと言ってんの。
674 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 11:21:39 ] なんだ嫌なのか。
675 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:01:02 ] 俺も定数を左に置くような奴を見たら、どっかおかしい人だと思うだろうな、正直。 当然、そう書こうとする動機は知っているが。 ==と間違えて=を書く確率は、ちょっと慣れたまともなCプログラマなら0に限りなく 等しい。つまり、予防策としての効果も0に限りなく等しい。 よって、見た目に優れた書き方の方が良いが、左に定数を書く方がみんな見やすいと 思っているなら相当な変わり者だろう。物事は何でもかんでも対称的ではない。左と 右でどっちが感覚的に自然か、についても対称的な話ではない。現実に定数は右に 書かれる率が圧倒的に高い。 というようなことを感覚で判断できないか、または==と=を間違えることが実際に ある人なのか、どちらにしても信用には値しないだろうな。
676 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:03:56 ] ミスの確率の高さ低さより、致命傷になるかどうかじゃね? 今時のコンパイラを正しく使っていれば、間違えても致命傷にはならない だろうとは思う。
677 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:11:20 ] if ( MIN <= x && x < MAX ) {} とかは書くけど、 ==と=のミスを避けるために左に定数を書くことはないなぁ。 でも、 >ちょっと慣れたまともなCプログラマなら0に限りなく は、ソースがないから単なる妄想だね。^^ そしてハーブサッター先生の言葉を思い出そう。
678 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:16:48 ] ハーブサッターの言葉なんぞ多すぎてどれだか分かんねぇよw
679 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:21:59 ] ハーブサッターの言葉? 気の利いたコードは害悪だ、ってのは覚えてるな。
680 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 13:54:54 ] 個人的には >>677 > >ちょっと慣れたまともなCプログラマなら0に限りなく > は、ソースがないから単なる妄想 そういう統計は誰も取ってくれそうもないが、経験則としてはあるなあ。
681 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 14:08:48 ] 長くCを書いてると、比較の時は自然と==と入力してしまう
682 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:02:15 ] 0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。
683 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:06:07 ] if (!ちょっと慣れたまともなCプログラマ) { 682 名前: デフォルトの名無しさん [sage] 投稿日: 2009/12/15(火) 15:02:15 0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。 }
684 名前:デフォルトの名無しさん [2009/12/15(火) 15:17:15 ] 小心者はどこへいった・・・
685 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 21:57:19 ] 俺様は比較で代入なんて間違えないぜwwwwっていう勘違いちゃんならいるけど
686 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 22:35:07 ] 俺様は比較で代入なんて間違えないぜwww ただタイプミスするだけなんだぜwwww ダメじゃんorz
687 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:37:27 ] \(^o^)/オワタ
688 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 10:47:01 ] 結構膨大なコード書いてきたけど、ごく初期は別にして普通に一度も間違えないけどな
689 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:08:54 ] 間違えることよりも、早期発見できるほうが重要だけどな。 他人の作ったコードもメンテすることあるし。
690 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 14:09:20 ] タイプミスばっかでげんなり
691 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 15:27:40 ] >>688 PL/SQL と並行してやってると、代入/比較どころか 文字列のクォーテーションまで間違うぜ!
692 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:10:07 ] 他人に「定数は左に書こうぜ」とか言ってたらさらにキチガイじみてるな
693 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:11:16 ] 他人の作ったコードのメンテで「定数は左に」って役に立つの? 右に書いてあるコードを全部左に置き換えてからコード読むとか?
694 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:17:45 ] 「仕事じゃバカのコードもメンテしなきゃならないんだよ」理論の失敗例だな
695 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:25:03 ] vbの即時で文法ミス見つける機能が他の環境にもあれば そのうち実現するか
696 名前:デフォルトの名無しさん [2009/12/17(木) 04:02:14 ] パソコンの時刻を2038年1月19日3時14分7秒の30秒前に設定して30秒後どうなるのかを誰か試してみてくれないか? うちのパソコンでは何かうまくゆかないんだ
697 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 05:03:28 ] 女の腐ったような回りくどさだな どうせ30年弱の間には解決するだろ
698 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 08:04:46 ] 何でC/C++スレで2038年問題を?
699 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 11:32:43 ] 「C/C++スレ」ではなく「小心者スレ」だから
700 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 11:33:45 ] >>695 文法ミスじゃないから原因を特定しにくいバグになるんじゃないの? だから、コンパイル時にエラーとなるように定数を左辺に置くという小技が出てきたわけで。 今は警告でるんだからそんな小技はデメリットしかないと思うよ
701 名前:541 mailto:sage [2009/12/17(木) 17:41:27 ] >>541 で質問した者です。 検索の結果、やりたいことは「重複順列の列挙」と言うのだと分かりました。 また、列挙までのサンプルソースも手に入りました。 が、 あまりにも数字が多いので、必要のない物を出力前に除外しようと思い立ちました。 そこで質問です。除外条件で ・m桁目に2がある数値は除外 ・0が5個以上連続している数値は除外 ・左右反転して同一数値になるものは最初に出力した物以外出力しない 等々、どうやって条件付けしたらいいのか分かりません。
702 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:03:47 ] >>701 どういうものが必要ないかを俺が決めていいのかよ?? じゃぁ(ry
703 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 19:37:56 ] 条件付けで処理が増える分、余計に遅くなるだけな気もするが。
704 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 06:40:17 ] 選択整列法の平均比較回数が約N^2/4になるのはなぜですか?
705 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:50:35 ] 平均っていうか、単純選択ソートの比較回数は固定のはずでは
706 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:59:38 ] 選択ソートの比較回数は(N-1)*N/2じゃないの?
707 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:38:27 ] 失礼、挿入整列法でした。
708 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:49:35 ] スレ違いかもしれないけど。 wiiyourselfとかwiiremoteなどのwii関係のC,C++用のライブラリーでとっつき安いライブラリのおすすめがある人いませんか? 自分の作ったVRウォークスルーもどきにヘッドトラッキングを導入したいんだけど。
709 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:22:28 ] >>707 俺最低。異物挿入法とか読んだ。どこに異物があるのか。
710 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:49:11 ] >707 大雑把に説明してみる。 Insertion sort ではどの位置に要素を挿入するべきかを判定するために比較が用いられている。 最初逆順に並んでいる場合(=最悪の場合)は比較回数は 0+1+2+...+(n-1)=n(n-1)/2 になる。 各ステップにおいてどの位置に挿入することになるかは等確率となるため平均を考えると半分の位置になる。 従って 0/2+1/2+2/2+...+(n-1)/2=1/2(0+1+2+...+(n-1))=n(n-1)/4 となる。