- 1 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 15:29:45 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sageは禁止です。 【前スレ】 【初心者歓迎】C/C++室 Ver.36【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1175436073/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 321 名前:デフォルトの名無しさん [2007/05/19(土) 00:41:34 ]
- Linux,gccです。
./aaa 3 2 | ./bbb というように、最初に実行したaaaの結果をパイプでつないで、後ろのbbbというプログラムで操作したいのですが、 うまくbbbに渡すことができません。 aaaは、 1 -2 -1 2 のように出力するので、bbbで int main(int argc,char **argv) として読み取ろうとしているのですが、 argcの値を出力してみると1とでるので、./bbbそのものしか読み取れていません。 自分としてはここで ./bbb 1 -2 -1 2 でargcの値が5になるようしたいのですが、 このようなパイプの使い方は間違いでしょうか?
- 322 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:45:11 ]
- >>321
大間違い。パイプの使い方の勉強してらっしゃい。 要は、標準出力と標準入力を繋ぐだけだから。 >>320 おいおい、recv()しているスレッドをいきなり殺しちゃ拙いだろ。
- 323 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:51:05 ]
- >>322
ではサーバーとの接続をぷちって切りたい時は どうすればいいのでしょうか?
- 324 名前:315 mailto:sage [2007/05/19(土) 01:01:18 ]
- >>320
長い答え: ブロッキングモードでひたすらrecv()ループをしているんだな。 確かに簡単だが、それでは綺麗にスレッドを終了させられない。 1)ブロッキングモードでrecv()を使う代わりに、 例えばasynchronousモードでWSARecv()+WSAGetOverlappedResult()を使う 2)スレッド間通信用にEventを作る。そのスレッドを止めたい場合は 外からSetEvent()でやんわりと「お願い」する。 3)受信スレッドでは、WSARecv()でトリガした受信の完了と上記のイベントの2つを、 WSAWaitForMultipleEvents()などを用いて、同時に待つようにする。 4)SetEvent()によって待機から抜けた場合は、スレッドが自分で終了する。 こんな感じにすればできるぞ。まあ、基本的なテクニックだが。
- 325 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 01:40:49 ]
- >>324
初めて聞く関数がいっぱい出てきたので ちょっくら勉強してきます!
- 326 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:26:01 ]
- まあ要するに、recv()という「外(他スレッド)からブレーク出来ないもの」を使う代わりに
他のもので待機してrecv()ではブロックしないようにする、ということだな。 ネットワークでは誰もが必要とすることなので、対処法もほぼ確立してる。 一般的には「select系」と呼ばれるけど、Windowsにもそれに向けた方法が用意されている。
- 327 名前:デフォルトの名無しさん [2007/05/19(土) 02:54:08 ]
- OS依存しない現時点でC++の仕様を網羅した入門的教科
書ってなにかよいのないでしょうか。 クラスとかSTLのさわりのところまで知っているのですが 数年やっていなかったので今どういう機能が投入されている のかわかりません。図書館でパラパラみていたら 「詳説C++第2版」というのが値段も含めて よいかなと思ったのですが。
- 328 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:58:23 ]
- CALLBACK関数内で変数の宣言をすると処理が重くなりますか?
- 329 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 03:04:22 ]
- >>328
↓のどっちと比べて重くなるって言ってるの? 1.CALLBACKじゃない関数で変数の宣言をする 2.CALLBACK関数内で変数の宣言をしない
- 330 名前:328 mailto:sage [2007/05/19(土) 03:05:34 ]
- すみません。
1.CALLBACKじゃない関数で変数の宣言をする です。
- 331 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 03:10:37 ]
- >>327
興味を持ってるところに水を差して悪いが… >クラスとかSTLのさわりのところまで このレベルで「最新の仕様」を知る事に意味があるのか? それならまだ知らないC++の基本を押さえるのが先じゃないか?
- 332 名前:デフォルトの名無しさん [2007/05/19(土) 03:19:00 ]
- C系のを中断してLispとかHaskellあと言語そのものを作ったりとか
とかしばらくやっていたので 今度は今のC++らしいところが全体的に知りたいっていう かんじなんです。 そのあたりの気分を理解していただけますでしょうか。
- 333 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 03:34:23 ]
- それなら安心して Effective C++
- 334 名前:デフォルトの名無しさん [2007/05/19(土) 03:50:56 ]
- 質問ですが、ワードパッドの[ファイル]メニューの[送信]コマンドのように
既存の標準電子メールソフトから送信用ウィンドウを呼び出す機能を実現するには どうすれば良いのでしょうか?
- 335 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 03:53:49 ]
- gcc -pg でコンパイルしたらそれまで出てなかった
Detaching after fork from child process XXX と言うメッセージ出るようになったんですけど、これは何ですか?なにか問題あるでしょうか?
- 336 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 05:25:39 ]
- >>334
「ファイル名を指定して実行」で mailto:: やってみれ
- 337 名前:334 mailto:sage [2007/05/19(土) 06:52:25 ]
- >>336
忝い
- 338 名前:304 [2007/05/19(土) 07:10:12 ]
- >>305
答えてくれてありがとうございました。 が、関数とか全くと言っていいほど知らないので、書いてくださったコードは理解できませんでした・・・。 どうにか自分のコードをちょちょいと直してコンパイルエラー無くなるようにならないでしょうか? もし良ければお答え下さい。 >>306 >JavaかC#でもやっていたのかもしれないけど すみません、全くのプログラミング初めて2ヶ月の初心者です 配列の先頭要素のアドレスを渡すには配列名を書けばいい、と本に載っていましたが、それでいいんですよね? 関数内でいじった配列を、元のところに戻してやるとき、returnの後と、関数の戻り値の型はどう書けばいいのか教えてください;;
- 339 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:29:12 ]
- >>338
上手くいかないというのは、知識が足りていない事の証明。 解らないと思うなら、他人に聞く前に死ぬ気で調べなさい。 その方が自分のためだよ。 配列とポインタの関係について、ぐぐりつつ、テストコードを書きつつで、 ちゃんと基本を押さえれば、難しいことはないよ。
- 340 名前:304 [2007/05/19(土) 07:44:56 ]
- そうですね。甘えてました。
出直してきます。 ありがとうございました!
- 341 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:47:02 ]
- >>338
配列を関数で変更したいだけなら、例えばこれだけでいい。 void incrementArray(int * foo, unsigned nFoo) { for (int ic = 0; ic < nFoo; ++ic) { ++foo[ic]; } } 別の配列にコピーする場合も、関数で配列を新規に確保するのは判り難いからやめた方がいい。 void copyArray(int * bar, int const * foo, unsigned nFoo) { for (int ic = 0; ic < nFoo; ++ic) { bar[ic] = foo[ic]; } }
- 342 名前:デフォルトの名無しさん [2007/05/19(土) 07:50:14 ]
- コピーのほうの仮引数名は
fooだのbarだの書かずにsrc,destにしようぜ。
- 343 名前:デフォルトの名無しさん [2007/05/19(土) 07:51:54 ]
- Linuxでの初心者の質問です。
C++のstd::sort(v.begin(), v.end())のsort()の実装を見てみたいのですが、 どこをみればよいのでしょうか。 関数ポインタ2つだけを引数にしなくても、v自体を引数にする仕様の方が 自然な感じがするのですが。。。 どなたかよろしくお願いします。
- 344 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:55:20 ]
- >>343
それでは「配列」か「コンテナ」か、どれか一つの全体しかソートできない。 例えば、vectorの二番目からソートしたいかも知れない。
- 345 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:58:43 ]
- >>343
ディストリビューションによるけど、たとえば /usr/include/c++/*/bits/stl_algo.h 渡しているのは関数ポインタじゃなくて、イテレータオブジェクトだよ。 範囲を指定できるようにしておけば、コンテナの全体をソートするのも 一部をソートするのも同じ使い方にできるから、いい設計。
- 346 名前:332 mailto:sage [2007/05/19(土) 08:48:50 ]
- >それなら安心して Effective C++
どうもありがとうございました。読んでみます。
- 347 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 09:15:15 ]
- >>327
入門的教科書の条件は満たさないが、規格書でも買っとけば?
- 348 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 09:18:23 ]
- >>330
変数の型が糞重たいコンストラクタ/デストラクタを持ってるクラスだったら重くなるだろうね。 まぁ環境による
- 349 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 09:20:24 ]
- mixiで暴れてる猫皇って何者?激しく不快なんだけど
C言語コミュ mixi.jp/view_community.pl?id=1190894 初心者の為のC言語 mixi.jp/view_community.pl?id=485919
- 350 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 09:36:21 ]
- >>327
今書いてるから待ってて。
- 351 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 10:14:01 ]
- 執筆中かよw
いつ出版されるんだ?w
- 352 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 10:34:30 ]
- >>350に期待
- 353 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 10:37:36 ]
- >>327
その本俺持ってるけど、初心者には詳しく書きすぎてあって読んでいる うちに眠くなるよ。 独習C++などの問題集を一通りやってみてはいかがかな。あれなら 一冊やり終えた所である程度の力が付く。
- 354 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:19:22 ]
- >349
諦めとけ。 Kusakabe氏と猫王(猫皇)氏の参加コミュニティには近付かないが吉。 自分も「なるほど、考え方の違いですね」などと発言したら 「バカにするのもいい加減にしてください」とか返されてビックリですよ。詳細曖昧でごめん。
- 355 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:27:12 ]
- ミクシィ(笑)
- 356 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:30:09 ]
- 2ch(笑)
- 357 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:32:14 ]
- 独習C++、exceptional C++以外にC++の問題集ってありますか?
- 358 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:57:35 ]
- C with Classes 問題集
- 359 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 16:04:49 ]
- そのK氏、マイミクのマイミクなんだよなあ……
なんであんなキチガイと付き合いあるんだろうあの人。
- 360 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 16:43:19 ]
- A man is judged by the company he keeps.
類は友を呼ぶ。 キチガイの知り合いはキチガイ。
- 361 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 17:05:02 ]
- つまり359は無自覚のキチガイ
- 362 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 17:24:16 ]
- 話題に対して関係ない人についての言及は思わぬ蛇を出させる
- 363 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 17:25:43 ]
- キューを配列で作りたいのですが
enqueue時にデータが一杯の時の処理が上手く出来ません ↓は自分で考えてみたものです kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4006.txt どこが悪いのか教えていただけないでしょうか (headは先頭要素の一つ手前の要素数、tailは最後尾の要素の要素数)
- 364 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 22:20:21 ]
- >>363
デバッグくらい自分でしろよ。 デバッグの過程で学ぶ事は、プログラムを書く事以上にあるんだぞ。
- 365 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:20:06 ]
- わからないので書き込んだのですが…
- 366 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:21:09 ]
- わかってて書き込んでたらそれはさすがにまずいだろ
- 367 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:56:39 ]
- >>363
とりあえず、データが一杯の時に 「どういう動きにしたいのか」 「実際はどういう動きをするのか」 を、まとめてみるのはどうだろうか
- 368 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 04:20:25 ]
- 友愛数を探すプログラム
「博士が愛した数式」で出てきた友愛数 友愛数の定義 ja.wikipedia.org/wiki/%E5%8F%8B%E6%84%9B%E6%95%B0 Aの約数の和=B、Bの約数の和=Aのとき、A、Bは友愛数である (ただし約数には自分自身を含めない) 例:220と284 220の約数の和=1+2+4+5+10+11+20+22+44+55+110=284 284の約数の和=1+2+4+71+142=220 とりあえず1,000,000まで探してみた。39組あった。 オイラーは60余り見つけたらしい。 が、いかんせん遅すぎる。(Athlon64 3500+で33分) 誰か高速化してくださいな。 ソース:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4009.txt 高速化のポイント ・約数をもっとスマートに見つける方法はないか?(これがかなり遅い) ・10の約数の和が100になるわけないので本探索のjのループに無駄が多い かといって、どこまではしょっていいかわからない j = i / 2 〜 とか? ・あ、jをループにするから遅いんだ。yakuwaをソートして二分木探索すればいいんだ
- 369 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 06:55:55 ]
- 100まで求めるやつらしい
ttp://www.saoyagi.net/integer/konyaku.html
- 370 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 08:28:32 ]
- Aという起動中のプログラム(既存)のウィンドウを、Bというプログラム(自作)から開きたいです。
できるだけ簡単に開く場合はどんな方法がありますか?(SendMessage?) Aのウィンドウはメニューから開くタイプでアクセラレータキーは付いていません。
- 371 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 08:39:58 ]
- std::vectorについて質問です。
#include <vector> template <class T> class test{ public: test(T a){ data.resize(1); data[0] = a; } const T& getData() const{ return data[0]; } private: std::vector <T> data; }; int main() { test <bool> a(true); a.getData(); test <int> b(0); b.getData(); return 0; } boolで初期化された方にはVC8、GCC3.4共に、テンポラリのリファレンスを返すと怒られてしまいます。 boolとintでどのような違いがあるのでしょうか? 識者の方、ご教授お願いします。
- 372 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 09:06:18 ]
- >>371
Effective C++第18項 vector<bool>の返す型はbool*ではなくvector<bool>::reference型だから 参照は返せない。だから値で返すしかない。 const T& → const T 内部でプロキシオブジェクトを使っているのでアドレスが取れないため。
- 373 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 09:06:47 ]
- ×Effective C++
○Effective STL
- 374 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 10:47:19 ]
- なるほど、vector< bool >にそんな事情があったとは。
const T& → const T にすると、vectorの中身によっては、 コピーが馬鹿にならない場合もあるので、この制約は嫌らしいですね。
- 375 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:02:00 ]
- >>374
一応補足しておくと、 const T となるのは vector<bool> ’のみ’ね
- 376 名前:デフォルトの名無しさん [2007/05/20(日) 11:15:08 ]
- コピーが気になるなら、boost::call_traitsみたいな感じで
適切な戻り値の型を選ぶようにすればいいんじゃないかな。
- 377 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:06:05 ]
- >>370
C/C++、関係ナクネ? プログラムAがどういう実装で新しいWindowを生成してるか 分からないとBからじゃ無理だと思うけど。
- 378 名前:370 mailto:sage [2007/05/20(日) 12:31:22 ]
- 分かりにくくてすみません。
プログラムAはWindowsアプリケーションで、 TrackPopupMenu(ショートカットメニュー)からCreateWindowExでウィンドウを開いているようです。 プログラムBはC++(またはC)で作ります。
- 379 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:36:19 ]
- もうちょい詳しく。
てか、APIスレ行こうぜ
- 380 名前:デフォルトの名無しさん [2007/05/20(日) 12:49:15 ]
- WM_COMMANDとメニューIDを
SendMessageで送りつければいいんじゃないの?
- 381 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 15:14:38 ]
- VC++のリストボックスについて、行き詰ってしまいまして、質問させて下さい。
環境はeMbedded Visual C++ 4.0 / windows CE です。 リストボックスにあるスクロールバーを使用せずに、別スクロールを付加させて、 リストボックスの動きを制御させています。 垂直スクロールに関しては、リスト数を取得して、スクロールバーで制御が出来るのですが、 水平スクロールがうまくいきません。。 リストボックス内では、文字列が途中までしか表示されておらず、 水平方向専用のスクロールバーを付加したのですが、 リスト内における表示位置(文字列の表示位置について)が取得&設定出来れば、 擬似スクロールが可能かな、と思ったのですが、取得することが出来ませんでした。 例えば、リストに水平スクロールをつけてしまい、そのスクロール部分を隠してしまい、 別スクロールから操作しているように見せかける、ということも考えたのですが、 その場合のリストについている水平スクロールの表示位置も取得できず。。。 もしかしたら、リストのスクロール位置が取得出来る方法があるのかもしれませんが、 申し訳ないのですが、調べたのですが、いまいち、探すことが出来ませんでした。 何かいい関数や処理がないかなぁ、、と行き詰っている状態です。 どなたか、いい方法をご存知の方がいらっしゃいましたら、教えていただけますでしょうか。 よろしくお願い致します。 追伸:もし、VC自体にそのような関数や処理方法がないのであれば、 別リスト(コピーリスト)を用意して、表示の仕方で擬似スクロールするように 見せかけるしかないのかなぁ。。。と悩み中です。。
- 382 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 15:56:47 ]
- switch文のcase句の条件を(ほぼ)同時に満たしたら下記の場合どうなるんでしょうか?
int nCount; switch (a) { case1: nCount=0 break; case2: nCount=1 break; }
- 383 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:01:29 ]
- >>382
switchを通った時点の数値で評価される
- 384 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:01:57 ]
- 一回で評価される式は1つ
つまりほぼ同時に満たすと言うのは a == 0x01 && a == 0x02の時 これを満たすようなaは果たして存在するか?
- 385 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:17:17 ]
- switchとifは実行速度の面では一緒ですか?
- 386 名前:382 mailto:sage [2007/05/20(日) 16:18:06 ]
- >>384
case1とcase2をそれぞれ満たす違う値のaがほぼ同時に入ってくるということです。 >>383 でしたら下の場合nCountは3になるんでしょうか? int nCount=3; switch (a) { case1: nCount=0 break; case2: nCount=1 break; }
- 387 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:23:01 ]
- switch通過後にnCountの値が3になるのはaが1でも2でもない場合
- 388 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:23:04 ]
- >>386
>case1とcase2をそれぞれ満たす違う値のaがほぼ同時に入ってくるということです。 ___ ━┓ / ―\ ┏┛ /ノ (●)\ ・ . | (●) ⌒)\ . | (__ノ ̄ | \ / \ _ノ /´ `\ | | | | ___ ━┓ / ― \ ┏┛ / (●) \ヽ ・ / (⌒ (●) / /  ̄ヽ__) / . /´ ___/ | \ | |
- 389 名前:デフォルトの名無しさん [2007/05/20(日) 16:23:06 ]
- >>368
素数を定数配列で持っとけ。1,000,000までの解を求めるんなら 1,000( == √1,000,000 )以下の素数データがあれば十分。 素数を定数配列使うのが邪道だと思う場合でもせめて素数だと わかった値はどっかにプールしといて再利用しれ。
- 390 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:25:09 ]
- スコープの問題か
ブロックローカルのa、関数ローカルのa、クラスメンバのa、グローバルのa と色々あっても優先順位がちゃんと決まってるから入る評価されるaは唯一つだよ
- 391 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:27:09 ]
- volatile変数なんだろ。
- 392 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:28:09 ]
- おーい誰かエスパー呼んで来い
- 393 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:30:33 ]
- まさかとは思って念のため >>382 のコードをコンパイルしてみたが
エラーもワーニングもでなくてワラタ。 >>382 case 1: と case1: じゃ全然意味が違うから気をつけてね♪
- 394 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:38:05 ]
- >>393
case 1のコロンがなくてもGCCでコンパイルできるよ
- 395 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:41:23 ]
- それはない。
- 396 名前:382 mailto:sage [2007/05/20(日) 16:43:20 ]
- 混乱させてしまって申し訳ないです。
グローバルフックのコールバック関数で以下のようにしてて、 AとBのウィンドウがあって、Bのウィンドウがアクティブな時にAのウィンドウをアクティブにすれば BのWA_INACTIVEとAのWA_CLICKACTIVEがほぼ同時に飛んでくるんではないでしょうか? この場合nCountの値はどうなるんでしょう? int nCount=0; case WM_ACTIVATE: switch (lp->wParam) { case WA_ACTIVE: case WA_CLICKACTIVE: nCount--; break; case WA_INACTIVE: nCount++; break; } >>382は文法めちゃくちゃでした。
- 397 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:47:19 ]
- queueがあるから同時じゃないよ
- 398 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:48:05 ]
- >>396
switch文の外にあるcase WM_ACTIVATE: は本当にエラーにならないか?
- 399 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:50:23 ]
- まずWA_INACTIVEが呼ばれて次にWA_CLICKACTIVEが呼ばれる。
つまり nCount=0; nCount++; が実行されてから nCount=0; nCount--; が実行される
- 400 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:55:31 ]
- breakしてるからfall-throughはしないんだろ?
- 401 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:56:30 ]
- >>400
お前さんも質問者の言ってることが解ってないようだが、 質問者はそんなレベルじゃない勘違いをしている。
- 402 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:00:15 ]
- まああれだ、変数(または関数)と値というものの区別がついてないんだな、たぶん
- 403 名前:382 mailto:sage [2007/05/20(日) 17:05:01 ]
- まだいくつか省略してますがどこがおかしいのでしょうか?
>>399 ありがとうございます。見直して成功したら報告させて頂きます。
- 404 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:40:32 ]
- >>385
コンパイラによってはテーブルジャンプにしてくれる場合もあるとか まぁ環境によるので実測しなさい
- 405 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:46:27 ]
- >>404
それを言うならジャンプテーブルだろ、馬鹿w それからコンパイラによってはっていうよりそもそも ジャンプテーブルに変換する為のモンだぞ、switch は。 確かに状況により必ずしもジャンプテーブルになるわけじゃないが。
- 406 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:58:14 ]
- 万単位の分岐をelse ifのはしごで書くと
結構はっきり違いが分かるらしい
- 407 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:02:51 ]
- そこまで作るのがここに何人(ry ごめんなさい妬みですorz
- 408 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:24:51 ]
- int型の整数の中に、任意の整数が含まれているか調べる方法ってありますか?
たとえば int a = 1234; があって、この中に3という数値が含まれてるかどうか、みたいな感じです。 文字列として扱ってしまえばできそうなのですが、intからcharにキャストすると どうもおかしくなってしまって・・・ よろしくお願いします
- 409 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:26:00 ]
- sscanf
- 410 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:26:03 ]
- 10で割って一桁ずつ見ていけばいいでしょ
- 411 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:26:56 ]
- sprintfしてstrchrで探すとか。
- 412 名前:410 mailto:sage [2007/05/20(日) 18:27:24 ]
- 1の位を見るにはa%10
- 413 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:54:29 ]
- >intからcharにキャスト
toString()ではいかんのか? (Cなら >411 だが)
- 414 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:55:38 ]
- itoa系列の関数を使うといい
- 415 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:02:24 ]
- itoa()は標準関数じゃないよ。
- 416 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:08:56 ]
- ごめんちゃい><
- 417 名前:408 mailto:sage [2007/05/20(日) 19:15:16 ]
- いろいろとどうもです
sprintfの存在を初めて知りました それで挑戦してダメだったら1桁ずつ見ていきたいと思います
- 418 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:27:37 ]
- 速度求めるなら一桁ずつ見る方法の方がいいよなO(N)未満だし
- 419 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 00:47:05 ]
- >>381 です。
なんとか、少しづつ進んでみたのですが・・・。 現状のリストについている水平スクロールの値は取得&設定できました。 でも、設定をすると、リストの水平スクロールは稼動するのですが、 リストは一緒に動いてくれません。 どうしたら、リストも一緒に動いてくれますか? GetDlgItem(IDC_リストコントロール)->GetScrollRange(SB_HORZ ,&iMin,&iMax); iTest = GetDlgItem(IDC_リストコントロール)->GetScrollPos(SB_HORZ); GetDlgItem(IDC_リストコントロール)->SetScrollPos(SB_HORZ,iTest+5,true);
- 420 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 01:22:53 ]
- >>368
>>389 直観的方法だけど、 ・必要な素数列を最初に求める。 ・1は定義より含まれないことが自明なので2から始める(2も自明のような気がするけど)。 ・任意の数の友愛数は二つ以上ないと仮定して(証明されてるのか知らん)、既に友愛数になった数はスルー。 ・求めた素数列を使って素因数分解してから組み合わせを網羅して約数列を作る。 ・約数列の合計を求めて元の数より小さければその数は既に調べているのでスルー(等しいということはないだろうけど一応含めてスルー)。 ・そうでない場合はその数の約数列を作り合計を求めて元の数と比較し、一致していれば友愛数。 ttp://www.geocities.jp/krtcw777/amicable_numbers.txt この方法だと>>368の環境で1000000まで30分どころか30秒もかからない(と思う。当方Pen4 2.53GHzで28秒)。
- 421 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 02:10:01 ]
- はじめて質問します。よろしくお願いします。
switch文で、int型の特定の値を入力するまで処理を繰り返すものを作っているのですが、 (1、2、のメニュー番号を入力するまで繰り返す、など) int型(1)ではなく、1.0やaなど指定されたもの以外入力すると 無限ループになってしまい、処理を抜けることができません。 画面に表示された番号以外打ち込むなと言いたいところなのですが…。 これを避けるためにはどのようにcaseを設定したらよいのでしょうか? よろしくお願いします。
|

|