C/C++小心者スレッドP ..
596:589
09/11/29 20:38:31
>>595さんの方法も試してみます。ありがとうございます。
とりあえずは以下の方法で実装できました。(言われてみれば当たり前かも・・・汗)
struct TrackingPoint { int x; int y; };
class Perception {
public:
static TrackingPoint trackingPoint0;
static TrackingPoint trackingPoint1;
static TrackingPoint trackingPoint2;
};
TrackingPoint Perception::trackingPoint0 = {0, 0};
TrackingPoint Perception::trackingPoint1 = {1, 1};
TrackingPoint Perception::trackingPoint2 = {2, 2};
int main() {
printf("%d", Perception::trackingPoint0.x);
printf("%d", Perception::trackingPoint1.x);
printf("%d", Perception::trackingPoint2.x);
return 0;
}
597:デフォルトの名無しさん
09/12/02 00:53:41
MFCを使ったサンプルプログラムを実行したいのですが、
.NET 2008だと有料版を買うしか無いのですよね・・・?
598:デフォルトの名無しさん
09/12/02 01:28:33
>>597
「.NET 2008」って、「Visual Studio .NET か Visual Studio 2008」ってこと?
まあ、そうだね。MFCを無料で入手する手段はないと思うよ。
ちょっと試すぐらいなら、現在無料で配布中の VS 2010 懼ァイ22でいけるか
もしれない。
599:デフォルトの名無しさん
09/12/02 04:05:07
>>598
説明が足りなくてすいません
Visual Stadio .NET Express EditionでMFCを使用したサンプルプログラムの動きを見たかったのです
VS2010なら、動作してくれるのかな?
ちょっとダウンロードして実行してみます
600:デフォルトの名無しさん
09/12/02 10:03:55
1回動けばいいだけなら評価版をダウンロードすればいいだけだな
601:デフォルトの名無しさん
09/12/07 21:57:33
a、b、cの3つのint型にそれぞれ8bit(01001110のようなもの)のデータをくっつけたいのですが、どうすればよいでしょうか。
つまり、aに5、bに3、cに8というデータがあったら、新しいint型のdに538というように
ひとつの24bitのデータにしたいのです。
なにか良い手段がありましたら、お願いします。
602:デフォルトの名無しさん
09/12/07 23:27:47
>>601
a、b、cを左に8回シフトして0xffffff00(32bitの場合)とANDを取り
次に8bitデータとORを取る
603:デフォルトの名無しさん
09/12/07 23:28:31
あっごめん24ビットデータか
じゃあ0xffff00とANDを取って
604:デフォルトの名無しさん
09/12/08 01:14:20
>>601
> つまり、aに5、bに3、cに8というデータがあったら、新しいint型のdに538というように
これ、 4 ビットずつ 3 つで 12 ビットのデータにしてね?
605:デフォルトの名無しさん
09/12/08 01:27:26
>>604
606:デフォルトの名無しさん
09/12/08 04:37:51
>>601
1行目と2行目以降が同じ意味に聞こえないんだけど、もしかしてこういうこと?
int d = ((a & 0xff) << 16) | ((b & 0xff) << 8) | (c & 0xff);
607:デフォルトの名無しさん
09/12/08 07:44:40
visual C++ 2008 Express Edition でシンプルなソフトを作ってみました。
そこで質問があるのですが、もし分かる人いたら教えてください。
@実行ファイルにアイコンをつけたいんですが、プロジェクトファイルを作成してしまった後でも、
アイコンをつける方法はあるのでしょうか。
(アイコンの絵柄のきれいさはあまりこだわりませんが、せっかくなんでアイコン作ってみたくて)
ARelease環境で作成されたフォルダをみると
プログラムの中で使う画像ファイルがなぜかないので手作業でフォルダに追加しないといけなかったり、
作成されたフォルダの中にexeファイル以外のファイルが8つぐらいあったりしてごちゃごちゃするので、
最終的に作成するファイルをexeファイルだけにする方法はないでしょうか?
608:デフォルトの名無しさん
09/12/08 12:46:29
昔はリソーススクリプトをごりごりしていたけど(VC++ 6.0)
いまはXMLになっている気がする(VS 2003頃からか)
とりあえず、スレ違い
Visual Studio 2008 Part 19
スレリンク(tech板)
609:デフォルトの名無しさん
09/12/08 14:11:26
>>607
>最終的に作成するファイルをexeファイルだけにする方法はないでしょうか?
ビルド後のイベントに消すコマンドを書けばよいがそんなことは普通しない。
分割コンパイルの意味がなくなる。
610:デフォルトの名無しさん
09/12/08 20:40:37
>>601が真にやりたいことが理解できてなくて
説明がうまいこといってないのか
俺の読解力がないのかが判断つかねえ
611:デフォルトの名無しさん
09/12/08 21:29:28
R=5 G=3 B=8から、RGB値の#538が欲しい、だと解釈したので>>606でいいと思ってる
612:デフォルトの名無しさん
09/12/08 21:41:17
サンプルのdが0x538だったら惑うことも無かったろう
613:612
09/12/08 21:42:19
8bitの合成で24bitだから正しくは0x050308か
614:デフォルトの名無しさん
09/12/11 12:49:28
>>601
今の人はビットフィールドって知らないのか?
615:デフォルトの名無しさん
09/12/11 12:51:22
はぁ?
616:デフォルトの名無しさん
09/12/11 12:58:29
>>610
1行目と2行目の関連がまるで見えないので説明の問題だと思う
617:デフォルトの名無しさん
09/12/11 13:00:10
>>614
もし、8ビット毎の合成だったらunionだけでOKだな
618:デフォルトの名無しさん
09/12/11 16:24:01
C++/CLIってググっても情報少ないんだけど、
あまり使われていないのでしょうか?
619:デフォルトの名無しさん
09/12/11 16:31:41
えぇ、使われてません。
C++のルールからあまりに外れまくっている上に
C#より面倒なくせにやれることはC#未満という有様なので。
用途がすごく限られます。
620:デフォルトの名無しさん
09/12/11 16:45:58
>>618
殆どはC#とC++の情報を読み替えるだけで賄える
621:デフォルトの名無しさん
09/12/12 10:38:17
aとbというunsigned long型で、
aとbの差が±30以上ならint型cに1を入れる、というプログラムを作成したいのですが、
なにかいい方法はありませんか?
622:デフォルトの名無しさん
09/12/12 10:42:36
普通に引き算の結果を比較するんじゃダメなの?
623:デフォルトの名無しさん
09/12/12 10:43:50
>>621
どうやったらダメだったのかとか自分の案くらい書けば?
624:デフォルトの名無しさん
09/12/12 10:44:31
unsigned じゃ引き算の結果のマイナスは表現できないから困るだろ
625:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/12 10:51:25
絶対値とりゃいい
627:デフォルトの名無しさん
09/12/12 11:49:49
if (a >= b + 30 || b >= a + 30) {
c = 1;
}
628:デフォルトの名無しさん
09/12/12 11:53:10
最大値付近だとまずくない?
629:デフォルトの名無しさん
09/12/12 12:15:02
まずかった
なんか綺麗に書けないかなと思ったけど難しかった
630:デフォルトの名無しさん
09/12/12 12:34:01
if (abs(a-b) > 30) c = 1;
631:デフォルトの名無しさん
09/12/12 12:34:58
「30以上」
632:デフォルトの名無しさん
09/12/12 12:42:20
abs()の引数はintじゃねーの?
633:デフォルトの名無しさん
09/12/12 13:28:53
unsigned longのままでやりたいなら
c = (a > b ? a - b : b - a) > 30 ? 1 : c;
634:デフォルトの名無しさん
09/12/12 15:08:18
横からスマソ
int型のif文で、
if (x <= -50)
みたいにできなかったっけ?
635:デフォルトの名無しさん
09/12/12 15:16:04
>>634
出来るが、一体どうしたね
636:デフォルトの名無しさん
09/12/12 15:21:43
いや、int型のほうは負も扱えたよなと思って
637:デフォルトの名無しさん
09/12/12 15:22:29
>>636
今更なにを。。。
どの言語を普段お使いの方ですか?
638:デフォルトの名無しさん
09/12/12 18:59:13
ここ数年、開発部門から離れてCとかC++も触れる機会が無かったからさ
そろそろ戻れるって聞いて、必死で覚えなおしてる
639:デフォルトの名無しさん
09/12/12 19:01:58
×戻れる
○戻される
640:デフォルトの名無しさん
09/12/12 19:14:33
>>1
なんで宗教的な話は禁止とか書いてあんの?
プログラムと宗教って何か関係性でもあったの?
普通に考えたらプログラム板なんだから宗教の話なんてスレチのイタチだってのに
わざわざ書くってことは何か理由がってのこと?
641:デフォルトの名無しさん
09/12/12 19:51:37
はい
642:デフォルトの名無しさん
09/12/12 20:37:59
>>640
vimとemacsのどちらがよりC++コーディングに適しているのか教えてください
643:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/12 21:41:40
>>643
定数は問題ない
645:デフォルトの名無しさん
09/12/12 21:58:57
問題ないけど戻り値の型はconst chara*のほうがいいと思う
646:643
09/12/12 22:46:26
ありがとうございます。
647:デフォルトの名無しさん
09/12/13 04:59:03
>>642
それはエディタ論争だから鼬害
648:デフォルトの名無しさん
09/12/13 10:14:46
>>647
バカ発見www
単に彼は「宗教的な話は禁止」の例えで出したんだろjk
649:デフォルトの名無しさん
09/12/13 10:20:43
この板における「宗教」の意味を理解してないか、わざと理解してないふりをしてるアホには、
何を言っても無駄だろう。
650:デフォルトの名無しさん
09/12/13 11:21:40
viにしろ!!!!
651:デフォルトの名無しさん
09/12/13 13:22:13
神は量子クラスを継承して光子オブジェクトを作られたわけだが
それ以前から原子クラスを継承した水素オブジェクトは存在したのだな
652:デフォルトの名無しさん
09/12/13 13:33:22
>>651
いや存在してないと思うぜ。逆じゃねぇのか?
あと、テンプレートの特殊化の方が近いと思うんだぜ。
template<double spin, double Mass, double Electric charge, 俺の知らない要素>
class SubatomicParticle;
653:デフォルトの名無しさん
09/12/13 13:48:26
逆というか、skyとgroundクラスをまず最初に作って
そのとき一緒にwaterクラスも実装したらしい
654:デフォルトの名無しさん
09/12/13 15:26:49
宗教的な話題は禁止します。
655:デフォルトの名無しさん
09/12/13 15:33:52
リアル宗教ktkr
656:デフォルトの名無しさん
09/12/13 17:01:10
C#信者だけど質問してもいい?
657:デフォルトの名無しさん
09/12/13 17:31:08
どうぞ
658:デフォルトの名無しさん
09/12/13 17:40:34
どうぞじゃねぇよ
スレ違いだろ
659:デフォルトの名無しさん
09/12/13 18:00:32
C#信者だけど(C/C++の)質問してもいい?
660:デフォルトの名無しさん
09/12/13 18:08:40
>>659
ダメ
改宗してからおいでなさい。
661:デフォルトの名無しさん
09/12/13 18:15:40
C/C++/C# は宗教だったのか
662:デフォルトの名無しさん
09/12/13 18:26:25
そうです!!
663:デフォルトの名無しさん
09/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( URLリンク(sourceforge.jp) )
・最終的にやりたいこと
Cueシートの全てのトラックの、トラック名、アーティスト名などの属性を、別に用意したファイルの内容で自動的に置き換える。
(そのためにCueシートの解析用ライブラリをDLしてきた。)
664:デフォルトの名無しさん
09/12/13 20:18:23
とりあえず、PATHを通しとけ
CUEファイルに原因があるかもしれないから
CUEをどこかにあげてみて
665:デフォルトの名無しさん
09/12/13 20:44:05
>>664
PATHは通してあります。
CUEはこれです。
URLリンク(www1.axfc.net)
666:デフォルトの名無しさん
09/12/13 21:19:00
>>663
この辺があやしい
if (cuetarget=NULL){
667:663
09/12/13 21:27:17
解決しました。ありがとうございます。我ながら何をやっているのか…。
668:デフォルトの名無しさん
09/12/14 20:10:06
定数を左辺値にしないから・・・・・
669:デフォルトの名無しさん
09/12/14 20:27:02
いまどきのコンパイルなら警告出るだろ
670:デフォルトの名無しさん
09/12/14 22:50:01
脳内警告が常に出ます
671:デフォルトの名無しさん
09/12/15 10:07:23
>>668
左辺値の意味わかってないだろ。
まあどっちにしても定数を左に置くやつは信用できないけどな。
672:デフォルトの名無しさん
09/12/15 10:30:07
>>671
右の間違いだろ
673:デフォルトの名無しさん
09/12/15 10:44:07
プログラムの意味的にそうするのが自然であればそれでいいけど
単に凡ミスを防ぐために読みづらくするのは嫌だと言ってんの。
674:デフォルトの名無しさん
09/12/15 11:21:39
なんだ嫌なのか。
675:デフォルトの名無しさん
09/12/15 12:01:02
俺も定数を左に置くような奴を見たら、どっかおかしい人だと思うだろうな、正直。
当然、そう書こうとする動機は知っているが。
==と間違えて=を書く確率は、ちょっと慣れたまともなCプログラマなら0に限りなく
等しい。つまり、予防策としての効果も0に限りなく等しい。
よって、見た目に優れた書き方の方が良いが、左に定数を書く方がみんな見やすいと
思っているなら相当な変わり者だろう。物事は何でもかんでも対称的ではない。左と
右でどっちが感覚的に自然か、についても対称的な話ではない。現実に定数は右に
書かれる率が圧倒的に高い。
というようなことを感覚で判断できないか、または==と=を間違えることが実際に
ある人なのか、どちらにしても信用には値しないだろうな。
676:デフォルトの名無しさん
09/12/15 12:03:56
ミスの確率の高さ低さより、致命傷になるかどうかじゃね?
今時のコンパイラを正しく使っていれば、間違えても致命傷にはならない
だろうとは思う。
677:デフォルトの名無しさん
09/12/15 12:11:20
if ( MIN <= x && x < MAX ) {} とかは書くけど、
==と=のミスを避けるために左に定数を書くことはないなぁ。
でも、
>ちょっと慣れたまともなCプログラマなら0に限りなく
は、ソースがないから単なる妄想だね。^^
そしてハーブサッター先生の言葉を思い出そう。
678:デフォルトの名無しさん
09/12/15 12:16:48
ハーブサッターの言葉なんぞ多すぎてどれだか分かんねぇよw
679:デフォルトの名無しさん
09/12/15 12:21:59
ハーブサッターの言葉?
気の利いたコードは害悪だ、ってのは覚えてるな。
680:デフォルトの名無しさん
09/12/15 13:54:54
個人的には
>>677
> >ちょっと慣れたまともなCプログラマなら0に限りなく
> は、ソースがないから単なる妄想
そういう統計は誰も取ってくれそうもないが、経験則としてはあるなあ。
681:デフォルトの名無しさん
09/12/15 14:08:48
長くCを書いてると、比較の時は自然と==と入力してしまう
682:デフォルトの名無しさん
09/12/15 15:02:15
0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。
683:デフォルトの名無しさん
09/12/15 15:06:07
if (!ちょっと慣れたまともなCプログラマ) {
682 名前: デフォルトの名無しさん [sage] 投稿日: 2009/12/15(火) 15:02:15
0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。
}
684:デフォルトの名無しさん
09/12/15 15:17:15
小心者はどこへいった・・・
685:デフォルトの名無しさん
09/12/15 21:57:19
俺様は比較で代入なんて間違えないぜwwwwっていう勘違いちゃんならいるけど
686:デフォルトの名無しさん
09/12/15 22:35:07
俺様は比較で代入なんて間違えないぜwww
ただタイプミスするだけなんだぜwwww
ダメじゃんorz
687:デフォルトの名無しさん
09/12/15 23:37:27
\(^o^)/オワタ
688:デフォルトの名無しさん
09/12/16 10:47:01
結構膨大なコード書いてきたけど、ごく初期は別にして普通に一度も間違えないけどな
689:デフォルトの名無しさん
09/12/16 11:08:54
間違えることよりも、早期発見できるほうが重要だけどな。
他人の作ったコードもメンテすることあるし。
690:デフォルトの名無しさん
09/12/16 14:09:20
タイプミスばっかでげんなり
691:デフォルトの名無しさん
09/12/16 15:27:40
>>688
PL/SQL と並行してやってると、代入/比較どころか
文字列のクォーテーションまで間違うぜ!
692:デフォルトの名無しさん
09/12/16 16:10:07
他人に「定数は左に書こうぜ」とか言ってたらさらにキチガイじみてるな
693:デフォルトの名無しさん
09/12/16 16:11:16
他人の作ったコードのメンテで「定数は左に」って役に立つの?
右に書いてあるコードを全部左に置き換えてからコード読むとか?
694:デフォルトの名無しさん
09/12/16 16:17:45
「仕事じゃバカのコードもメンテしなきゃならないんだよ」理論の失敗例だな
695:デフォルトの名無しさん
09/12/16 18:25:03
vbの即時で文法ミス見つける機能が他の環境にもあれば そのうち実現するか
696:デフォルトの名無しさん
09/12/17 04:02:14
パソコンの時刻を2038年1月19日3時14分7秒の30秒前に設定して30秒後どうなるのかを誰か試してみてくれないか?
うちのパソコンでは何かうまくゆかないんだ
697:デフォルトの名無しさん
09/12/17 05:03:28
女の腐ったような回りくどさだな
どうせ30年弱の間には解決するだろ
698:デフォルトの名無しさん
09/12/17 08:04:46
何でC/C++スレで2038年問題を?
699:デフォルトの名無しさん
09/12/17 11:32:43
「C/C++スレ」ではなく「小心者スレ」だから
700:デフォルトの名無しさん
09/12/17 11:33:45
>>695
文法ミスじゃないから原因を特定しにくいバグになるんじゃないの?
だから、コンパイル時にエラーとなるように定数を左辺に置くという小技が出てきたわけで。
今は警告でるんだからそんな小技はデメリットしかないと思うよ
701:541
09/12/17 17:41:27
>>541で質問した者です。
検索の結果、やりたいことは「重複順列の列挙」と言うのだと分かりました。
また、列挙までのサンプルソースも手に入りました。
が、
あまりにも数字が多いので、必要のない物を出力前に除外しようと思い立ちました。
そこで質問です。除外条件で
・m桁目に2がある数値は除外
・0が5個以上連続している数値は除外
・左右反転して同一数値になるものは最初に出力した物以外出力しない
等々、どうやって条件付けしたらいいのか分かりません。
702:デフォルトの名無しさん
09/12/17 18:03:47
>>701
どういうものが必要ないかを俺が決めていいのかよ??
じゃぁ(ry
703:デフォルトの名無しさん
09/12/17 19:37:56
条件付けで処理が増える分、余計に遅くなるだけな気もするが。
704:デフォルトの名無しさん
09/12/18 06:40:17
選択整列法の平均比較回数が約N^2/4になるのはなぜですか?
705:デフォルトの名無しさん
09/12/18 10:50:35
平均っていうか、単純選択ソートの比較回数は固定のはずでは
706:デフォルトの名無しさん
09/12/18 10:59:38
選択ソートの比較回数は(N-1)*N/2じゃないの?
707:デフォルトの名無しさん
09/12/18 11:38:27
失礼、挿入整列法でした。
708:デフォルトの名無しさん
09/12/19 00:49:35
スレ違いかもしれないけど。
wiiyourselfとかwiiremoteなどのwii関係のC,C++用のライブラリーでとっつき安いライブラリのおすすめがある人いませんか?
自分の作ったVRウォークスルーもどきにヘッドトラッキングを導入したいんだけど。
709:デフォルトの名無しさん
09/12/19 01:22:28
>>707
俺最低。異物挿入法とか読んだ。どこに異物があるのか。
710:デフォルトの名無しさん
09/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 となる。
711:デフォルトの名無しさん
09/12/19 01:58:03
補足。
>各ステップにおいてどの位置に挿入することになるかは等確率
例えば最悪値で n-1 回比較するケースにおいて平均を考えると (1+2+...+(n-1))/(n-1) = n(n-1)/2/(n-1) = n/2
で大体半分。↑の式でも正確じゃないけどまぁオーダーとしては合ってるはず。
712:デフォルトの名無しさん
09/12/19 02:59:32
質問なのですが、投げられた例外の型ってどうやって判定してるんですか?
catchで分岐する時です。
静的に分かるものですか?
それとも実行時型情報みたいなの使うんでしょうか?
713:デフォルトの名無しさん
09/12/19 08:32:55
>>712
っ URLリンク(msdn.microsoft.com)
714:デフォルトの名無しさん
09/12/19 08:36:11
>712
静的には分からないので
>実行時型情報みたいなの
を使ってる。
g++ の場合だと正に std::type_info を使ってるらしい。
詳しく知りたい場合は BinaryHacks おすすめ。
715:デフォルトの名無しさん
09/12/19 14:51:07
try{
// コード
}catch(Exception1 e){
//例外1
}catch(Exception2 e){
//例外2
}catch(Exception3 e){
//例外3
}
716:デフォルトの名無しさん
09/12/20 16:14:52
#include <iostream>
using namespace std;
int main()
{
int n=100;
double k = 1.0/n;
for(double i=0.5;i >= -0.5; i-=k){
double x =0.0;
x = i;
cout << x << endl;
}
return 0;
}
これをコンパイルして実行したら0のところがe-16とかの小さい数になってしまいます。
原因を教えてください
717:デフォルトの名無しさん
09/12/20 16:18:46
>>716 URLリンク(www.kouno.jp)
718:デフォルトの名無しさん
09/12/20 17:25:17
>>717
ありがとうございます
0のところだけ別に入れます
719:デフォルトの名無しさん
09/12/20 19:23:07
>>716
0以外の場合は浮動小数点誤差が情報落ちして消えてしまうけど、
0の場合は誤差がそのまま有効な数値になるから。
で
cout << x << end;
を使わず
printf("%.2f\n", x );
を使えばいい
720:デフォルトの名無しさん
09/12/20 20:04:57
定数は左に、インド人は右に。
721:デフォルトの名無しさん
09/12/20 20:44:05
なつかしいなおいw
722:デフォルトの名無しさん
09/12/20 21:42:41
インド人は右ってどういう意味?
723:デフォルトの名無しさん
09/12/20 21:51:22
ハンドルは右
724:デフォルトの名無しさん
09/12/20 21:54:28
そういう意味か!!!
725:デフォルトの名無しさん
09/12/20 22:49:34
>>724 「インド人を右に」でぐぐれ
726:デフォルトの名無しさん
09/12/20 23:01:19
>>716みたいなのだと、100倍した値で計算して、表示の時に100分の1するのもいいかもな
727:デフォルトの名無しさん
09/12/21 01:03:47
別の言い方をすれば、ostreamで浮動小数点数を出力しようとするとprintfの%g相当ということだな。
<iomanip>をインクルードして、例えば
cout << fixed << setprecision(2) << x << endl;
と書けば、%.2f相当の出力になる。
728:デフォルトの名無しさん
09/12/21 22:37:27
VS2010β2のC++を使ってみました。
UInt32 aa;
aa = 0x12;
FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create);
BinaryWriter^ binWriter = gcnew BinaryWriter( fs );
binWriter->Write( aa );
binWriter->Close();
fs->Close();
作成したtmp.binが使用中のままになっているため、2回繰り返すとエラーになってしまいます。
Closeしただけではダメなのでしょうか?
すいませんがよろしくお願いします。
729:デフォルトの名無しさん
09/12/21 23:35:48
>>728
CLIの質問は大胆すぎるので別スレでどうぞ
730:デフォルトの名無しさん
09/12/21 23:38:00
>>728
エラーとはどういうこと?
次のように、単純に2回実行することを試したが、なんの例外も投げられることなく実行されるけど。
using namespace System;
using namespace System::IO;
int main()
{
UInt32 aa;
aa = 0x12;
{
FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create);
BinaryWriter^ binWriter = gcnew BinaryWriter( fs );
binWriter->Write( aa );
binWriter->Close();
}
{
FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create);
BinaryWriter^ binWriter = gcnew BinaryWriter( fs );
binWriter->Write( aa );
binWriter->Close();
}
}
731:728
09/12/22 01:08:58
>>730
すいません、他のサブルーチンがひっかけてました。
ありがとうございました。
732:デフォルトの名無しさん
09/12/22 01:35:39
>>731
そうそう、BinaryWriterのCloseは、大元のストリームもCloseすることになっているから、
fs->Close()は無くても平気だよ。もちろん、あっても害はないから気にしなくても全然問題ない。
733:デフォルトの名無しさん
09/12/24 02:58:29
すみません、
普通、構造体のインスタンスに、STLで見かける.size()メンバなんて有りませんよね?
URLリンク(marupeke296.com)
ここの「アニメーション上位レベル構造体」が「SetLoopTimeメソッド」で.size()されていて
そのままインスタンスを作ってコンパイルしようとすると、当然のように
>error C2228: '.size' の左側はクラス、構造体、共用体でなければなりません
と出ます。
この構造体は何か、普通と違った使い方をしているのでしょうか?
それとも私が、何か知らなければいけない事を知らないだけなのでしょうか。
734:デフォルトの名無しさん
09/12/24 04:52:19
>733
C++は詳しく知らないし、僕が昔使っていたときにはinterfaceなんてなかった気もするがおそらく
class CHighLevelAnimController : IHighLevelAnimController {
private:
vector<struct HLANIMATION_DESC> m_Amin;
CHighLevelAnimController operator=(CHighLevelAnimController& c) { return c; }
public:
CHighLevelAnimController() { }
~CHighLevelAnimController() { }
bool SetLoopTime(UINT, FLOAT);
...
};
CHighLevelAnimControllerクラスは、IHighLevelAnimControllerインターフェイスを継承(実装)して
m_Aminオブジェクトは、vector<>のようなテンプレートクラスのインスタンスとしてCHighLevelAnimControllerクラスまたはその基底クラスで定義されている
interfaceキーワードに詳しい人詳細キボン
735:デフォルトの名無しさん
09/12/24 05:39:46
>>734
Windowsでは、どこかのヘッダで#define interface structってされているだけ。
>>733
自分も、m_Animは実際にはなんらかのSTLコンテナか何かなのだと思う。
736:デフォルトの名無しさん
09/12/24 11:08:03
>>734 >>735
何か特別な使い方かと思いましたが、STLに包んでいるとかなのですね。
ありがとうございました。
737:デフォルトの名無しさん
09/12/28 16:13:02
すみません。
起動や大型のファイル群を読み込むなどで10秒前後待たせる時
画面にLoading表示やその進行状況を表示したいのですが、
あれはどう実装するものなのでしょうか?
普通に組むと1つの工程(ファイルなど)単位で処理が停止してしまいますし、
「Loading」「読み込み画面」などの検索ワードでは違うものばかりHitし、
実現方法を見つけられずにいます。 何かご助言を頂けると幸いです orz
738:デフォルトの名無しさん
09/12/28 16:24:50
マルチスレッド
739:デフォルトの名無しさん
09/12/28 16:57:06
1ファイルの読み込み途中の経過を出したいなら、読み込みの関数を呼ぶ度に進行状況のウィンドウを書き換える
740:デフォルトの名無しさん
09/12/28 17:13:38
>>738
ググってみました。マルチプロセス処理というものが有るのですね。
これで実現への道筋が見えました。ありがとうございました。
>>739
そうですね。その程度なら勉強〜開発時間を殆どかけずにやれそうですね。
ありがとうございました。
741:デフォルトの名無しさん
09/12/28 17:15:01
凝ったLoading画面を作るならマルチスレッドが楽
止まってないことだけ示したいなら、一部読み込んでは表示、を繰り返せばいい
742:デフォルトの名無しさん
09/12/28 17:15:41
マルチプロセスとマルチスレッドは一般的には別物だぜ
743:デフォルトの名無しさん
10/01/04 09:19:30
端折れば
マルチプロセス>メモリ空間が別
マルチスレッド>同じメモリ空間
744:デフォルトの名無しさん
10/01/04 14:01:26
HAL研のプログラミングコンテストの難易度をおしえてください。
ひととおり文法勉強したんですが、難しく思えます
745:デフォルトの名無しさん
10/01/04 18:35:29
2009年のを見たけど、C++を適切に勉強していれば(文法的には)難しくはないと思うけどな
最短経路問題とかその類のロジックを問う問題でしょ
文法が分からないのであればそれ以前のレベルってことだね
746:デフォルトの名無しさん
10/01/04 19:20:51
どうやらプログラミングではなく、アルゴリズムを競うコンテストっぽいね。
747:デフォルトの名無しさん
10/01/04 21:20:54
>>744
俺も去年の春からプログラミングを勉強し始めたばかりで参加してるけど
アルゴリズムを考えるだけだから文法がわかってれば何も難しくもなくね?
難易度はどうですかって質問の答えにはなってないとは思うけど
748:デフォルトの名無しさん
10/01/05 01:18:43
>>745
>>746
>>747
なるほど。じゃ用意されている関数を使えるレベルすらないので
もう少し勉強してからトライします。もう終わりそうですけど。
レスありがとうございました。
749:デフォルトの名無しさん
10/01/07 06:18:50
openmpはマルチプロセスにする方法はありますか?
750:デフォルトの名無しさん
10/01/07 14:17:20
const Hoge*
const Hoge&
Hoge const*
Hoge const&
の違いを実例を挙げて詳しく教えてください。
751:デフォルトの名無しさん
10/01/07 16:17:41
実例だったら自分で組んでみれば分かるだろ。
752:デフォルトの名無しさん
10/01/07 17:02:22
俺も
const&
の2つがよくわからん。
753:デフォルトの名無しさん
10/01/07 17:18:14
const Hoge& と Hoge const& は一緒だから気にするな
& を超えて Hoge& const になると変わる
754:753
10/01/07 17:19:46
ごめん
何かわけのわからんことを言った
参照はもともと変更不可だから Hoge& const のようなものは無かった
Hoge* const はある
755:デフォルトの名無しさん
10/01/07 17:30:50
>>754もちつけ。参照も変更可能。
#include <iostream>
int main() {
int a = 10, b = 20;
int &r = a;
std::cout << r << std::endl;
r = b;
std::cout << r << std::endl;
/*
int &const cr = a; // `const' qualifiers cannot be applied to `int&'
std::cout << cr << std::endl;
cr = b;
std::cout << cr << std::endl;
*/
int *const cp = &a;
std::cout << *cp << std::endl;
//cp = &b; // error: assignment of read-only variable `cp'
std::cout << *cp << std::endl;
return 0;
}
756:デフォルトの名無しさん
10/01/07 21:52:05
delete this;
って適切に現在?のオブジェクトを破棄してくれるのですか?
757:デフォルトの名無しさん
10/01/07 22:21:38
適切に使えば
758:デフォルトの名無しさん
10/01/07 23:39:12
>>755
>>753が言ってるのは「別のオブジェクトを指すように変更することはできない」ってことだよ。
Hoge&は最初からHoge*const相当で、参照にHoge*に対応するものはないんだから。
759:デフォルトの名無しさん
10/01/08 09:32:09
>>758
別のオブジェクトを指すように変更することはできない?
いつからそうなってんの?w
int a = 10, b = 20;
int &r = a;
std::cout << r << std::endl;
r = b;
std::cout << r << std::endl;
これを実行して確認しる。
760:デフォルトの名無しさん
10/01/08 09:33:45
>>758
あーごめんw 俺が狂ってた。
r = b;
これはひょっとして、代入されてるのか。
( つд∩)うえーん
( つд・∩)チラ
761:デフォルトの名無しさん
10/01/08 09:42:09
int a = 10, b = 20;
int &r = a;
std::cout << &a << ' ' << &b << std::endl;
std::cout << r << ' ' << &r << std::endl;
r = b;
std::cout << r << ' ' << &r << std::endl;
実行結果:
0x22cce4 0x22cce0
10 0x22cce4
20 0x22cce4
___
←樹海| オワタ
 ̄|| ̄ ┗(^o^ )┓三 >>753 >>758 両氏ごめん
|| ┏┗ 三
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
762:デフォルトの名無しさん
10/01/08 09:50:12
学校の課題で配列に10個の実数を入力して最大値と最小値を求める問題なんですが、最大値は正常に出力されますが、最小値がうまく出力されません。
#include<stdio.h>
int main (void)
{
float x[11];
float max,min;
int i;
printf("実数を10個入力してください\n");
for ( i = 1; i <= 10; i++){
scanf("%f",& x[i]);
}
max = x[0];
for ( i = 1; i <= 10; i++){
if (x[i] > max){
max = x[i];
}
}
min = x[0];
for ( i = 1; i <= 10; i++){
if (x[i] < min){
min = x[i];
}
}
printf("最大値は%fです\n",max);
printf("最小値は%fです\n",min);
return 0;
}
どこが原因なんでしょうか?
763:デフォルトの名無しさん
10/01/08 09:56:55
x[0]が未初期化
764:デフォルトの名無しさん
10/01/08 12:59:46
すみません。複数のクラスを辿りループ処理をするプログラムで
クラス毎に1度だけ変数の初期化をさせたい場合、
1.コンストラクタを使う (再初期化が必要になった場合、結局の後者いずれかが必要に・・?)
2.各クラスのグローバルスコープに初期化用のstatic boolを置いて処理
3.初期化用メソッドを別に作って纏めて管理
この3つが思い付くのですが、
どういう初期化が定番、もしくは設計的に無難だと思われますでしょうか?
765:デフォルトの名無しさん
10/01/08 13:29:43
staticイニシャライザじゃダメなの?
766:765
10/01/08 13:30:28
ごめんJavaと勘違いしてました
767:デフォルトの名無しさん
10/01/09 09:17:09
>764
辿るのはクラスなのオブジェクトなの?
初期化するのはクラス毎なのオブジェクト毎なの?
どんな処理しようとしてるのかが良く分からない。
擬似コードでいいから書いてみてくれた方が答えやすい。
「クラス毎に1度だけ」の条件を抜いた上で感覚で答えれば、
それが本当に「初期化」ならコンストラクタにすると思う。
状態の再設定が必要なら reset() みたいなメソッドも作るだろうね。
>各クラスのグローバルスコープ
言いたいのはクラススコープじゃね?
768:デフォルトの名無しさん
10/01/10 12:33:35
>>767
初期化じゃなくて再設定って言わないとですね;
>各クラスのグローバルスコープ
すみませんでした、そんなの無いですよね;
つい完成するまでは1行で済むクラスの置いてるソースファイルのグローバルスコープにstatic boolを置く癖から。。 表現に注意します;
そして、変数の再設定メソッドが良さそうですね・・ありがとうございました。
769:デフォルトの名無しさん
10/01/15 17:08:21
すみません。
「配列にはしたくない変数名の末尾」に数字を付けるのは、滅多に見ない気がするのですが、何か危険なのでしょうか?
以前はhennsuuA ..B ..C としていたのですが、最近はhennsuu1 ..2 ..3 とやっているのですが・・
770:デフォルトの名無しさん
10/01/15 17:10:45
そういう命名がふさわしい場合が滅多に無いから
771:デフォルトの名無しさん
10/01/15 17:16:39
a, b, c, 1, 2, 3 なんて機械的な命名ではなく、それぞれの変数の役目に合った意味のある名前を付けるべき
いい名前が思い浮かばないのなら変数名スレに相談してみては
772:デフォルトの名無しさん
10/01/15 17:22:51
単純に通し番号を振るのがふさわしいような場合は、普通は似たような処理をそれぞれ
の変数に適用するだろうから、素直に配列にすることが多いだろ。
配列はふさわしくないが通し番号がふさわしい、という場面が滅多に無いから、そういう
命名も滅多に見ないだけ。
で、その言い方だと頻繁に通し番号を振ってるようだから、やはり命名がおかしいか、
よほど特殊なジャンルで活動しているか。まぁ、後者ならこんな質問は出ないだろうと
思うので、多分前者だろう。
773:デフォルトの名無しさん
10/01/15 17:24:18
たまに通し番号が多発しやすいジャンルもあるから、何を作っててそういうコードに
なるのか知りたい気もする
774:デフォルトの名無しさん
10/01/15 18:12:39
>>770-773
ありがとうございます。危険性そのものは多分、無いのですね。
私のプログラミング能力の低さから来てる問題なのが大半だとは思います。
あとは、
変数1の値に応じて処理をわけ、変数2の値に応じて処理を分け と
どっちも1桁の数値だから配列にして置いてても良いのですが、
一応種類が全く違う2つなので、名前を別にしたいのですが
違い過ぎると使い間違えそうになるので・・とりあえずa, b, c, 1, 2, 3 と
やっちゃってました。
変数名スレッドなるものが有るんですね。 探して見てこようかと思います。
ありがとうございました。
775:デフォルトの名無しさん
10/01/15 19:05:36
まーゲームなんかだと変数名にシリアル振りたくなることはある
でも今時そこまでガチに汚く組まないと困ることはコンシューマでも珍しい
776:デフォルトの名無しさん
10/01/15 22:33:15
意味は異なるが関連のある変数?
なら構造体にするとか
777:デフォルトの名無しさん
10/01/16 17:07:00
ポインタを配列形式でアクセスするとき、添字に負の数を指定するのは文法上許されるのでしょうか。
int a[10];
int *p = a+5;
p[-4] = 0;
778:デフォルトの名無しさん
10/01/16 17:10:40
>>777
値の正負は文法上の問題ではないので、非負の値が許されるなら当然、文法上は、有効。
779:デフォルトの名無しさん
10/01/17 00:43:20
けどすごい紛らわしい書き方だな…
780:デフォルトの名無しさん
10/01/17 12:01:30
まぁ素直に*(p-4)=0と書いた方がいいわな。1[p]とかと似たような空気を感じる。
どうでもいいけど、-4[p]=0は試してないけど有効じゃなさそうだな、優先順位的に。
781:デフォルトの名無しさん
10/01/17 18:13:26
一連の流れでmalloc/freeを連想した
782:デフォルトの名無しさん
10/01/17 20:05:01
>>780
(-4)[p] なら大丈夫
783:デフォルトの名無しさん
10/01/17 20:17:49
そんな書き方、文法が許しても俺が許さん
784:デフォルトの名無しさん
10/01/17 20:38:04
コーディング規約とかで人のプログラミングスタイルを制限するのは
ナンセンスだと思っている俺ですら>>782はぶち殺したくなる
785:デフォルトの名無しさん
10/01/18 09:30:44
べつにいいやんw 一箇所だけとか、少ないときは。
きっと清涼剤のようにさわやかになれるぞ。
786:デフォルトの名無しさん
10/01/18 09:40:05
なれねーよw
787:デフォルトの名無しさん
10/01/18 21:22:34
マジックナンバーならまだ一目でわかるが
int a[10];
int *p = a+5;
int n = -4;
/* 数十行のコード */
n[p] = 0;
とかなってたら明確な悪意を感じる
788:デフォルトの名無しさん
10/01/19 20:40:13
すみません。
共通の変数50個を扱うデータクラスA(インスタンスは500個)に関連して
10種x1〜20の配列(ムラの激しい追加情報)が必要なのですが、
全部データクラスAに入れてしまうと、約190個x400インスタンス=76000個分ほどの変数は無駄になる計算で・・。
STLを使うなりクラスをバラにするなり考えているのですが
こういう場合、どうデータを管理するのが定番、妥当なのでしょうか?
789:デフォルトの名無しさん
10/01/19 21:05:01
たかが76000個くらい気にしない、というのも一つの解決方法
790:デフォルトの名無しさん
10/01/19 21:24:38
76000個のインスタンス一つは組み込み型程度なの?
とりあえず気にしないで作ってだめそうだったら工夫するとか?
76000個をヒープに取ったらまずい?
791:デフォルトの名無しさん
10/01/19 21:44:52
使うときに使う分だけ配列を確保すればいいんじゃね?
792:デフォルトの名無しさん
10/01/19 23:57:49
それは本当に配列でなければいけないの?
793:デフォルトの名無しさん
10/01/20 01:55:58
>788
>共通の変数50個
この段階でクラスの切り分け方ミスってるような気もするが。
追加情報については STL のコンテナ使うなり(コンテナの選択は追加、削除、検索の発生の仕方次第)、
適当なクラスにラップするなり、ケース次第だと思う。
追加情報に対して単なるコンテナ以上の操作が必要ならばクラスにラップするかもね。
794:デフォルトの名無しさん
10/01/22 19:56:01
>>789-793
ありがとうございます。巻き添えらしいアクセス制限で返事が遅れてすみません。
今は、言われてみれば数十KB位のようですし、そのままデータクラスAに入れて使う事にします。
問題になってきたらご助言を参考に改良したく思います。
ありがとうございました。
795:デフォルトの名無しさん
10/01/27 13:10:49
すいません。
DIRECT法(DIviding RECTngle)のプログラムを組むことになったのですが、
どうにもとっかかりが無くて困っています。
おおよその理論は分かっているのですが、形にすることが全くできません。
ググって見たりはしたものの、それらしきプログラムソースは落ちていませんでした。
助けていただくことはできますでしょうか?
796:デフォルトの名無しさん
10/01/27 13:36:39
>>795
ググると普通にあるけど…?
ソースが欲しいって訳?
797:デフォルトの名無しさん
10/01/27 18:44:46
>>796
ソースがあれば、いただけると幸いです。
798:デフォルトの名無しさん
10/01/29 17:20:14
795
どなたかお願いします。
書き忘れましたが、C++です。
本当に困ってます
799:デフォルトの名無しさん
10/01/29 17:43:15
留年したまえ
800:デフォルトの名無しさん
10/01/29 17:53:41
>落ちていませんでした
こういうこと書かれると手伝う気うせる
801:デフォルトの名無しさん
10/01/29 20:13:46
>>800
なんでだよw
802:デフォルトの名無しさん
10/01/29 20:25:14
>>801
なんでだよじゃねえだろ。失礼甚だしい
803:801
10/01/29 22:04:27
>>802
まあ・・・確かに落ちているという表現はあまり良くなかったかもしれんな。
ま、その辺は本人がきっと弁明するということで。
804:デフォルトの名無しさん
10/01/29 22:32:16
>>803
お前がその本人だろ・・・
何しれっと他人の振りしてんだよ
805:デフォルトの名無しさん
10/01/30 00:01:15
>>804
いや別人だから失敬な。
まあ何だっていいけど。
証明方法がないもんなぁ。
806:デフォルトの名無しさん
10/01/30 16:20:48
795です。
ご指摘の通り「落ちている」という表現は悪かったと反省してます。
ただ本当に困っています。どなたか助けてくれる方いましたら
本当にお願いします。
807:805
10/01/30 16:26:09
>>806
このスレには低能力者しかいないから
別のスレ(スレリンク(tech板)とか)
に行ってみたらどうでしょうか?
> 証明方法
fusianasanがあったか。
でもまあ晒したくないからやめとこう。
808:805
10/01/30 18:03:11
>>806
言い忘れたが、常識で考えてくれ。
このままだとマルチポストになるぞ。
どっちかでは別スレに行ってきますと断りをいれましょう。
809:デフォルトの名無しさん
10/01/30 18:25:36
すいませんでした。別スレ行きます
810:デフォルトの名無しさん
10/01/30 19:22:32
. ____
_ | (・∀・) |
`)) | ̄ ̄ ̄ ̄
´ ∧
<⌒>
/⌒\
_________]皿皿[-∧-∧、
/三三三三三三∧_/\_|,,|「|,,,|「|ミ^!、
__| ̄田 ̄田 / ̄ ̄Π . ∩ |'|「|'''|「|||:ll;|
/__,|==/\=ハ, ̄ ̄|「| ̄ ̄ ̄ ̄|「| ̄ ̄|
/_| ロ ロ 「 ̄ ̄ ̄ | | 田 |「| 田 田 |「|[[[[|
|ll.|ロ ロ,/| l⌒l.l⌒l.| | |「| |「|ミミミミミミ
811:保守
10/02/06 11:57:12
URLリンク(exlight.net)
C++の初期化指定は複雑
C++の初期化は恐ろしく複雑になってて,
struct S {
int a;
static int b;
int c;
} s = { 1, 3 };
と書いたらs.a = 1,s.c = 3と初期化されるなんてルールも決まっている.あんまり深入りしないでおこう….
812:デフォルトの名無しさん
10/02/06 13:12:32
複雑というより落とし穴だらけ、という感じだな
813:デフォルトの名無しさん
10/02/06 14:04:51
>>811
まあねえ
静的メンバは外で定義しないといけないしね
そうしないとコンパイラから叱られる
814:デフォルトの名無しさん
10/02/06 17:21:56
だが、スタティックメンバ変数程度で*恐ろしく*複雑ってのは、さすがにどうよ?
そりゃCよりは複雑だけど、C++に限らず、いまどきの言語でクラス変数使ったら
同じような状況になるし、少なくともスタティックメンバ変数の初期化ルールは
*恐ろしく*なんて形容されるほどじゃないと思うんだが。
ついでに聞きたいんだけど、C++に限らず、みんなが「こいつは複雑だ」と思った
言語仕様ってある?
例えば多重継承とかテンプレートとかは複雑?簡単?
815:デフォルトの名無しさん
10/02/06 17:49:22
テンプレートの部分特殊化のルールは複雑だと思う
816:デフォルトの名無しさん
10/02/06 17:50:05
あとADLは時々わけがわからなくなる
STLが吐く長いエラーメッセージはさすがに慣れたけど
817:デフォルトの名無しさん
10/02/06 17:55:31
ヘッダに const 定義しても ODR にならない場合のルールは複雑だ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4854日前に更新/246 KB
担当:undef