1 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:02:46 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/
281 名前:274 mailto:sage [2007/06/14(木) 16:35:11 ] え、改行が多すぎる? 1行毎に改行を入れているつもりではないけど、結果的に、そうなっちゃってるねぇ。
282 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 16:39:45 ] 多すぎるよ。意味の区切れでもないのに空行なんか要らない。
283 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 17:35:12 ] こまけーw
284 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 22:29:39 ] >>274 個人的にはインデントが無い前提なら、このぐらいの空行のが見やすい。 まぁ人それぞれじゃね?
285 名前:デフォルトの名無しさん [2007/06/14(木) 23:15:35 ] TSearchRec Sr; int Attributes = faAnyFile;//検索対象とするファイルの属性 if (FindFirst(CDirectoryOutline1->Directory+"\\*.mp3", Attributes, Sr) == 0) { do { if ((Sr.Attr & Attributes) == Sr.Attr) { ListBox1->Items->Add(Sr.Name); //Sr.Sizeでファイルのサイズを取得できる i=i+1; max=i; } }while (FindNext(Sr) == 0); FindClose(Sr); } 環境 Windows XPsp2 C++Buileder6.0 CDirectoryOutlineで選択したフォルダ内にあるmp3ファイルのファイル名をListboxに表示させたいと思っているのですが、 ファイルを選択→右クリック→プロパティ→全般タブ→詳細設定 の、 「内容を圧縮してディスク領域を節約する」 にチェックの入っているファイルが表示されません。 分かる方いましたら解決方など教えてくださいm(__)m
286 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 23:17:23 ] VC++.NET2003を使っています。 CPointをint型に入れたいのですがどのようにすればよいのでしょうか。 どうか、教えてください。
287 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 23:21:06 ] CPoint pt(10, 20); int n = pt.x << 16 | (0xFFFF)pt.y;
288 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 23:21:25 ] 無理言うな
289 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 23:22:03 ] ちがった、こうやりたかった。 int n = pt.x << 16 | (0xFFFF & pt.y);
290 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 23:23:27 ] CPoint pt; int x = pt.x; int y = pt.y;
291 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 23:27:13 ] >>287 >>288 >>289 >>290 ご返答、ありがとうございます。 あの、int x=みたいな初期値を設定するようなやり方じゃなければ 入れることが出来ないのでしょうか?
292 名前:デフォルトの名無しさん mailto:sage [2007/06/14(木) 23:34:31 ] そんなことは無い。 単に変数宣言せずに書くのが嫌で、 2行に分けるのが面倒だっただけだと思うが。
293 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 00:33:24 ] >>292 そうでしたか。 ここまでのお付き合い、本当にありがとうございました。
294 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 01:01:20 ] 最近C++の勉強をはじめたのですが、どうもCのような設計になりがちで困ってます。 クラス内で作成する関数なんですけど、良く使うキー情報は関数にパラメータを増やして 渡すやり方はC++ではあまりしないんですかね? クラスのメンバ変数にすると便利そうなんですが、知らないうちにメンバ変数が どんどん増えていって、収拾がつかなくなることが多くついついパラメータ渡しに なってしまいます。いまのやり方はまずいですかね?
295 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 02:06:08 ] ・まずはどういう処理について述べているか、具体的に(例でもいいから)挙げてください ・クラス内で作成するって何を作成する関数なんですか? ・キー情報って何ですか?
296 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 03:17:47 ] >>285 まずは、デバッガ上でステップ実行しろ! このスレで何度も言っているが、 書いたプログラムが思い通りの結果を出さない場合、 たいていは注意深くステップ実行する(変数の内容もチェックする)ことで間違いに気がつく。 ということで、原因はわかるが、あえて、教えない。 他の人も教えるなよ!
297 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 03:25:29 ] >>294 > 良く使うキー情報は関数にパラメータを増やして渡すやり方 そういうのはCでも、やらないなぁ。 構造体のポインタを渡すよ。 もし、複数の関数で、同じ引数群を渡すのなら、 どうせスタックに同じものを積むのだから、構造体で値渡しするよ。 構造体を使うにしても、1つの構造体にフラットにメンバを並べるのではなく、 データどうしの関係に合わせて、構造体をネストする。 そういうのはCとC++で違いはないよ。
298 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 06:11:00 ] 入力された数値がマイナス数値だった場合それを自然数に変えるにはどうやるんですか?
299 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 06:32:40 ] 入力した数値を2に変える。3でも良いけど。
300 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 09:41:16 ] オレだったら4かな、、、って abs()の事を聞いてるのか?
301 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 11:13:42 ] >>298 何をしたいのが不明瞭。 このスレで質問する人は、C/C++が云々という以前に、日本語が不自由すぎる。
302 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 15:10:46 ] わかるように書いて質問すれば、 より早く適切な答えを貰えるのにね。
303 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 15:13:26 ] 自分でも何をしたいのか分かってないんだろ。 この程度のレベルなら、人に説明できれば自ずから解決できる。
304 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 15:28:30 ] プログラミング云々という以前に、 問題を切り分ける気がないんだろう。 たとえば>>285 みたいなのは、 問題を切り分けていけば、 おのずと原因がわかるのだが。
305 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 15:29:18 ] int a; scanf("%d",&a); if(a < 0) a = 2; もしくは int a; scanf("%d",&a); while(a < 0) a++; ってこどだろ?
306 名前:298 mailto:sage [2007/06/15(金) 15:54:33 ] 5が入力されたら5 マイナス5を入力されても5として扱う方法を聞こうと思ったんですが、、 自分にレスしてくれたんじゃないかもしれないけど305をヒントにできました。
307 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:01:25 ] そういうのを絶対値と呼ぶんだってことは中学生でも知ってそうなもんだがな
308 名前:298 mailto:sage [2007/06/15(金) 16:03:48 ] 小学生ですが何か? 来年から中学ですけど
309 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:05:41 ] 入力した負の数に-1かけりゃいい話だがや
310 名前:298 mailto:sage [2007/06/15(金) 16:10:17 ] だから、もうわかったって言ってるだろ しつこい馬鹿
311 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:11:54 ] しつこい馬鹿
312 名前:デフォルトの名無しさん [2007/06/15(金) 16:24:31 ] 変数を宣言して初期化する場合、普通は int a,b,c; a=1; b=2; c=3; ってやるけどさ ↓こうした方がコンパイラも高速なコード生成できるし入力数も少なく見やすくてよくね? int a=1, b=2, c=3;
313 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:27:36 ] >>312 天才
314 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:42:21 ] >>305 intが32ビットや64ビットで、 負の最大値のような巨大な数字が入力されたら、 大変だぞ。 >>306 とりあえずC標準ランタイムライブラリのabs()を使ってみようよ。 >>308 高校生くらいまでは、 プログラミングよりも学校の勉強とかに時間を使ったほうがいいぞ。 プログラミングなんて大人になってからやっても遅くはないが、 子供のころに勉強することは、大人になってからでは遅いんだよ。 自分も小学生の頃からプログラム書いてたけど、 もっと数学や物理をよく勉強すれば良かったと後悔してるよ。 >>309 今は乗算のコストが加算と同じだけどさ、 普通は減算を使って if (a < 0) a = 0 - a ; とやるよね。 >>310 うわぁ。 プログラミングの勉強よりも、対人コミュニケーションの勉強しようよ。
315 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:49:25 ] >>312 コンパイラの最適化を有効にしていれば、 どっちでも同じコードが出力されると思うぞ。 ちなみに、 int a, b, c ; というように複数をまとめて宣言するのは、 int* p, q, r ; のようなトラブルを起す可能性があるので、良くない。 面倒でも、 int a = 1 ; int b = 2 ; int c = 3 ; としたほうがいい。
316 名前:デフォルトの名無しさん [2007/06/15(金) 19:17:02 ] >>126 >>266 ありがとうございます。書くの遅くなりましたが解決できました。本の後ろの方に書いてありました。 回答ありがとうございました。 「7」についてなんですが、本には「0」って書いてあるんです。 でも実行ファイルにすると「7」と表示されるんでバグなのかな?って思って聞いてみました。
317 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 19:59:47 ] >>316 ライブラリの実装の違いかもしれない。 いずれにしても、 floatやdoubleは内部では二進数なので、 10進数との相互変換は100%完璧にはできない。
318 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:08:58 ] >if (a < 0) a = 0 - a ; if (a < 0) a = -a;
319 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:19:18 ] マイナスを前に付ければ符号反転なんだけどさ、 算数的には、0から引いたほうが、わかりやすいっしょ。 いまどきのコンパイラは、両者で出力するコードが変りはしないし。
320 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:27:49 ] >算数的には、0から引いたほうが、わかりやすいっしょ。 ??????
321 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:28:13 ] どっちでもいい
322 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:29:38 ] 算数的ではなく314的だろ
323 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 06:36:33 ] 314のマスターベーションだろ?
324 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:13:26 ] じゃ結論はこうってことで、 a * -1
325 名前:285 [2007/06/16(土) 17:18:08 ] do while 内のifを外したところ解決しました。 お騒がせしましたm(__)m
326 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:20:55 ] >>325 >>296 の言うとおり、デバッガ使った?
327 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:23:13 ] >>325 一応聞いておくけど、なんでifを外せばいいのかは理解してるんだよね? というか、ifを外して良いのか? バグを修正すべきなんじゃないのか?w >if ((Sr.Attr & Attributes) == Sr.Attr) { この式、変じゃない? Attributesと&取ってて、その結果が Sr.Attrであるためには、 Sr.Attr == Attributesでなくてはならないのでは?
328 名前:デフォルトの名無しさん [2007/06/16(土) 17:27:51 ] while(gets(str);strcmp(str,"quit"); ) って書き方はありですか?
329 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:29:36 ] 間違えました for(gets(str);strcmp(str,"quit"); ) でした for文しか使えなかった場合の話で
330 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:29:41 ] なしです。 こうしてください。 while(fgets(str, sizeof(str),stdin) && strcmp(str,"quit") )
331 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:31:29 ] for(fgets(str, sizeof(str), stdin); str&&strcmp(str,"quit");fgets(str, sizeof(str), stdin) )
332 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:32:55 ] ちがった、こうかな。 for(fgets(str, sizeof(str), stdin);EOF!=*str&&strcmp(str,"quit");fgets(str, sizeof(str), stdin) )
333 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:34:49 ] >>330 出来るだろうけど、fgetsは改行コードまで取るから、 "quit"に改行コード入れるか、strncmp使うか、 何かしないと狙い通りに動かんと思うよ
334 名前:296 mailto:sage [2007/06/16(土) 18:45:16 ] >>325 解決してよかったね。 ちなみに今回の質問の件とは違うが、まだバグが残ってる。 ディレクトリ名の末尾が.mp3の場合もファイルとして扱ってしまう。 int Attributes = faAnyFile ; ↓ int Attributes = faAnyFile ^ faDirectory ; にして、ディレクトリ名は取得しないようにしたほうがいい。 >>327 条件文自体は間違ってないよ。 (Sr.Attr & Attributes) == Sr.Attr というのは (Sr.Attr & ~Attributes) == 0 と同じことだからね。 適当にテストプログラムを書いてステップ実行して、 TSearchRec::Attrに渡される値をみてみなよ。 Borland氏ね!と叫びたくなること請け合いだよ。
335 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:00:59 ] >(Sr.Attr & Attributes) == Sr.Attr >というのは >(Sr.Attr & ~Attributes) == 0 >と同じことだからね。 本当に? (Sr.Attr & Attributes) == Attributes ではなくて?
336 名前:296 mailto:sage [2007/06/16(土) 19:20:10 ] >>335 ごめん、間違ってた。その通りです。 だがしかし、 (Sr.Attr & Attributes) == Attributes や (Sr.Attr & Attributes) に直しても、問題は解決しないのよ。 VCLの定数faAnyFileは0x3Fで、 TSearchRec::Attrに返される値は 圧縮ファイルの場合には0x800がORされているから。 faAnyFileを-1に変更するか、 0x3Fを指定された場合にはVCLのリファレンスヘルプに書いてない隠しビットフラグ0x800を立てるのをやめるか、 どっちかにしてほしいぞ > Borland FindFirstがフィルタしてるんだから、自前でもう一度フィルタしようとするのが変といえば変なのだが。
337 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:38:56 ] いやあのね、それ、DOSの頃からのファイル属性の仕様だから(無属性が通常ファイルは)。 VCL上だけ変えたら、よけい混乱する人が続出するだけ。
338 名前:296 mailto:sage [2007/06/16(土) 22:06:28 ] >>337 さんの書き込みを見て気がついた。 > ごめん、間違ってた。その通りです。 ↑は前言撤回。 やっぱり間違っていなかった。 >>327 と>>335 が間違ってる。
339 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 22:23:05 ] >>337 (Sr.Attr & Attributes) == Sr.Attr (Sr.Attr & ~Attributes) == 0 これらは、無属性の通常ファイルの場合も、真になるよ。 フィルターとしては、 指定した属性以外がついているファイルを除外する ということになる。
340 名前:298,306 mailto:sage [2007/06/17(日) 04:47:51 ] >>314 やっぱりあったんですか・・。絶対値って言葉が出てきませんでした。 教えていただきありがとうございます。 自分は308ほど若くは無いですが、高校生くらいまでは学校の勉強に集中するのは同意します。 ていうか小学中学の時点でプログラム組めるとそれで数学やっちゃいそうで計算力が多分付きませんね。 プログラムは半年くらいしかまだやってないですけど、 プログラム以外の事も覚えなきゃなぁ〜とは思っています。。
341 名前:デフォルトの名無しさん [2007/06/17(日) 11:10:21 ] Windows Vista にて 普通のサーバープログラムを sexe でサービスに入れたのですが 通知領域(タスクトレイ)にアイコンが表示されません。 サーバー機能は問題なく動作しているようです。 もちろん「ディスクトップとの対話をサービスに許可」していますし Shell_NotifyIcon のタイムアウト処理も行い msgTaskBarRestart によるタスクトレイ再登録も行っています。 直接の原因は Shell_NotifyIcon が全て ERROR_TIMEOUT に なってしまっていることのようです。(1秒スリープで20回トライ) 対応策はあるのでしょうか? やはり サービスプロジェクトで書き換えるしかない?
342 名前:デフォルトの名無しさん [2007/06/17(日) 11:40:57 ] ↑の書き込みで”全て ERROR_TIMEOUT ”と書きましたが、 ”全て ERROR_TIMEOUT 以外”の間違いでした。 これから調べます。すみません。
343 名前:デフォルトの名無しさん [2007/06/17(日) 11:51:40 ] 調べたら ERROR_FILE_NOT_FOUND だった。 Shell_NotifyIcon で ERROR_FILE_NOT_FOUND って 何のファイルが無いんだ??? さっぱりわからん。 ちなみにサービス起動でない場合はちゃんとアイコンは表示されます。
344 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 14:24:46 ] >>341 それは、C/C++の質問というよりは、Win32APIの質問だ。 Win32APIのスレで質問しなおしたほうがいい。 質問し直しても、 設計が悪い、Windowsのアーキテクチャを理解しろ、 なんて言われるのがオチだが。
345 名前:デフォルトの名無しさん [2007/06/17(日) 16:41:34 ] >>344 了解。
346 名前:デフォルトの名無しさん [2007/06/19(火) 00:40:49 ] char *p[3] は char p[][3] と同じ意味でしょうか?
347 名前:デフォルトの名無しさん [2007/06/19(火) 01:11:34 ] 違います。
348 名前:デフォルトの名無しさん [2007/06/19(火) 01:23:23 ] そうですか... char **p[3] は char p[][3] と同じ意味でしょうか?
349 名前:デフォルトの名無しさん [2007/06/19(火) 01:28:22 ] *はヒープ領域、[]はスタック領域を扱う。 だから、 char* p[3]; p[0] = new char[10]; ということはできても、 char p[][3]; p[0] = new char[10]; ということはできない。
350 名前:デフォルトの名無しさん [2007/06/19(火) 01:32:59 ] >>349 むずかしす、難しいすぎて理解できません、orz
351 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 01:39:00 ] char *p[3] は、要素数3の配列で、要素はchar 型のポインタ char p[][3]; は…こんな型はない。これは配列初期化時の特殊な構文。 char p[][3] = {{1,1,1},{2,2,2}}; とすれば、char p[2][3] = {{1,1,1},{2,2,2}}; だし、 char p[][3] = {{1,1,1},{2,2,2},{3,3,3}}; なら、char p[3][3] = {{1,1,1},{2,2,2},{3,3,3}}; だし、 上の二つは、左辺だけを見れば、一見同じ型のように見えるが、実際に宣言されているのは異なる型。 繰り返すが、char p[][3] という型はない。 Cの配列は、サイズ固定。
352 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 01:41:12 ] ×char p[][3]; は…こんな型はない。これは配列初期化時の特殊な構文。 ○char p[][3]; は…こんな型はない。これは配列宣言時の特殊な構文。
353 名前:デフォルトの名無しさん [2007/06/19(火) 01:50:07 ] >>351-352 型がキーワードみたいですが、型って何ですか?
354 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 01:59:31 ] ここでいう型とは、「データ型」のこと。 ビット列で表されるデータを、どう解釈するか、ということの取り決め。 二進表記で、01100101 は、数値型の取り決めでは 十進数の101をあらわし 同じデータを、文字型ではアスキーコードと解釈して 'A' になる。 あくまでも取り決めであって、それ自体が自ら意味を持っているわけではない。 それぞれの型が、何を意味しているかは、一つ一つそのルールを覚えなければ 理解することはできない。
355 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 10:10:08 ] >>349 >*はヒープ領域、[]はスタック領域を扱う。 はい? おまいはPascal出身か?
356 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 17:43:03 ] >>346 関数の仮引数という状況においてだけは、同じ意味になる
357 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:06:30 ] PSDKのサンプルにあったんだが CAllocator::CAllocator(HRESULT& hr, HWND wnd, IDirect3D9* d3d, IDirect3DDevice9* d3dd) : m_refCount(1) , m_D3D(d3d) , m_D3DDev(d3dd) , m_window( wnd ) { .... } っていう関数の定義があったんだが、引数リストの後、コロン以降はどんな意味がある? 検索したが、検索しにくくて見つけることが出来なかった
358 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:12:00 ] 適当に数字を入力してもらってその数だけ配列を用意したいのですが、どうすれば できるのでしょうか? イメージではこんな感じで宣言したい。でもこれだとエラーでる(´・ω・`) cin>>num; int i[num];
359 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:14:32 ] >>357 つ[初期化指定子] >>358 つ[c99] つ[std::vector]
360 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:15:04 ] int*i; i=new int[num];
361 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 23:26:58 ] >>359-360 ありがとうございます。できました(゚∀゚) これでi[255]なんてぶさいくな宣言せずにすみます
362 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 05:39:27 ] delete するの忘れないようにな 使い捨てのコードなら別にいいけど
363 名前:357 mailto:sage [2007/06/20(水) 09:30:27 ] >>359 検索できた!ありがとう! ぱっとみ難解だが頑張るよ!
364 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 14:23:53 ] >>349 ヒープかスタックかは、型で決まるのではないぞ。
365 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 21:49:43 ] >>364 >349は型に言及しているわけではないぞ。 #勿論、演算子に決まるわけではないが。
366 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 22:01:34 ] レジスタ割り当てってのもあるぜ。
367 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 22:10:19 ] レジスタの前に静的領域を思い出そうぜ。
368 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:40:50 ] C++でPCAのライブラリ的なものってどっかにあったりしませんか
369 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:39:47 ] 自動配線ツールをCで書こうと思ってるんですけど。 アルゴリズムはmazeをベースで。 書くときに参考になるソースコードとかってどっかに落ちてるものなんでしょうか? アルゴリズム分かっても、書くのが素人なので、どれ位の規模(行数)になるかとか、必要な関数が予想つきません。 サンプルなどがあればと思って質問させていただきました。 誘導していただければ幸いです。
370 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:40:31 ] マルチするな
371 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 05:36:17 ] >>369 「自動配線ツール」だけで通じると思うな。
372 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:12:26 ] 例えば2乗や3乗の時はpowよりもa*aやa*a*aとした方が速いですが、 何条ぐらいまでかけ算に展開した方が速いのですか? コンパイラは最適化時に自動的に展開してくれるのでしょうか?
373 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:34:19 ] やってみりゃいいじゃん
374 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:48:47 ] >>372 学校の宿題っぽいな。
375 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:59:31 ] っ 実測
376 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:05:17 ] powのソース嫁 実装をみれば、ああなるほど、と思うぞ。
377 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:17:07 ] 自己参照構造体で、リストの最後尾にデータを追加しようとしています。 エラーが出て困っています。何かわかりましたら教えてください。 構造体が以下のとおりで、 struct list { double x; double y; double z; struct list *next; }; 以下のように呼び出してるのですが、 ========================================= struct list *listp; //宣言 〜〜中略〜〜 listp = add_list(x,y,z,listp); ========================================= struct list *add_list(double x, double y, double z, struct list *listp){ struct list *p; if ((p = (struct list *) malloc(sizeof(struct list))) == NULL) { printf("malloc error\n"); exit(1); } p->x = x; p->y = y; p->z = z; p->next = NULL; listp->next = p; //←←実行時にここでエラーが出ます。 return p; }
378 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:29:54 ] >>377 このスレで何度も言っていることだが・・・ プログラムは省略せず全部コピペしろ! どんなエラーメッセージが出たのか書け! デバッガでステップ実行しろ! (変数の値のチェックもな!) がんばれ。
379 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:58:22 ] >378のいうとおりなのだが、書いてある範囲で怪しいのは listp = add_list(x,y,z,listp); のlistpには何が入っている? 中略がどうなっているかわからんが初めはあさっての方向を 指しているぞ。
380 名前:372 mailto:sage [2007/06/26(火) 02:38:22 ] やってみたら5乗あたりで抜かれるね
381 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 07:57:55 ] そして8乗はx *= x; x *= x; x *= x;に抜き返される悪寒。 後は、精度の問題が出るような数値のときにどうするかだな。