[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 01/28 12:32 / Filesize : 120 KB / Number-of Response : 460
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレを勃てるまでもないC/C++の質問はここで



1 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 20:07:25 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

175 名前:デフォルトの名無しさん [2007/01/24(水) 23:13:41 ]
>>174
VC++2005ExpressEditionでwin32アプリケーションを作るには
www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
↑で環境をもうちょっと追加しなければならない。

ちなみに
.NETアプリってのはCLRとか書いてるやつね

win32のウインドウアプリも、コンソールアプリもC++でかけるんだけど、
window.hをインクルードしたり、スタートが WinMain関数だったり、ちとちがう。
www.kumei.ne.jp/c_lang/
↑のWindowsSDK編ってとこ読むといい。長いしめんどくさいけどね。
VC++2005ExpressEditionではちょっとメニューのエディタないからよけい大変

WindowsSDKでの開発がめんどくさいから
MFCだとか、VisualBasicとかもっと簡単にウインドウ出せるアプリ作れるものが出来てきたんだよ。
.NETアプリならVC++2005でも視覚的にウインドウアプリ作れるんだけどね。

176 名前:174 mailto:sage [2007/01/24(水) 23:45:24 ]
>>175
丁寧な説明ありがとうございます。

>VC++2005ExpressEditionでwin32アプリケーションを作るには
>www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
>↑で環境をもうちょっと追加しなければならない。
早速入れました。

>win32のウインドウアプリも、コンソールアプリもC++でかけるんだけど、
>window.hをインクルードしたり、スタートが WinMain関数だったり、ちとちがう。
>www.kumei.ne.jp/c_lang/
>↑のWindowsSDK編ってとこ読むといい。長いしめんどくさいけどね。
>VC++2005ExpressEditionではちょっとメニューのエディタないからよけい大変
>

やってみようと思います。

>WindowsSDKでの開発がめんどくさいから
>MFCだとか、VisualBasicとかもっと簡単にウインドウ出せるアプリ作れるものが出来てきたんだよ。
>.NETアプリならVC++2005でも視覚的にウインドウアプリ作れるんだけどね。
>

わかりました。
CLRも考えようかと思います。


177 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 00:46:29 ]
質問です、以下の構造体があったとします↓
struct Test{
int nMem;
char strMem[20];
};
上記の構造体に、関数をひとつ追加します。
struct Test{
int nMem;
char strMem[20];
void Clear(){
nMem = 0;
strcpy(strMem, "");
}
};
そして両者のsizeofをとってみたのですが、両者とも24バイトとなりメンバ関数によるサイズの増大が見られません。
これは、コンパイラがTest::Clear()の呼び出しを該当するメモリアドレスに置換しているからなのでしょうか?
多分そうだと思うのですが、参考となるようなものが無く………詳しい方、宜しくお願い致します。

178 名前:177 mailto:sage [2007/01/25(木) 00:47:31 ]
追記です、実行環境はVS2003、VS2005、BCCです。

179 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 02:54:53 ]
>>177
メンバ関数も、機械語のレベルにすれば単なる関数であることに変わりはない。
Cで擬似的に書けばこんな感じになる。
struct Test {
  int nMem;
  char strMem[20];
};
void Test_Clear(Test* this) {
  nMem = 0;
  strcpy(strMem, "");
}

180 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:58:29 ]
C++の例外の使い方を解説した参考書で、オススメのものを教えてください。

文法自体の解説ではなく、使いこなしのテクニックなどについてです。


181 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 01:00:56 ]
>>180
例外の落とし穴的なことなら Exceptional C++ にあるよ。

# もし持ってないんだったら C++ 使いとして C++ in-Depth Series は
# 揃えておくことをオススメするですよ。

182 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 14:17:33 ]
>>181
ありがとうございます。

洋書には、知っておくべきノウハウの本があるのに、
和書には、言語仕様の解説本しかないんですよね。
洋書で足りてるから書く必要がないのかもしれないけど。

183 名前:177 mailto:sage [2007/01/26(金) 15:34:18 ]
遅れてしまいました、179さんありがとうございます。



184 名前:デフォルトの名無しさん [2007/01/28(日) 03:25:47 ]
メインで作ったポインタをオリジナル関数内で配列領域を宣言するときはどう関数を受け渡せばいいのでしょうか。

void o(int **mem)
{
int i;
mem=(int **)calloc(10, sizeof(int));
for(i=0; i<10; i++)
mem[i]=(int **)calloc(10, sizeof(int));
}

int main()
{
int **mem;
o( );//この部分
}

185 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 04:06:30 ]
>>184
void o(int ***mem)
{
int i;
*mem=(int **)calloc(10, sizeof(int));
for(i=0; i<10; i++)
(*mem)[i]=(int **)calloc(10, sizeof(int));
}

int main()
{
int **mem;
o(&mem);//この部分
}

186 名前:デフォルトの名無しさん [2007/01/28(日) 04:11:30 ]
>>185
それはやったのですが、
o内で数値を代入して、
メイン側でその数値を使おうとすると反映されていないみたいでエラーが・・・。

187 名前:デフォルトの名無しさん [2007/01/28(日) 04:15:23 ]
>>185
後コンパイル時に引数が異なるというエラーが。

間接参照のレベルが 'int ***' と 'int ****__w64 ' で異なっています。
仮引数および実引数と異なります。

188 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 04:16:17 ]
>>186
だったらここだろ

void o(int ***mem)
{
int i;
*mem=(int **)calloc(10, sizeof(int *));
for(i=0; i<10; i++)
(*mem)[i]=(int *)calloc(10, sizeof(int));
}

ちなみにどんなエラーが出たのか明記しないとわからん

189 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 04:17:31 ]
>>187
メインで int ***mem; とやってるんじゃないか?

190 名前:デフォルトの名無しさん [2007/01/28(日) 04:22:36 ]
>>188
完走しました。
ありがとうございました。

>>189
それはなかったです。

191 名前:デフォルトの名無しさん mailto:age [2007/01/28(日) 06:52:30 ]
フリーウェアで、
クラス図を作れるものってありますか?

192 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 08:24:55 ]
C/C++の質問しろよ
umlmemo

193 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 08:29:20 ]
doxygen



194 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:07:10 ]
JUDE Community

195 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:33:04 ]
>>192-194
ありがとうございました。

>C/C++の質問しろよ
はい、すみません。

196 名前:デフォルトの名無しさん [2007/01/28(日) 17:09:42 ]
void qsort ( void* base , size_t nmemb , size_t size, int(*compar)(const void *, const void *) )

↑のを自作で作りたいのですが、誰かサンプルを作っていただけないでしょうか?
初心者でスマソorz

197 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:14:38 ]
www.google.co.jp/search?q=qsort.c
好きなのを持ってけ

198 名前:デフォルトの名無しさん [2007/01/28(日) 17:20:36 ]
C++でゲーム制作プログラミング勉強しようと思ってるのですが
おススメの参考書を教えていただきたいです。
本屋に行ったのですが、何を買えばいいかわからずに退散してきましたorz
要望を挙げれば実際にゲーム制作しながら学べるような参考書。
RPGではなくアクションゲーに重きを置いた参考書を望んでいます。
プログラミング経験はJAVAを2年ほど、Perlを授業でかじった程度です。
よろしくお願いします

199 名前:デフォルトの名無しさん [2007/01/28(日) 17:21:54 ]
>>197
どれが自作のやつかよく分かんないですorz
ほんと無知でスマソ

200 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:40:28 ]
ちみの云う「自作」の概念がよく分からないな。
チミが作ったわけじゃねーから、みんな他作だろう?

201 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:47:16 ]
ワロタ

202 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 18:08:28 ]
>>184
なんか見ていてクラクラしてくるコードだなぁ。
サイズが固定なら配列を使ったほうがいいんじゃないか。

>>196
正しい日本語で。
qsortの使用例 と qsortの実装例 のどっちが欲しいの?

>>198
問題をしっかり切り分けよう。

ざっと乱暴に分けただけでも、
□ C++
□ OSのAPIのうち、ゲームで使うものについて
□ ゲーム特有のアルゴリズム
という3つに分けられる。

それぞれ独立した話なので、それぞれ別々に学んだほうがいい。

このスレで質問すべきなのは、
「Javaをある程度やった人にオススメのC++の教科書を教えてください」
ということだよ。

で、Javaを2年もやったのであれば、入門書的なのは無駄が多い。
まずは、↓のような簡単なものでいいので、CとC++の文法の概要を、軽く読む。
ttp://www5c.biglobe.ne.jp/~ecb/c/c00.html
ttp://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html
その上で、C++の有名な参考書群を読めば習得は速い。


203 名前:196 [2007/01/28(日) 18:21:24 ]
>>202
すみません。実装例の方です



204 名前:198 [2007/01/28(日) 21:01:49 ]
>>202
色々と詳しく教えていただきありがとうございます
とりあえず教えていただいたサイトを見て基本的な所を理解してから
参考書を購入して勉強しようと思います。
ありがとうございました

205 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:02:45 ]
>>203
GNUのglibcとか、
マイクロソフトならVC++に付属のCランタイムのソースコードとか。


206 名前:デフォルトの名無しさん [2007/01/28(日) 21:23:48 ]
#include "DxLib.h"

struct CharaData{
int x;
int y;
int mae,hidari,migi,tama;
};

struct CharaData jikidata;

int jikinomuki=0;
int statusboard=LoadGraph("StatusBoard.png");

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(TRUE);// ウインドウモードに変更
SetGraphMode(600,480,16);//ウィンドウの大きさ
if(DxLib_Init()==-1) return(-1);//DXライブラリ初期化

WaitKey();
DxLib_End();//DXライブラリ終了
return(0);//終了
}


エラーがでてないのにウィンドウが表示されません。
PCの動作が重くなっているので実行はされてると思うのですが・・・
誰かわかる人いましたら解決策を教えてください OTL

207 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 23:37:23 ]
ChangeWindowMode(TRUE);
SetGraphMode(600,480,16);
はDXライブラリの関数だろ?だったら
if(DxLib_Init()==-1) return(-1);//DXライブラリ初期化
の後に書くんじゃないか?
順序立てて考えて問題箇所を洗い出せ

208 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 23:41:39 ]
int statusboard=LoadGraph("StatusBoard.png");

これはヤバいんじゃないか?
WinMainよりも前に実行されるぞ。

209 名前:デフォルトの名無しさん [2007/01/29(月) 08:50:37 ]
Choge hoge = new Choge();



Choge hoge;

は何が違うんでしょうか?

ヒープ領域とスタック領域の違いでしょうか?
どう使い分けたらいいでしょうか?

210 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 10:55:12 ]
>>209
前者はdeleteする必要がある。
そのクラスが巨大でないのなら、後者で充分。
巨大であるとかクラスの特性上必要があるとかで前者を使うのなら、auto_ptrの使用を検討したほうがよりよい。

211 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 12:10:01 ]
Choge* hoge = new Choge();

ではなくて

Choge hoge = new Choge();

なのであれば、それはメモリリークしている可能性があるよ。
Choge hoge ;
Choge* p = new Choge() ;
hoge = p ;
ただし、Choge::operator=(const Choge* p) が存在する、気持ち悪いクラスの場合だが。

212 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 13:14:13 ]
>>211

>Choge hoge = new Choge();
>
>なのであれば、それはメモリリークしている可能性があるよ。

そもそもコンパイル通らないんじゃないか?


213 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 15:27:32 ]
Cについて質問です。
double型変数をfprintfで小数点以下の有効数字全てを表示したいのですが、
どのようにすればよいでしょうか。

今は%.20leとか適当な数字で表示させています。
できれば%lfの形式で表示したいのですが。




214 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 16:30:09 ]
>>213
%.20gじゃダメ? 値が適当な範囲ならf形式で出るけど。

215 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 17:53:53 ]
#define isupper(c) ( (c) >= 'A' && (c) <= 'Z' )

↑これ、パラメータが2箇所で評価しているんですけど、
 問題ですか?普通に使えるような気がボクはするんですが...



216 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:05:21 ]
>>215
ASCIIのようにアルファベットがリニアに並んでいる環境なら使えますね。
評価の副作用がある点に関しては、関数の引き数に副作用の起きるようなコードを書く香具師が阿呆なので
ドキュメントに明示してあれば問題ないでしょう。

217 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:15:26 ]
>>216

>ASCIIのようにアルファベットがリニアに並んでいる環境なら使えますね。
>評価の副作用がある点に関しては、関数の引き数に副作用の起きるようなコードを書く香具師が阿呆なので
>ドキュメントに明示してあれば問題ないでしょう。

はい。ありがとうございます。
ついでで恐縮ですが、
副作用の起こる使い方ってどんな風な使い方ですか?

218 名前:215 mailto:sage [2007/01/29(月) 18:18:40 ]
>>216-217
自己レスですみません。
isupper(c = getchar())
↑こういうことですね?


219 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 18:25:15 ]
>>218
こういうのもです。
isupper(c++);

220 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 19:21:07 ]
>>219
そういうことですか。
ありがとうございました。

221 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 20:31:59 ]
まったくどうでもいことだが、範囲比較は想定される数直線的に並べるべきだと思う。
具体的には 'A' <= (c) && (c) <='Z'

222 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 20:51:30 ]
>>221
全くどうでもいいことだが、比較対象を左辺に置くのが一般的だと思う。
#いや、どちらでもいいけどさ。

223 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 21:00:33 ]
>>216
> 評価の副作用がある点に関しては、関数の引き数に副作用の起きるようなコードを書く香具師が阿呆なので

違う!

こういうのをマクロでやるのがアホ。
今時のコンパイラはインライン関数でも最適化されるので、副作用とか型チェックのないマクロを使う必要性はない。



224 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 21:26:36 ]
>>223
↓こういったのはどうですか?

arrは配列のポインタを設定。
#define ARR_SIZE(arr) ( sizeof(arr) / sizeof(arr[0]) )


225 名前:213 mailto:sage [2007/01/29(月) 21:30:24 ]
>>214
上手く表示できました。
ありがとうございます。


226 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 21:35:04 ]
>224
それはポインタ突っ込んでドツボにはまる香具師が必ず出てくるので有名なマクロだな。
しかし、コンパイル可能な副作用のある式を突っ込むのは難しくないか?

まー、おいらはstd::vector使うからいーけどさ。

227 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 21:54:10 ]
>>223
違う!

#define isupper('A'<=((c)%220%156%91))

こうするのが正しいやり方だ!

228 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 21:56:37 ]
>>224
template でゴニョゴニョすれば代わりになるものが作れるけど、
これに関しては移植性の高いマクロのほうが好きだな。

229 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 21:58:56 ]
>>227
('A'<=

頬に突き刺さってて痛そうだよな

230 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:03:09 ]
これじゃ、アッパーじゃなくてフックだな。

231 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:27:09 ]
>>224>>227
C++ならboost::sizeはだめか?<boost/range/size.hpp>

232 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:32:38 ]
>>231
boost::size じゃ、>>227 の速度性能には及ばんだろ、多分。

# メンテナンス性は最悪だけど。

233 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:36:08 ]
boost::sizeもO2あたりの最適化を書けてやれば定数に収束するんでねーの、たぶん。



234 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:46:13 ]
>>233
一回しか比較を実施しないロジックに対し速度で対抗しようとしたら
あとはもうテーブルでも用意するぐらいしかないぞ。

235 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:56:53 ]
比較と剰余のどちらのコストが高いかは議論たり得る。

236 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 23:03:11 ]
じゃ、おいらは 
#define isupper(c) ((unsigned)((c)-'A')<26U))
で対抗しちゃる。

237 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 23:03:26 ]
そうだな。一般的には剰余のほうが速いだろうけど、そうじゃない環境もあるかもね。

238 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 23:06:15 ]
>>236
お、これなら環境を問わずに最速なんじゃね?

239 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:53:05 ]
fgetcで読み込んだファイル(c)の文字を判定して印刷可能文字ならそのまま出力
それ以外なら空白を表示するプログラムを作っていたのですが
while((c = fgetc(fp)) != EOF){
if(isprint(c) != 0){
buf[n] = c;
n++;
            }
else{
buf[n] = ' ';
n++;
}
if(n % 16 == 0){
puts(buf);
for(n = 16;i >= 0;n--){
buf[n] = ' ';
}
n = 0;
}
}
この状態で出力すると16文字目の後にバグのような文字がでてきてしまいます。
いろいろ考えてみたのですが原因がわかりませんでした。どうにかしてこのバグを消す方法はないでしょうか?
Win XPでBorlandを使用しています。

240 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:55:43 ]
連投失礼します。
for(n = 16;i >= 0;n--)ではなく for(n = 16;n >= 0;n--)
でした。よろしくお願いしますm(--)m

241 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 01:01:38 ]
文字列の終端はナル文字をうめましょう。●4点

242 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 07:34:48 ]
ぬるぽ

243 名前:がっ mailto:sage [2007/01/30(火) 07:39:54 ]
ちんぽ



244 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 09:00:18 ]
                    _,ィ、  ,r、__
                ,.ヘー'´  i `´/  `i_
            /ヾ、 ヽ、 i /   /ヽ
              _ィ、〉   > ´ ̄  ̄ ` く  ,ゝ、
          }、 ,>'´        、  ヽ./`ヽ
          ┌! /    /  i 「`i   ヽヽ ヽ   }
            Y     !   | |  l i i   l i  ',__,.ゝ
          ,'     |  | |   !l l   | l  l !
           i   !   |   | |   | j___j |  |i i!
           |i!  l  ,.|‐T丁i!   ハlj, --!`トlノ、||
           | !  !  レ'i´ミj    "i´ミ iヽ, i ||  _
           | l  |i   iバ__ソ     L__ソ /.ノ |! _ヽ)
           | |  |l  |、//// '  ///// |! |i ヽ)
           !ハ |!  |,ゝ' ´ ̄ ̄ ` く  レy'|!
          __,ノ レ'ヽiハ /             \}'´ ̄ `ヽ、
    ィ´ ̄/    ,べY                   Y`i__    \
    〉/    / , 、ヽ             /_`ヽ\    \
   ,ィ'ん、  / ! '´__ ヽ             /´__,.` ', \   ァ'`
   `ヽ、/ー'   /!   __`ヾ!           レ'´ _,.  !   \ i
    /ー-ィ、 ィ__!  ___`フ         /  ヽ二  /7  _i弋
   /    辷j  !   ヽ      / /    /  / }  j´  〉
    ヽ、   冫 ヽ__ュ_y\    /   /     /ヽヘ/え´   /



245 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 12:19:11 ]
>>239
・putsの仕様を確認すべし。
・下手な小細工しないでputcharとかfputcを使ったほうがいいぞ。
・そのコードだと16文字に満たない分が出力されないぞ

246 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:13:41 ]
>>239
> for(n = 16;n >= 0;n--)
17 回実行されるよね。

247 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:31:01 ]
>>221-222
そのような「べき」も「一般的」もありません。

>>230
感服しました。

248 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 17:09:56 ]
数直線を意識しない奴は、素養がない。

249 名前:239 mailto:sage [2007/01/30(火) 19:23:13 ]
>>241,245,246
助言ありがとうございます。
いろいろと試してみたらどうにか動きました。
お手数かけました。

250 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 19:23:52 ]
なんか不安w

251 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 19:34:31 ]
適当に試行錯誤して動いたらOKという人は、C言語を使うべきではないね。

たまたま偶然、自分が見た範囲内で問題なく動いているように見えるだけ、というのは勘弁して欲しい。

252 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:58:00 ]
>>248
自然言語で読みやすいように書かない香具師はカス。
Ex.
if (NULL = fp) ...

253 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 07:54:30 ]
>>252
それはコンパイルエラーだろ…常識で考えて。
if(NULL == fp)って書きたかったんだろうけどさ。

俺はいっつも右辺にリテラルを入れる派。



254 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:41:40 ]
>>253

252の挙げている例は、

==を間違って=にしてしまっても、コンパイラがエラーを出してくれるので安全だから、定数は左辺に書け

という、コンパイラが警告を出さなかった時代の人達のクソッタレなコーディングルールを、
今だに実践しているダメな人のことを言っているのだと思うよ。

255 名前:デフォルトの名無しさん [2007/02/01(木) 22:04:13 ]
C++勉強始めて一週間ほどの超初心者なんですが、
定数(const)ってしっかり覚えた方が良いでしょうか?
それとも あ〜そんなのあったね。くらいで良いでしょうか?
そりゃ覚えるにこした事は無いと思いますが、なんかイマイチ頭に入らなくて

256 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:05:31 ]
constごときでそんなに苦労するの?

257 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:08:10 ]
覚えられなければ参考書とかグーグルで
すぐ答を引っ張り出せるようにはしておけ

258 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:18:30 ]
ややこしいのもあるから
const char * const s = "ssssss";
とか
class M {
    int i;
  public:
    void setInt(int i) { this->i = i; }
    int getInt() const { return i; }
};
こういうのは後回しでもいいかもしれんね。

259 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:31:54 ]
>>255
まだ、勉強始めて一週間ってことだったら、いますぐじゃなくてもいいとは思うけど。
でも、後からでもいいから const は絶対に覚えておけ。

260 名前:255 [2007/02/01(木) 23:01:13 ]
親切にお答えいただきありがとうございます。
定数は絶対に変えられない!程度に覚えておき、追々勉強していこうと思います

261 名前:デフォルトの名無しさん [2007/02/02(金) 00:20:10 ]
c++でグローバル領域において
const double TEISU = 0.05;
とかにして,VS2005でTEISUにマウスカーソルを合わせると
「static const double TEISU」
って表示されるんだけど,勝手にstaticを付けられてるってこと?

int型だとこうはならないんですけど

262 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:09:58 ]
そんな感じ。
C++の名前空間内(含グローバル空間)でのconstはexternを付けない限りstaticと同じ内部リンケージを持つ。
(特に整数型において)ヘッダで初期化して定数として使えるようにするため。

263 名前:デフォルトの名無しさん [2007/02/02(金) 11:26:29 ]
あるn次元空間において、全ての点から遠くなるような点(最遠点)の効率のよい計算方法を探してます。
ただし、最遠点の範囲はそれぞれの軸で決まっていて、

例えば下図のような2次元空間上でこのように点があった場合、
赤点の位置を算出したいのです。

ttp://kjm.kir.jp/pc/?p=29115.gif
ttp://kjm.kir.jp/pc/?p=29117.gif

上の場合は、点が偏っているために範囲ぎりぎりの点が選択されてる様子で、
下は周囲に点が偏っているので中央が選択されてる状態です。

このような点を探索する場合は、
全ての座標において点までの距離を計算し、最も遠くなるような座標を求める、
みたいな総当たりで調べていくしかないのでしょうか。
それともなにか効率のよいアルゴリズムはありますか?



264 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 13:42:23 ]
>>263
点に接する円の径を最大化するように円の中心点を範囲内にとればいいのかな?
最急上昇法を使うのはどう?
ローカルマキシマムに気をつけないといけないけど

265 名前:263 [2007/02/02(金) 15:24:35 ]
>>264
つまりこういうことでしょうか?

ttp://kjm.kir.jp/pc/?p=29123.gif
ttp://kjm.kir.jp/pc/?p=29124.gif

3次元以上に使えるのかが分からないのですが、ひとまず調べてみようと思います。
回答本当にありがとうございます。

266 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 15:50:57 ]
点が疎な領域で風船(円)を膨らましていくイメージじゃないの?
3次元以上でも使える。

267 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 16:02:02 ]
>>255
constがらみの文法は、わかりにくいですね。
他の人も言っているように、アンチョコを作りましょう。

頭の中に記憶しておく必要はないのです。
あやふやな記憶に頼ってコーディングをするのは、とても愚かな行為です。
(セキュリティのために、裸一貫でしか入退場できない場所での仕事は別だが・・・)

constはちゃんと理解して使えるようにならないと、
他者の書いたコードやライブラリを使うことができません。

>>258
自分はtypedefを使って、なるべくわかりやすくするよ。
typedefを勝手にやるな! というルールのところもあるけどね。



268 名前:264 mailto:sage [2007/02/02(金) 16:56:55 ]
>>265
言いたかった事は>>266
kjm.kir.jp/pc/?p=29126.gif
kjm.kir.jp/pc/?p=29127.gif
これはローカルマキシマムにはまった例
kjm.kir.jp/pc/?p=29128.gif

269 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 21:09:52 ]
とりあえず適切に荒くマス目に区切って総当たりし、
その中から有望そうな部分についてマス目を細かくして総当たりし、
さらにその中から・・・

という具合に、ニュートン法みたいに繰り返していくのが無難そうよ。


270 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 22:21:45 ]
配列の宣言において、要素数にキーボードから入力した値を用いるにはどうすればよいでしょうか?

271 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 22:30:36 ]
配列は静的に確保しなきゃいけないから無理
vector使え

272 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 22:51:59 ]
>>270

int int_array[
#include "CON"
];

これでおk。

273 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 00:04:54 ]
>>270
// for C(99)
int num = キーボードから入力する関数();
AnyType_t array[num];
// for C++
// use std::vector.
// for (regacy)C
// try malloc() / free().



274 名前:270 mailto:sage [2007/02/03(土) 00:09:48 ]
>>271,272
ありがとうございます。
説明不足で申し訳なかったのですが、
C++ではなく、Cで実現させたいのですが、
>>271のおっしゃる通り不可能なのでしょうか?

275 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 00:11:11 ]
>>274
>273






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<120KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef