10/06/10 11:50:52
取り敢えずvoid main()と書く奴はCを使う資格ないな
WindowsのGUIならvoid main()でもいいが
512:デフォルトの名無しさん
10/06/10 12:33:58
>>511
その根拠は?
513:デフォルトの名無しさん
10/06/10 12:51:49
またかよおめーら
514:デフォルトの名無しさん
10/06/10 12:53:12
>>512
根拠は俺様だ
LinuxなどのUNIX環境でvoid main()などあり得ない
シェルが実行ファイルの戻り値をほとんど使う
515:デフォルトの名無しさん
10/06/10 12:54:30
それだけじゃなくてWindowsでもコマンドプロンプトからバッチファイルで
使う場合は戻り値を使う
その時にvoid main()じゃ戻り値が不定値になってしまうだろうが
516:デフォルトの名無しさん
10/06/10 13:12:47
1がエラーとか0が成功とかの規定なんて無いだろ。
0が成功かもしれないし1がエラーかも知れないし、
それ以外の情報を戻り値が教えてくれるかもしれない。
だから何も返さない方が一般性が高いと思う。
517:デフォルトの名無しさん
10/06/10 13:18:43
はいはい
勝手に言ってろ
518:デフォルトの名無しさん
10/06/10 13:21:41
>>516
URLリンク(www.opengroup.org)
ちゃんと規定されてる
519:デフォルトの名無しさん
10/06/10 13:29:29
>>516
Cのstdlib.hににEXIT_SUCCESSとEXIT_FAILUREというマクロが
定義されているのは何のためだと思う?
無知にも程がある
520:デフォルトの名無しさん
10/06/10 13:35:46
マクロというのはC言語の中でしか通用しないから
OSからみたら1か0にしか見えないの。
もし、プログラムが成功や失敗ではなくて
計算の結果を返して、その答えが1か0だった場合どうするの?
だから規定なんて無い。
521:デフォルトの名無しさん
10/06/10 13:37:53
>>520
>>518が読めないのか?もしかして英語音痴か
522:デフォルトの名無しさん
10/06/10 13:38:56
だいたいC言語のマクロというのはUNIXの総合環境の中で培われて
きたものだ
だからC言語の中でしか通用しないという言い訳はおかしい
523:デフォルトの名無しさん
10/06/10 13:56:41
OSから見たらそのプログラムがCで作られたかJavaで作られたか
GCCでつくれたかどうかも分からない。
だから規定なんて無い。
524:デフォルトの名無しさん
10/06/10 14:08:06
>>523
お前も頑固なやっちゃなー
そんな固い頭でプログラマで食って行けてるの?
525:デフォルトの名無しさん
10/06/10 14:10:09
下っ端プログラマーでは食っていけないけど
SEとしては食っていけるよ。
526:デフォルトの名無しさん
10/06/10 14:10:50
嘘付け
ニートの癖に良く言うよ
527:デフォルトの名無しさん
10/06/10 14:11:23
C ->ネイティブ吐く
Java ->仮想マシン上
GCC ->そもそも言語じゃない
これらを一緒くたにして語ってる時点でもうね……
528:デフォルトの名無しさん
10/06/10 14:12:03
と言うより、そんなに意地っ張りだからニートから抜け出せないんだと言っておくか
世の中を渡って行くには柔軟な頭脳は欠かせない
>>523のようなカチコチ馬鹿は家の中に引き籠もっているしかない
529:デフォルトの名無しさん
10/06/10 14:15:10
結局何を書いても引きこもりにされるわ(ry
530:デフォルトの名無しさん
10/06/10 14:17:56
いや実際>>523は引き籠もりだろ
言ってる事がSEにしてはおかしいもん
531:デフォルトの名無しさん
10/06/10 16:50:34
MS-DOSでは0が正常終了
532:デフォルトの名無しさん
10/06/10 17:27:14
>>519
exit()のためじゃないの?
main関数で使う物ってどこで定められてんの?
533:デフォルトの名無しさん
10/06/10 17:38:14
みんな、そんなにマルチプラットフォームなプログラムを書いてるの?
534:デフォルトの名無しさん
10/06/10 21:15:10
質問。MFCではなくWinSDK使って書く場合
case WM_CREATE:
g_Cls.init( );
break;
case WM_PAINT:
g_Cls.paint( );
break;
と書くのは、オブジェクト指向では無いよね?
でも、プロシージャ等の一式をクラスに纏めるのも微妙だけど、どういう書き方綺麗かな?
535:デフォルトの名無しさん
10/06/10 21:15:57
exitのエラーは-1じゃね?
536:デフォルトの名無しさん
10/06/10 21:58:53
>>535
俺の知る限りの環境では0以外全部エラーだお
537:デフォルトの名無しさん
10/06/10 22:53:11
>>492
ん?
>>480は単なる一例であって、特に環境依存の話ではないが?
538:デフォルトの名無しさん
10/06/10 23:07:19
次のようなコードで::max<int>()でも::max<d>()でも実体化出来るようにしたいのですがどう直せばいいでしょうか。
#include <algorithm>
template<typename T> class c{ /* 省略 */ };
template<typename T> c<T> max(const c<T>& a, const c<T>& b) { return std::max(a, b); }
class d { /* 省略 */ };
namespace std {
d max(const d&, const d&) { /* 省略 */ }
}
::max<int>()は一例で、要するに何でも受け付けるようにしたいという意味です。
ここで実現したい制限がいくつかあります:
1. 値が変化するためstd::max(const d&, const d&)の戻り値はconst d&に出来ない。つまりalgorithmのstd::max()を特殊化出来ない。
2. std::max(const d&, const d&)が宣言されない場合があるため、::max<T>()はstd::max(const d&, const d&)の存在を知らなくてもいいようにしたい。
当然その時はコード中に::max<d>()を実体化するようなコードは無い。
またそもそも論として、
1. ::max<int>()でも::max<d>()でも実体化できるようにする際に::max<T>()の中で呼び出すべきなのはstd::max()なのか。
2. d max(const d&, const d&)の宣言場所はstdの中でいいのか。
といった疑問があります。
539:538
10/06/10 23:23:02
実際に試せるコードの方がいいですね。
#include <algorithm>
template<typename T> struct c { T v; };
template<typename T> c<T> max(const c<T>& a, const c<T>& b) { c<T> r = {std::max(a.v, b.v)}; return r; }
struct d { int v; };
namespace std {
d max(const d& a, const d& b) { d r = {a.v+b.v}; return r; }
}
int main(int a, char** v)
{
c<int> ci;
c<d> cd;
max(ci, ci);
max(cd, cd);
}
::max<T>()をstd::max(const d&, const d&)より後に宣言すればコンパイルできるのですが、
出来ればstd::max(const d&, const d&)はどこに現れても(現れなくても)コンパイルできるようにしたいです。
540:デフォルトの名無しさん
10/06/10 23:26:11
stdに変なもん入れんなよ
541:538
10/06/10 23:29:02
>>540
やっぱり入れないほうがいいですよね。
stdに入れないで::max<int>()と::max<d>()を両立するにはどうしたらいいでしょうか。
542:デフォルトの名無しさん
10/06/10 23:42:05
>値が変化するためstd::max(const d&, const d&)の戻り値はconst d&に出来ない
とはなんのことを言ってるのか、さっぱりわからない
543:デフォルトの名無しさん
10/06/11 00:48:53
>>538
URLリンク(codepad.org)
テンプレートの特殊化ではいかんのか?
SFINAEやりたいが部分特殊化できないという話なら boost::enable_if 使え。
544:538
10/06/11 00:56:43
>>542
示したのは意味のない例ですが、例ではmaxの中でa+bってやってますよね。
だからconst d&を返すことが出来ないんです。
>>543
ありがとうございます!
時を同じく丁度自前template maxの定義を思いついたところでした。
std::maxを特殊化しようとしないで自分で新たにtemplate maxを作って、それを特殊化しちゃえば良かったんですよね。
545:デフォルトの名無しさん
10/06/11 01:34:58
初歩的な質問で恐縮なんですが継承を行うと
基本クラスのデータメンバは派生クラスにも同じように
データメンバが作られるのでしょうか?
また基本クラスのデータメンバをprotectedにして
publicで継承したとき,派生クラスは基本クラスのデータメンバに
アクセス,変更が出来るという認識でよろしいでしょうか?
546:デフォルトの名無しさん
10/06/11 01:36:08
C++&DirectX(dxlib)でゲーム作ってるんだけど、ムービーシーンにFlashムービーで作った物を使いたい(楽なので)
何か方法ある?
547:デフォルトの名無しさん
10/06/11 01:44:05
>>546
ieコンポ使えばいいよ
548:デフォルトの名無しさん
10/06/11 01:46:31
>>546
ついでにゲームの核もFlashで作っちゃえばいいのにw
549:デフォルトの名無しさん
10/06/11 01:53:02
>>547
ググったけどよく分からなかった というかなんか周りくどくない?
>>548
AS3でも遅すぎて話にならん
550:デフォルトの名無しさん
10/06/11 02:03:09
Flashからaviに変換すりゃいいんでね?
551:デフォルトの名無しさん
10/06/11 02:05:44
>>550
画質荒くなるしサイズ大きくなるし、いいこと無し
552:デフォルトの名無しさん
10/06/11 02:10:01
>>549
じゃあムービーのときだけIE立ち上げればいいよ
553:デフォルトの名無しさん
10/06/11 02:27:42
ノ´⌒ヽ,,
γ⌒´ ヽ,
// ""⌒⌒"\ ) _/\/\/\/\/|_
i / ⌒ ⌒ ヽ ) \ /
!゙ (・ )` ´( ・) i/ < 泣かせるおつむ >
| /// (__人_)//| / \
\__ `ー'_/  ̄|/\/\/\/\| ̄
/ ,}  ̄  ̄ { ヽ,
/ i i \
/ /^i| |i^ヽ \
ヾ ̄ i / .l l \._ノ`フ
 ̄ ̄ ト ,, ,.l  ̄
| \ / |
l ヽ_r l
| | |
l ,,_ l _,,. l
} ! {
/ 二二 | 二二ヽ
i⌒i .i⌒i i⌒i ____ __
| .|.| .| | .| ,ー、◎ (____ ) (__) rヽ
ノ ノ | .| , r──ヽ | .二ノ r──ヽ / / | |
ノ ノ | .レ'ノ .ヽ──┘ | .|__ノヽ ヽ──┘ (⌒ / .ノ |
∠/ |____ノ ゝ___ノ ヽ ヽ ( ̄ ̄ ノ
554:デフォルトの名無しさん
10/06/11 02:35:48
>>545の質問お願いします。。
555:デフォルトの名無しさん
10/06/11 02:38:56
>>554
URLリンク(www7b.biglobe.ne.jp)
556:デフォルトの名無しさん
10/06/11 05:02:05
>>555
サイトの紹介ありがとうございます。
データメンバも継承されることは分かったのですがprotectedがまだ今ひとつ分かりません。protectedは派生クラスから基本クラスの値を変更する為に利用するのでしょうか?それとも基本クラスから継承したデータメンバを変更する為に利用されるのでしょうか?
よろしくお願いします、
557:デフォルトの名無しさん
10/06/11 07:11:35
ポインタの意味がサイトとか見てもよくわかりません。
例えば
(*p)はどういうことなんですか?(*f)もあるんですが
558:デフォルトの名無しさん
10/06/11 09:19:45
C言語習得に一番初心者に優しいわかりやすいサイト教えてください。
猫でもわかる~でも難しいです。
559:デフォルトの名無しさん
10/06/11 09:26:34
猫の先生はいしゃ
URLリンク(www.orchid.co.jp)
560:デフォルトの名無しさん
10/06/11 09:37:01
>>556
protectedは実際はあまり使われない
ロベールのC++でも買って読むと良い
基本クラスでprivateで、そのまま継承して継承したクラスからも
見えるようにしたい時に使う事か多いけど実際はそんなに登場
する機会はない
561:デフォルトの名無しさん
10/06/11 09:52:55
>>552
阿呆なのか?
562:デフォルトの名無しさん
10/06/11 11:42:49
(*p)と(*f)の違いについて
563:デフォルトの名無しさん
10/06/11 11:57:27
そのサイトでは、変数 p と q は上のほうで何て定義してある?
猫の先生は内科の医者
URLリンク(www.orchid.co.jp)
564:デフォルトの名無しさん
10/06/11 20:34:43
>>560
ありがとうございました!
非常に参考になりました。
565:デフォルトの名無しさん
10/06/11 20:40:05
自作のテキストエディタに予想変換機能(簡単な物)を付けたいのですが
その手の解説かソースプログラムある場所ありますか?
出来ればVC++のウィンドウズ非コンソールプログラムで
566:デフォルトの名無しさん
10/06/11 22:25:15
>>565
現状何が問題なのよ。
予測文字列を算出することなのか、予測文字列群をポップアップで表示する方法なのか、いろいろあるでしょ。
567:デフォルトの名無しさん
10/06/11 23:29:28
>>566
出来れば予測文字郡をリストボックス形式で表示して
入力と共にリストが絞り込める形がいいです
568:デフォルトの名無しさん
10/06/11 23:37:24
share_ptrって凄く便利だけど遅かったりするの?
569:デフォルトの名無しさん
10/06/12 00:10:26
>>567
それで今どこまで出来てるの
570:デフォルトの名無しさん
10/06/12 07:52:52
>>568
メリットに対してコストは全然問題ないレベル。
普通に使って問題ないよ。万が一問題になったらそこで対応すればいい。
571:デフォルトの名無しさん
10/06/12 10:06:14
>>570
ありがとん!
あともう一つ質問なんだけど、
listのremove()で、とあるメンバ変数が1だったら削除、とかやりたいんだけどどうやって指定したらよいの?
いろんなサイト見てるけどlist<int>とか<char>ばかりで<class*>がない…
572:デフォルトの名無しさん
10/06/12 10:09:54
>>571
remove_ifを使う。
573:デフォルトの名無しさん
10/06/12 10:14:27
>>571
std::remove_if
574:デフォルトの名無しさん
10/06/12 10:27:20
>>572-573
センキュー!
575:デフォルトの名無しさん
10/06/12 10:42:09
ごめん、やっぱ分からん
メンバ変数の指定ってどうやるの?
576:デフォルトの名無しさん
10/06/12 10:49:25
>>575
std::mem_fun_refを使って渡す
メンバ関数のアドレスを直接渡そうとするのはダメよ
577:デフォルトの名無しさん
10/06/12 10:50:14
ごめんなさい間違えました
578:デフォルトの名無しさん
10/06/12 10:56:45
>>575
bool func(Object t){
if (t.x = 1)
return 1;
else
return 0;
}
みたいなのを作ってremove_if の第三引数に渡す
579:デフォルトの名無しさん
10/06/12 10:57:56
boost::bind使うと楽なんだけどな
580:デフォルトの名無しさん
10/06/12 10:58:42
C++0xだと思わずラムダ式を使ってしまう
C++にもboost::lambdaは使えるけど
581:デフォルトの名無しさん
10/06/12 11:06:52
>>578
なるほど、クラスまるごと受け取るのか
やってみる
582:デフォルトの名無しさん
10/06/12 12:05:18
一回の走査で配列から中間値に最も近い値をもつインデックスを見つけることってできる?
583:デフォルトの名無しさん
10/06/12 12:13:08
できたら、ソートのアルゴリズムに大革命起こせるな。
584:デフォルトの名無しさん
10/06/12 12:16:12
え?普通に出来るだろ。
585:デフォルトの名無しさん
10/06/12 12:21:32
>>584
やってみろよ
586:デフォルトの名無しさん
10/06/12 12:25:38
メモリーにインデックスと値の組を保存する。
値の平均を計算する。
平均に最もちかいインデックスを検索する。
587:デフォルトの名無しさん
10/06/12 12:26:10
ソートしておく
588:デフォルトの名無しさん
10/06/12 12:30:08
>>586
2回走査するうえに中間値でもない。
589:デフォルトの名無しさん
10/06/12 12:33:00
ほんとに中間値なら最大値と最小値の間の数は全部中間値ってことになるよ。
平均値の間違いかと思ったよ。
ちなみに走査は一回しかしてないよ。
590:デフォルトの名無しさん
10/06/12 12:37:10
>>587
ソートした時点で既にオーダーが最低NlogNになってまうだろうが
O(N)にはならない
591:デフォルトの名無しさん
10/06/12 12:38:21
590は必要条件と十分条件の区別が付いてないようだな・・・・
592:デフォルトの名無しさん
10/06/12 12:40:45
>>591
いや、区別は付いている
ソートしてあるという前提条件が付いているなら
それは必要条件になる
593:デフォルトの名無しさん
10/06/12 12:42:10
>>589
はかわいそうな子
594:デフォルトの名無しさん
10/06/12 12:45:08
>>589が正しい。
595:デフォルトの名無しさん
10/06/12 12:46:23
そうだな、>>589であってるよ。
596:デフォルトの名無しさん
10/06/12 12:46:41
O(N)⇒一回の走査だけど、
一回の走査⇒O(N)じゃないからね。
一回の走査したあと他に何かする場合もあるからね。
597:デフォルトの名無しさん
10/06/12 12:48:01
>>596
別の配列に移してソートするんですね。
598:デフォルトの名無しさん
10/06/12 12:48:43
>>597
その通りです。
599:デフォルトの名無しさん
10/06/12 12:51:18
>>596
>一回の走査⇒O(N)じゃないからね。
え?
600:デフォルトの名無しさん
10/06/12 12:52:39
一回の走査をするアルゴリズムの略にきまってるだろ。
601:デフォルトの名無しさん
10/06/12 12:55:00
>>598
意味ねえーーー
602:デフォルトの名無しさん
10/06/12 13:28:59
だからソートしたらOが変わるって
603:デフォルトの名無しさん
10/06/12 13:57:55
listでさ
あらかじめある程度の領域確保しといて、足りなくなったら適当な所から取って使う
みたいなこと出来ない?
placement new+仮想メモリ みたいな
604:デフォルトの名無しさん
10/06/12 14:05:16
>>603
そういうアロケーターを書いてあるそのままに作ればいいと思うよ
605:デフォルトの名無しさん
10/06/12 14:37:17
>>603
listにはそのためにアロケーターを指定できるようになっている。
boostにすぐ使えるpoolアロケータが用意されているからそれを使うのが楽
こんな感じ
list<hoge,boost::fast_pool_alocator<hoge>> a;
606:デフォルトの名無しさん
10/06/12 15:24:26
>>596
二回の走査でもO(N)
従って
> O(N)⇒一回の走査だけど、
は間違い。
607:デフォルトの名無しさん
10/06/12 15:46:54
>>605
まじで! ありがとう、使ってみる
608:デフォルトの名無しさん
10/06/12 15:48:31
綴りミスってた fast_pool_allocatorだな。
609:デフォルトの名無しさん
10/06/12 15:55:34
Boostのアロケータか
使ってみたけどあまり変わらんぞ
はっきり言ってあまり期待しない方がよい
標準のアロケータで通常は十分
610:デフォルトの名無しさん
10/06/12 16:05:22
そもそも標準で十分だと思ってるヤツ向けの機能じゃないし。
611:デフォルトの名無しさん
10/06/12 16:07:08
boostって実際使って仕事してる?
規約で禁止されてるところとか多そう。
612:デフォルトの名無しさん
10/06/12 16:09:06
必要があれば使うけど、基本的には使わない。
613:デフォルトの名無しさん
10/06/12 16:29:53
>>609
意外と標準のnewは速いから大きな差はないな。差がないのはアロケータはスレッドセーフにする必要があるのが要因のようだね。
プールアロケータのメリットはたくさんのオブジェクトを作成、破棄を繰り返すときにヒープの断片化を防ぐ。これはnewの速度低下に地味に効いてくる。
あと、オブジェクトの生成破棄再生成を繰り返すときの高速化ぐらいだね
614:デフォルトの名無しさん
10/06/12 16:54:36
二つ以上のクラスで同じ関数使いまわしたいんだけど何かいい方法ない?
class CA {
void hoge();
}
class CB {
void hoge();
}
void CA::CB::hoge() {
}
こんなイメージ(勿論上はエラー)
まあ二回書けばいいんだけど、中身が数十行あるからうざったい
615:デフォルトの名無しさん
10/06/12 16:57:30
>>614
継承
616:デフォルトの名無しさん
10/06/12 17:05:11
テンプレート関数でできそうな飢餓。
617:デフォルトの名無しさん
10/06/12 17:11:33
普通に
class Choge {
void hoge();
}
class CA:public Choge {
}
class CB:public Choge {
}
void Choge::hoge() {
}
これでいけるか
合ってるよね?
618:デフォルトの名無しさん
10/06/12 17:12:19
is-a に出来ないんだったら絶対にpublic継承は使うなよ
場合によっちゃprivate継承が適切なケースもあるが
なるべくならコンポジションだ
619:デフォルトの名無しさん
10/06/12 17:20:35
もうちょっとわかりやすく!
620:デフォルトの名無しさん
10/06/12 17:21:21
>>617
そのhoge()はなんでメンバ関数なんだ? そこをよく考えて設計するべき。
621:デフォルトの名無しさん
10/06/12 17:33:14
>>617
あってるよ。それでいい。
622:614
10/06/12 17:55:09
ありがとうございました!
623:デフォルトの名無しさん
10/06/12 19:06:49
std::istringstreamからstd::getline()やらread()やらでデータを取得していって、
さぁ残りの文字列を取得しようとstr()を呼んだら最初の初期化で指定したものが出てきました。
現在の読み込み位置以降の文字列を取得するスマートな方法は無いですか?
624:デフォルトの名無しさん
10/06/12 19:21:49
>>623
istreambuf_iteratorでもなんでもいいけど、
istringstreamから残り全部の文字を読み出すようなコードを書くのが手っ取り早いと思う。
625:623
10/06/12 20:11:54
>>624
どうもありがとうございます。大当たりです。
std::string str( ( std::istreambuf_iterator<char>(istr) ), std::istreambuf_iterator<char>() );
で期待した動作になりました。
626:デフォルトの名無しさん
10/06/13 10:22:26
c++の学習のためにゲームを作っているのですが、コードを書くごとにどんどんグローバル変数が増えていって困っています。
呼び出し関係のない2つの関数で共通する変数を扱う為にグローバル変数を使う、というパターンがほとんどなのですが、
こういう場合にグローバル変数をなるべく使わないで済ます方法はないでしょうか?
たとえばカーソルを動かして選択肢を選ぶ処理を作るために、
「キーボードの入力を受け取ってカーソルの位置情報を動かす」関数と「位置情報からカーソルを描画する」関数があり、
カーソルの位置情報をグローバル変数にするという感じです。(上記の関数はどちらもゲームのメインループから呼び出しています)
627:デフォルトの名無しさん
10/06/13 10:28:05
>>626
「カーソル位置情報を動かす」オブジェクトが「カーソルを描画する」オブジェクトを参照できるようにしておく。
628:デフォルトの名無しさん
10/06/13 10:33:57
>>626
オブジェクトうんぬんじゃなくて、ただの構造化プログラミング的には
キーボードの入力を引数にとり、カーソルの位置情報を返す関数
位置情報を引数にとり、カーソルを描画する関数
キーボードの入力を受け取って上記二つを呼び出す関数
に分けるとか
そういう風にするだけでも、関数内でそれなりに完結するようになって大分良くなるんじゃないかな
629:デフォルトの名無しさん
10/06/13 10:34:08
カーソル位置情報を関数に参照渡しすれば?
630:626
10/06/13 10:44:34
ご回答ありがとうございます。
実は学習のしかたが偏っていたせいか、今まで参照がどんなものなのか知りませんでした。
今参考書をあたりつつ、関数の分け方も考えています。
631:デフォルトの名無しさん
10/06/13 11:20:34
listがremove()使ったほうがいいって言われるのはなんで?
一個だけ削除するにもremove使ったほうがいいの?
632:デフォルトの名無しさん
10/06/13 12:22:43
>>631
どこに書いてあった?
633:デフォルトの名無しさん
10/06/13 12:23:52
普通の関数のremoveよりメンバ関数のremove使った方がいいって話と勘違いしてるとか?
634:デフォルトの名無しさん
10/06/13 13:47:08
>URLリンク(www.geocities.jp)
>erase() はイテレータを使い、指定された要素を削除します。ただし、list の場合は要素の削除には、 remove() の方を使うべきです。
>remove() は、指定した値を持つ全ての要素を削除します。remove_if() は、削除する要素の条件を指定できるものですが、この辺りは使い方が難しいので説明を省きます。
635:デフォルトの名無しさん
10/06/13 14:06:42
?removeは機能も違うし置き換えにはらんだろう。しかもO(N)じゃないのか?
636:デフォルトの名無しさん
10/06/13 17:42:48
>>634
そこ間違いが多いから参考にしないほうがいいよ
637:デフォルトの名無しさん
10/06/14 01:03:17
高橋麻奈著の『やさしいC』を読み終えファイル入出力までは理解できた
次は何すればいい?C以外の言語を学んだ方が良い?
638:デフォルトの名無しさん
10/06/14 06:42:49
次は自分で考える事を勉強する、かな
639:デフォルトの名無しさん
10/06/14 11:46:43
>>637
書け。
640:デフォルトの名無しさん
10/06/14 13:13:06
>>637
つスレリンク(tech板)
641:デフォルトの名無しさん
10/06/14 13:31:03
ソースファイル落としたら.mの拡張子のファイルも入ってて良くわからないです
明日までにとりあえず動作させなければいけないんで
使い方だけ簡潔に教えていただければ助かります
642:デフォルトの名無しさん
10/06/14 13:39:29
m4 かなあ?
643:デフォルトの名無しさん
10/06/14 13:45:10
mファイルと言うらしいのですが、matlabは触ったことがないので全然分からないのです…
特別なコンパイラとかいるのでしょうか?
644:デフォルトの名無しさん
10/06/14 13:46:38
matlabが必要になります。
645:デフォルトの名無しさん
10/06/14 16:14:58
オーバーフローアンダーフローを検出してくれる整数演算のライブラリってなんかありますか?
646:デフォルトの名無しさん
10/06/14 17:54:08
.mってObjective-Cじゃないんかね
647:デフォルトの名無しさん
10/06/14 18:39:43
>>645
SafeInt
648:デフォルトの名無しさん
10/06/14 23:13:49
初期化子でポインタは初期化できないのですか?
649:デフォルトの名無しさん
10/06/14 23:15:07
初期化出来るでしょ
650:デフォルトの名無しさん
10/06/14 23:24:35
MATLAB なら Octave が free soft。
651:デフォルトの名無しさん
10/06/14 23:55:01
int i;
sscanf(str, "%d", &i);
これでstrにiを超える桁数の数が入ってたら
適当に丸めてくれるの?
それとも桁あふれになるの?
652:デフォルトの名無しさん
10/06/15 19:29:53
struct Rec {
int type; /* 0なら四角、1なら丸*/
int yoko; /* 幅*/
int tate; /* 高さ*/
};
struct Cir {
int type; /* 0なら四角、1なら丸*/
int r; /* 半径*/
};
struct Zukei {
int type; /* 0なら四角、1なら丸*/
};
void RecCreate(void* hoge){
(Rec*)hoge->type=0;
(Rec*)hoge->yoko=10;
(Rec*)hoge->tate=5;
}
void CirCreate(void* hoge){
(Rec*)hoge->type=0;
(Rec*)hoge->r=7;
}
653:デフォルトの名無しさん
10/06/15 19:31:35
PrintMen(void* hoge){
switch((zukei*)hoge->type)
case 0:
sprintf("%d",(Rec*)hoge->yoko * (Rec*)hoge->tate);
case 1:
sprintf("%d",(Cir*)hoge->r * (Cir*)hoge->r * 3.14);
}
main{
zukei* x;
RecCreate(x);
(間にいろんな処理)
PrintMen(x);
}
先輩の作ったモジュール見たらこんな感じのコード出てきたんですが
CreateTri抜ける~PrintMen行くまでにyoko、tateの情報落ちないんでしょうか?
zukeiへのポインタとしてしかxを宣言してない
(mainモジュール中でzukei構造体分のサイズしかメモリ確保してない?)んで
yoko、tateの値が入った領域って(間にいろんな処理)の際に
別の変数の為に使われちゃったりしないか気になるんですが。
654:デフォルトの名無しさん
10/06/15 19:39:29
>>653
すごい良くないコードだね。
危惧しているとおりに、違う型で上書きしなければ動くだろうけど。間違いを防止することができない良くないコードだね。
655:デフォルトの名無しさん
10/06/15 19:39:33
ひでぇコードだな
656:デフォルトの名無しさん
10/06/15 19:44:36
C++で仮想関数にすればまだ見られるようになりそうだが
657:デフォルトの名無しさん
10/06/15 19:52:37
回覧板の角で頭ぶっ叩くレベル
658:デフォルトの名無しさん
10/06/15 19:53:30
Cでクラス・継承を実装するのは結構めんどくさいよね
659:デフォルトの名無しさん
10/06/15 20:00:39
>>658
各構造体をunionするしかないか。コンパイラのチェックが効かないから相当危険なコードになるのは間違いないが。
660:デフォルトの名無しさん
10/06/15 20:03:53
Cなら普通にある。キミらが使っているネットワークスタックも同様に書かれている。
661:デフォルトの名無しさん
10/06/15 20:08:53
>>660
IPのアドレス構造体なんかそうだけど。
type値で切り替えるのは有るけど普通じゃないと思う。APIなどのインターフェースとかぐらいだろ
662:デフォルトの名無しさん
10/06/15 20:20:29
xの先はどこで確保されているんだろう。
常識的に考えればRecCreate()で確保するのが関の山だと思うが。
663:デフォルトの名無しさん
10/06/15 20:41:46
>>652はLが無いけど、TLVな構造なんてどこでも使われてるだろ。
664:デフォルトの名無しさん
10/06/15 20:55:24
型をコンパイラがチェックできなくなるんでお勧めできない方法だ
665:デフォルトの名無しさん
10/06/15 20:57:17
すみません。ポインタの変数の値が壊れる事に悩んでいます。
struct DATABOX { int no; bool chk; float *data_a, *data_b; }
この構造体のインスタンス
DATABOX dbox[100]; が有るのですが、
私がまだ理解できていないテンプレートを使った移植クラスの利用の為に
DATABOX* tmp = spDAry[i]->mpObj; // 右の式がテンプレートらしく理解が・・
ここに
tmp->data_a = dbox[i].data_a;
とすると正常通過する時と、dbox[i].data_a側が 0.000000 になってしまう時が有ります。
(デバッグで手前では数値が確実に入っています。必ず0.000000以外の数値で確認済みです。)
ここ以外 dbox[100] を触っている部分は全く無い処理に入ってから壊れるので
ここしか考えられないのです。
ポインタの扱いに慣れておらず、
イコールして右の式が壊れるなんて初めてで、混乱しております。
申し訳ないですが、何がまずそうかできれば推測で構いませんので、助言頂けませんでしょうか
666:デフォルトの名無しさん
10/06/15 20:59:41
>>665
おそらくテンプレートは関係ない。
先ずは周辺のソースを全部出せ。
667:デフォルトの名無しさん
10/06/15 21:02:33
spDAry[i] の i が spDAry のサイズを超えてるんじゃないの?
んで、tmp が変な所指してしまってて、dbox か i かの中身を壊してるとか
668:デフォルトの名無しさん
10/06/15 21:55:23
>>664
お勧めの方法提示してから否定しろよ。
669:デフォルトの名無しさん
10/06/15 21:57:34
C++を使うのがおすすめですよ
670:デフォルトの名無しさん
10/06/15 21:58:12
型をちゃんと指定するのがおすすめですよ
671:デフォルトの名無しさん
10/06/15 22:12:43
OpenCVもCで継承使ってる部分はvoid *だな
C++だと問題ないんだが
672:デフォルトの名無しさん
10/06/15 22:14:56
>>668
C++で継承を使うのがお勧めだろう。
今回の例だと
class Zukei
{
public:
virtual ~Zukri(){}
virtual void PrintMen()=0;
};
class Rec :public Zukei
{
int type; /* 0なら四角、1なら丸*/
int yoko; /* 幅*/
int tate; /* 高さ*/
public:
virtual void PrintMen(){//略}
};
class Cir :public Zukei
略
class Rect :public Zukei
略
673:デフォルトの名無しさん
10/06/15 22:15:01
他言語から使う以外に手間をかけてまでわざわざCでやるメリットは有るのか?
674:デフォルトの名無しさん
10/06/15 22:15:52
>>672
typeは要らなかったな。こぴぺミスった
675:デフォルトの名無しさん
10/06/15 22:30:14
>>673
新規案件ならC++だろう。
既存コード使うならCを使わざるを得ないだろうけど
676:デフォルトの名無しさん
10/06/15 22:41:59
InitTest::InitTest(QString *p)
: m_str(QString("abc")),
m_pstr(new QString("abc"))
こんな初期化子の使い方ありだと思いますか?
677:デフォルトの名無しさん
10/06/15 22:48:17
pはどこに行ったの?
678:デフォルトの名無しさん
10/06/15 22:53:33
何の問題ですか
679:676
10/06/15 22:57:12
>>677
pは消し忘れました
無視してください
>>678
ポインタは初期化子で初期化するのか
コンストラクタの中で初期化するのか気になっただけです
680:デフォルトの名無しさん
10/06/15 23:04:05
ぶっちゃけどっちでもたいした差はないよ
初期化子でnewしてもいいし
初期化子で0クリアして後でnewしてもいい
681:デフォルトの名無しさん
10/06/15 23:05:56
>コンストラクタの中で
そりゃ代入
QString * const m_pstr
だったら後者は使えない
682:デフォルトの名無しさん
10/06/15 23:20:44
>>675
extern Cで十分じゃないか?
同僚にCしか使えないような奴がいるんなら別だけど。
683:デフォルトの名無しさん
10/06/16 10:44:26
C++にはプログラムを見難くする機能が満載である。
>>652の方がずーっとまし。
684:デフォルトの名無しさん
10/06/16 10:45:10
それはないわ
685:デフォルトの名無しさん
10/06/16 12:44:01
>>652 はほとんどC++だからね
どっちがましかと言えば、同じようなもんだけど
C++の方がきれいに書けるだろうね
686:デフォルトの名無しさん
10/06/16 14:35:28
>>653
>zukeiへのポインタとしてしかxを宣言してない
その通り。
>(mainモジュール中でzukei構造体分のサイズしかメモリ確保してない?)
いや、Zukei構造体分の確保すらどこにもない。
>yoko、tateの値が入った領域って(間にいろんな処理)の際に
>別の変数の為に使われちゃったりしないか気になるんですが。
(間にいろんな処理)の以前、RecCreate()でyoko, tateに代入してる時点で
どこに書いてるのかわからない。
これが死なずに動いてるなら、それはただの偶然。
せめて、
main() {
Rec x;
RecCreate((void *)&x);
...
}
なら、動くだろうと思うけどさ。
687:デフォルトの名無しさん
10/06/16 19:56:03
ある数字の各桁をそれぞれ別の変数(配列)に代入したいんですが、いい方法ありますか?
688:デフォルトの名無しさん
10/06/16 19:57:22
10で割れ
689:デフォルトの名無しさん
10/06/16 19:58:11
>>688
すみません、もう少し詳しくお願いします
690:デフォルトの名無しさん
10/06/16 20:01:53
ここまでヒントもらって分からないとなるとひょっとすると脳に障害があるかもしれんな
691:デフォルトの名無しさん
10/06/16 20:05:33
for(i = 0; n; i++, n /= 10) a[i] = n % 10;
692:デフォルトの名無しさん
10/06/16 20:08:35
障害があったみたいです、ありがとうございました
693:デフォルトの名無しさん
10/06/16 20:31:37
いいってことよ
694:デフォルトの名無しさん
10/06/17 00:53:47
#include <iostream>
using namespace std;
static const int N = 1024;
static const double L = 1.0;
int main(int argc,char** argv)
{
int i;
double I[N],a[N],b[N];
double dx=L/N;
cout << dx << endl;
I[0]=1.0;
for(i=0;i<=N;i++){
a[i]=1.0;
b[i]=1.0;
}
cout << dx << endl;
for(i=0;i<N;i++) I[i+1] = (1-a[i]*b[i]*dx)*I[i];
cout << dx << endl;
return 0;
}
このコードで10,16と18行目でdxの値が変わるんですが17行目でdxを変えるような事はしてないと思うのですが
なんで変わってしまうかを教えてください
695:デフォルトの名無しさん
10/06/17 00:56:01
I[i+1]
696:デフォルトの名無しさん
10/06/17 01:03:56
#include <iostream>
using namespace std;
//static const int N = 1024;
//static const double L = 1.0;
int main(int argc,char** argv)
{
int i,N=1024;
double I[N],a[N],b[N];
double L=1.0,dx=L/N;
cout << dx << endl;
I[0]=1.0;
for(i=0;i<=N;i++){
a[i]=1.0;
b[i]=1.0;
}
cout << dx << endl;
for(i=0;i<N;i++) I[i+1] = (1-a[i]*b[i]*dx)*I[i];
cout << dx << endl;
return 0;
}
こっちだったら問題なく一緒になるんですがI[i+1]のところが問題あるんですか?
697:デフォルトの名無しさん
10/06/17 01:08:19
17行目のiが最大な時のi+1は?
698:デフォルトの名無しさん
10/06/17 01:11:43
i<N なんで最終的に i+1=N になってると思うのですが
699:デフォルトの名無しさん
10/06/17 01:15:45
double I[N] は l[0] .. l[N-1]まで
700:デフォルトの名無しさん
10/06/17 01:16:50
配列のサイズを[N+1]にしたら同じになるようになりました
しかしなんで同じになるのか解せません
701:デフォルトの名無しさん
10/06/17 02:38:23
似たようなアドレスにローカル変数ブチ込んでるから配列サイズオーバーして書き込んだ結果だろ。
702:デフォルトの名無しさん
10/06/17 03:26:38
&I[N] と &dx を出力してみると分かるよ
703:デフォルトの名無しさん
10/06/17 05:33:56
あとここも直しておくように
>for(i=0;i<=N;i++){
>a[i]=1.0;
>b[i]=1.0;
>}
704:デフォルトの名無しさん
10/06/17 09:02:32
質問してるときはその質問が一段落するまではなんか一時コテでも名乗ってくれや。
>694=>696=>698=>700でいいのか?
705:デフォルトの名無しさん
10/06/17 12:48:58
どうでもいい
706:デフォルトの名無しさん
10/06/17 22:27:06
メンバのstd::vector< boost::weak_ptr<T> > container にオブジェクトを追加する関数ですが
share_ptrで受けて
void add(boost::shared_ptr<T> const& sp){
boost::weak_ptr<T> wp(sp);
container.push_back(wp);
}
関数内でweak_ptrを追加するのか
それとも直にweak_ptrを受ける
void add(boost::weak_ptr<T> const& wp){
container.push_back(wp);
}
どちらがよいでしょうか
また、生ポインタを引数にとってうまくやる仕組みはないでしょうか?
それとも生ポインタは受けないようにした方が良いでしょうか?
707:デフォルトの名無しさん
10/06/17 22:32:39
どっちでもいいです
708:デフォルトの名無しさん
10/06/18 05:47:06
delete a;
delete b;
とすればOKなのですが、
delete a,b;
とするとmemory leakがおきます。なんででしょうか?
709:デフォルトの名無しさん
10/06/18 06:13:03
誰がそんな書き方ができるって言った?
710:デフォルトの名無しさん
10/06/18 06:31:43
>>708
delete(a,b);
711:デフォルトの名無しさん
10/06/18 07:14:01
>>708
delete a,b;
だと, はカンマ演算子なので
delete a;
b;
という感じになってるんだよ
712:デフォルトの名無しさん
10/06/18 07:14:12
え?
713:デフォルトの名無しさん
10/06/18 07:15:32
>>710
死ね
714:デフォルトの名無しさん
10/06/18 07:22:56
delete a, delete b;
715:デフォルトの名無しさん
10/06/18 09:12:34
可変長テンプレートで纏めてデリートがトレンディ
716:デフォルトの名無しさん
10/06/18 17:59:26
int a,b;はなぜOKなのでしょうか?
717:デフォルトの名無しさん
10/06/18 18:00:52
宣言だから
718:デフォルトの名無しさん
10/06/18 20:33:39
delete はああ見えて演算子だからね
719:デフォルトの名無しさん
10/06/18 22:39:08
マクロスエースフロンティア[YouTube]
URLリンク(www.youtube.com)
この動画みたいに、移動する物体(敵)を追いかけながら
曲線を描いて、ビーム、もしくはミサイルのようなものを発射するのって
どうしたら良いのでしょうか?
直線でビームを出すのなら2点間の座標を取ってその間で
動かせばいいと思うんですが
何故曲がりくねらせることが出来るのか分かりません助けて下さい><
720:デフォルトの名無しさん
10/06/18 22:48:16
>>560
亀ですまんが、protectedはよく使うだろ
721:デフォルトの名無しさん
10/06/18 23:02:30
>>719
毎フレーム玉とターゲットの位置を調べて軌道修正してる。あとスレチな
722:デフォルトの名無しさん
10/06/18 23:20:10
>>720
どんな時に使うんだ?
723:デフォルトの名無しさん
10/06/18 23:42:05
protected継承の話じゃなくて、protectedメンバの話だよな?
使う使う。
724:デフォルトの名無しさん
10/06/18 23:43:38
>>560はprotected継承の話だぜ
まあ滅多に使わないな
725:デフォルトの名無しさん
10/06/19 00:07:29
>>724
んじゃ、>>556に対して>>560が的外れなレスをしちゃったってことか。
>>556はprotectedメンバについての話をしてるもんね
726:デフォルトの名無しさん
10/06/20 16:49:11
メンバ変数をコンストラクタで全部0にしたいんだけどどうするのが定石?
floatとかはとりあえず考えない感じで
memset(this,0,sizeof(this));とかできんの?
727:デフォルトの名無しさん
10/06/20 17:01:18
>>726
memsetは危険。できない。
メンバー変数にはコンストラクターを持つ型を使用すれば、それらは自動的に初期化される。
コンストラクターを持たない型はboost::value_initializedを使う方法がある。
728:デフォルトの名無しさん
10/06/20 17:20:11
なるほど。ありがとう!
729:デフォルトの名無しさん
10/06/22 15:16:18
URLリンク(kansai2channeler.hp.infoseek.co.jp)の
// read fd_orgfile and write on fd_cpyfile
for (;;) {
size_t read_size;
char buf[1024];
read_size = read(fd_orgfile, buf, sizeof(buf));
if (read_size == 0) {
break;
}
write(fd_cpyfile, buf, read_size);
}
に複数間違いがあると言われたのですが分かりません
お手数ですが教えて下さい!
730:デフォルトの名無しさん
10/06/22 15:31:01
>729
エラー処理ができていないってことかな。
read はエラーが発生すると -1 を返すけど、size_tはunsignedなので受け取れないとか。
(read_sizeに-1を代入すると MAX_UINTにかわってしまう。 (size_t)-1 と比較すればいいんだけど。)
どうせ、1024より大きな値が返ることはないので, int read_size にしておけばいい。
writeの戻り値をチェックしていないとか。
731:デフォルトの名無しさん
10/06/22 18:50:09
コンストラクタTest()の中で別のコンストラクタを呼び出したいのですが
※1のようにしてTest()を実行しても変数nameは空のままです。
※2のようにするしかないのでしょうか?
---------------------------------------
※1
Test(){
Test("名無し");
}
Test(const string& st){
setName(st);
}
void setName(const string& st){
name=st;
}
---------------------------------------
※2
Test(){
setName("名無し");
}
Test(const string& st){
setName(st);
}
void setName(const string& st){
name=st;
}
732:デフォルトの名無しさん
10/06/22 19:03:01
>>731
C++0x準拠のC++ならこう書けるけどね
Test() : Test("名無し") {
}
733:デフォルトの名無しさん
10/06/22 20:53:33
>732
ありがとうございます。
記述を変更したところ、
E2312 test.cpp 13: 'Test' は曖昧でない基本クラス 'Test' ではない(関数 Test::Test() )
よろしくお願いします。
734:デフォルトの名無しさん
10/06/22 21:04:38
C++0xだとと書いてあるね。
735:デフォルトの名無しさん
10/06/22 21:37:32
ありがとうございます。
了解です。
736:デフォルトの名無しさん
10/06/22 21:46:12
>>732
これVC++2010でも対応してないんだよなあ
すっげー期待してたのに
737:デフォルトの名無しさん
10/06/23 01:36:51
while(!関数名)ってあったんですけどこれってどういう意味なんでしょうか?
もし関数が0を返したらwhile(!0)になると思うんですがこれは真なんでしょうか?
よろしくお願いします。
738:デフォルトの名無しさん
10/06/23 01:47:11
>>737
0を返すまでループ、って意図じゃないのか
739:デフォルトの名無しさん
10/06/23 02:00:01
>>738
よく分かりました。
ありがとうございます!
740:デフォルトの名無しさん
10/06/23 02:35:26
日本語にするなら、1が返っている間はループ、ほうが多いかな
まあどっちでもいっしょだけど
741:デフォルトの名無しさん
10/06/23 02:45:31
関数が0を返してる間はループだろw
正反対じゃねーかよ
742:デフォルトの名無しさん
10/06/23 03:37:50
>>740
1が返ってきたら抜ける、と読み替えたとしてもまるでダメだな
743:デフォルトの名無しさん
10/06/23 09:11:13
while (somefunc() == 0) って書くほうが意図がはっきりしていていいじゃないか。
744:デフォルトの名無しさん
10/06/23 09:50:04
while(! isReady())
分かりやすい
while(isReady() == 0)
分かりづらい
745:デフォルトの名無しさん
10/06/23 10:05:20
while(isReady() == FALSE)
これでおk
746:デフォルトの名無しさん
10/06/23 11:58:18
LPVOIDから(ry
環境 XPSP3, VC++2008EE
DDSURFACEをDIBに変換して色情報をLPVOID lpvBitsから R=0x0F とかいう具合に
取り出したいのですが, どのようにすればいいでしょうか?
フックするのに必要だったので#define CINTERFACE してます
bool Screenshot(LPCTSTR FileName, LPDIRECTDRAWSURFACE7 lpDDS)
{
if (!FileName || !lpDDS) return false;
bool Success=false;
HDC SurfDC=NULL; // GDI-compatible device context for the surface
HBITMAP OffscrBmp=NULL; // bitmap that is converted to a DIB
HDC OffscrDC=NULL; // offscreen DC that we can select OffscrBmp into
LPBITMAPINFO lpbi=NULL; // bitmap format info; used by GetDIBits
LPVOID lpvBits=NULL; // pointer to bitmap bits array
中略)
if (!GetDIBits(OffscrDC, OffscrBmp, 0, Height, NULL, lpbi, DIB_RGB_COLORS))
ERROR_BREAK(5);
if ((lpvBits = new char[lpbi->bmiHeader.biSizeImage]) == NULL)
ERROR_BREAK(6);
if (!GetDIBits(OffscrDC, OffscrBmp, 0, Height, lpvBits, lpbi,
DIB_RGB_COLORS)) ERROR_BREAK(7);
ここのlpvBits[x+y*width]から取り出す場合どうすればいいのでしょう.
32bitBitMapだと仮定します.widthは中略内で宣言されてます
747:デフォルトの名無しさん
10/06/23 12:36:11
URLリンク(codepad.org)
これでセグっちゃうんですが何がいけないんでしょうか?
gdbで見てみたら
#0 0x00007ffff7ab3dd9 in vfprintf () from /lib/libc.so.6
#1 0x00007ffff7abecb8 in fprintf () from /lib/libc.so.6
#2 0x000000000040076c in main (argc=1, argv=0x7fffffffe8a8) at print.c:24
こんなエラーがでてきます
748:デフォルトの名無しさん
10/06/23 12:44:37
そのループでいいのか?
749:デフォルトの名無しさん
10/06/23 12:50:44
fopenの回数とfcloseの回数が全然違う。
750:747
10/06/23 12:52:01
正しくはiのループはfprintfの上にあるべきだと思うんですがそれでもエラーでるんでいろいろ試してました
751:デフォルトの名無しさん
10/06/23 12:57:11
fopenしっぱなしでfcloseしないでいると、一つのプロセスで開いておけるファイル数には制限があるので
そのうちfopenに失敗してfpがNULLになってsegvしている。
752:デフォルトの名無しさん
10/06/23 12:59:31
何がしたいループなのかよくわからん。
datはいくつ作りたいんだよ?
753:デフォルトの名無しさん
10/06/23 13:03:38
URLリンク(codepad.org)
これで自分のパソコンでは動くようになりました
ありがとうございました
754:デフォルトの名無しさん
10/06/23 13:04:28
セグっちゃう
755:デフォルトの名無しさん
10/06/23 13:42:35
セグウェイに乗れってことだろw
756:746
10/06/23 14:01:17
代わりにgdi+になげて何とかしてみましたが,
たまに一般的エラー?をはきます。
fail safeかけて今のところ順調に動いてますが, 不安定なモジュールなのでしょうか.
757:デフォルトの名無しさん
10/06/23 14:10:51
>>756
二行目の . が 。になってるYO
758:デフォルトの名無しさん
10/06/24 18:26:15
>>753
世の中夜勤帰りで朝から寝てる人だっているんだよ?
引っ越しの時ちゃんと挨拶行った?
顔合わせたら軽く会話するとかしてちゃんとコンタクト取り続けてる?
日頃からそういうコミニュケーションが取れてればいつ洗濯機を回していいのか
いつ静かにしなければならないのか
迷惑を掛けないように生活出来るはずなんだが
759:デフォルトの名無しさん
10/06/24 18:43:02
>>758
死ね
760:デフォルトの名無しさん
10/06/26 01:57:45
VC++2005のMFCについて質問です。
数値(BYTE型)を入力するエディットボックスを使用します。
DELETEキー等でボックス内の値を未入力状態にすると
「0から255までの数値を入力してください」と出るのですが
これを表示させない方法があれば教えていただけますか?
761:デフォルトの名無しさん
10/06/26 12:26:49
>>758
表札すら出してない隣人どもにわざわざ挨拶なんてしない
仮にしたとしても世間話にすらならないので相手の生活は基本推して知るべしだな
762:デフォルトの名無しさん
10/06/26 12:29:15
>>760
値のチェックをしなけりゃいい
763:デフォルトの名無しさん
10/06/27 00:20:52
>>762
値のチェックを有効にしたままメッセージだけ出さないように
したいんです。
自分で範囲を決める場合(たとえば1から10までを入力可能範囲
にする)ならメッセージだけ回避する方法はわかるのですが、
型の入力範囲(BYTEなら0から255)そのものに対するチェックを
有効にした上でメッセージだけ回避したいのです。
764:デフォルトの名無しさん
10/06/27 09:26:35
>QIODevice::QIODevice() : QObject(*new QIODevicePrivate, 0)
コードを読んでいたらこんなのを見つけたわけですが、
なんでnewの前に *を付けるんですか?
765:デフォルトの名無しさん
10/06/27 09:35:18
newで返ってくるのはポインタ型。 それに*をつけて参照型にしてるだけ。
766:デフォルトの名無しさん
10/06/27 11:28:46
「初期化子リスト」の読み方ですが、
「しょきかし・りすと」 or 「しょきか・こりすと」
どっちが正しいのでしょうか?
767:デフォルトの名無しさん
10/06/27 11:32:35
>>765
まて、それどうやってdeleteするんだ?
768:デフォルトの名無しさん
10/06/27 11:33:16
>>766
しょきかし・りすと
769:デフォルトの名無しさん
10/06/27 11:54:59
>>767
関数内じゃね?
出来るのか出来ても意味あるのか知らんけど。
770:デフォルトの名無しさん
10/06/27 12:07:16
>>769
たしかに、参照で受けたのをdeleteするって変だよね
771:デフォルトの名無しさん
10/06/27 12:08:08
>>767
&つけてdeleteすれば問題はない
772:デフォルトの名無しさん
10/06/27 12:11:17
それは参照の使い方として正しいのか?
773:デフォルトの名無しさん
10/06/27 12:17:22
出来ると思うけどあまりいいコーディングとは思えないな
shared_ptr使うのが吉
774:デフォルトの名無しさん
10/06/27 12:40:15
規格上問題はない
まあ生のポインタを保持する時点で気持ち悪いが
775:766
10/06/27 14:43:27
>>768
ありがとうございます。
776:デフォルトの名無しさん
10/06/27 19:40:57
pgm画像に空間フィルタをかけて、平滑化を行うプログラムを、C++で書いているのですが、
実行後の出力画像が分身(?)してしまいます。
何が原因なのでしょうか?
ソースファイル、原画像、出力画像はこちら。
URLリンク(www1.axfc.net)
プログラムはBCC Debeloperで組んでいます。
777:764
10/06/27 21:05:04
一応フレームワークのコードなので、
フレームワーク側で何とかしてくれているんじゃないですかね
778:デフォルトの名無しさん
10/06/27 21:14:28
>>776
読み込むときに横方向と縦方向が逆になってると思う
class.cpp
41 hig=HIG;
42 for(int i=0;i<hig;i++){
43 for(int j=0;j<wid;j++)
44 fscanf(fp,"%d",&pix[j][i]);
45 }
main.cpp
43 for(int i=0;i<HIG;i++){
44 for(int j=0;j<WID;j++){
45 fprintf(fp,"%d\n",op[j][i]);
46 }
47 }
779:デフォルトの名無しさん
10/06/27 21:24:03
template<class T>はclass T;と同じニュアンスで書いているのですか?
780:776
10/06/27 21:49:53
>>778
解決しました! ご協力感謝いたします。
URLリンク(www1.axfc.net)
781:デフォルトの名無しさん
10/06/27 21:55:03
List[5][2][20]の配列のi番目をaと置き換えたく
List[i][0]='a';
List[i][1]='a';
としたのですが、「式は変更可能な左辺値である必要があります」と
エラーが出ました。
どうしたらいいですか?
782:デフォルトの名無しさん
10/06/27 21:58:43
>781
i番目がどこなのかさっぱりわかりませぬ。
エラーメッセージの通り、左辺が変更可能では無いのでしょう。
Listはどのように宣言していますか?
783:デフォルトの名無しさん
10/06/27 21:58:57
>>781
要素数が一個足りないような……。
784:デフォルトの名無しさん
10/06/27 22:05:18
なんとなく
strcpy(List[i][0], "a");
とかやりたいのかな、なんて思ったり
785:デフォルトの名無しさん
10/06/27 22:05:25
>>783
×:要素数 ○:添字
786:デフォルトの名無しさん
10/06/27 22:20:05
補足です。
char List[5][2][20] です。
int i;
printf("削除したい番号を入力:");
scanf("%d",&i)
List[i-1][0]='a';
List[i-1][1]='a';
入力した番号の配列を削除するのが目的ですが
置き換えたほうが後に便利なので置き換えたかったのです・・・。
787:デフォルトの名無しさん
10/06/27 22:28:04
List[i-1][0]='a';
List[i-1][1]='a';
の行を、
strcpy(List[i-1][0],"a");
strcpy(List[i-1][1],"a");
に変えればいいと思います。
回答とは関係ないですが、
Listは、「文字列の」2次元配列ってことですか?
788:786
10/06/27 22:44:00
>>787
どうもありがとうございます!
成功しました。
えっとちなみにstrcpyを使わない方法はないでしょうか…?
あと自信はないですが、文字列の3次元配列だと思います。
789:デフォルトの名無しさん
10/06/27 22:51:34
string使えばいいと思うよ
790:デフォルトの名無しさん
10/06/27 23:15:22
>>788
文字の3次元配列だと思うよ。
strcpy使わないならこんな感じ。
List[i-1][0][0] = 'a';
List[i-1][0][1] = '\0';
List[i-1][1][0] = 'a';
List[i-1][1][1] = '\0';
791:786
10/06/28 00:01:38
>>790
成功しました!!!
どうもありがとうございます!!
792:デフォルトの名無しさん
10/06/28 06:18:57
ゲーム画面の文字を自動で取得してテキスト化にするには
どうすればいいですか?
というか、可能ですか?
793:デフォルトの名無しさん
10/06/28 07:04:16
ゲーム画面を取り込んでOCRにでもかければ?
794:デフォルトの名無しさん
10/06/28 10:46:53
>>792
ゲーム毎に対応が異なってくるので、制作者にご相談ください。
相談できないような内容なら、この板のローカルルールに則って然るべくどうぞ。
795:デフォルトの名無しさん
10/06/28 22:38:05
>786>790
もう解決したみたいだけど、
>入力した番号の配列を削除するのが目的ですが
配列を削除?ってのがちょっと引っかかる。
ほんとにやりたいのはこれじゃない?
List[i-1][0][0] = '\0'
List[i-1][1][0] = '\0'
796:デフォルトの名無しさん
10/06/28 22:45:12
>>795
削除するのをあきらめて置き換えにしてるわけで、空文字列にするのは置き換えのほうに分類されると思う。
ほんとにやりたいのはmemmoveで解決できたんじゃないかな。
797:デフォルトの名無しさん
10/06/29 21:03:02
質問です。
私の環境はVC++2010、2008ですが、C++の言語全体として
答えていただけると幸いです。
enum E
{
E1,
E2,
}:
のようなenumがあったとき、E2 | E1 は、int になるらしいです。
ということは、
E e = E1 | E2;
に警告が出ます。
この辺のenumの取り扱いとして、
1. ビット演算のような用法 ( e = E1 | E2; )
2. まさにenum的な用法 (どれかひとつ)
ざっくりと、2種(または混合)があると思うのですが、この辺、何かしら
指針、指標のようなもの、もしくはベンダからの情報等はあるのでしょうか?
ベンダー依存でもいいので、何かしら情報があれば、よろしくお願いします。
798:デフォルトの名無しさん
10/06/29 21:06:56
>>797
enumはフラグじゃないんダナ
799:デフォルトの名無しさん
10/06/29 22:14:58
enum E{
E1 = 0x1,
E2 = 0x2,
E3 = E1 | E2
};
または
E e = static_cast<E>( E1 | E2 );
だけどcastするぐらいだったら
int e = E1 | E2;
にして E1、E2もconst int 型にする方が良いと思う。(またはstd::bitset)
後
E e = E1 | E2;
はgccのc++0xではErrorになる
800:デフォルトの名無しさん
10/06/29 23:48:14
>>797
> 1. ビット演算のような用法 ( e = E1 | E2; )
それはない。
801:デフォルトの名無しさん
10/06/30 22:21:04
C++では列挙子同士のビット演算の結果を
その列挙型にキャストなしで戻せないからね
ビットフラグを扱う変数は普通の整数型にするしかない
個々のビットフラグをconst intで定義するかenumで定義するかは趣味の領域か
802:デフォルトの名無しさん
10/07/01 04:09:20
C++の場合、暗黙のうちに整数型へ昇格されるから各種演算が可能なだけで、
列挙型の演算自体はデフォルトでは定義されないからな。
Cなら列挙型への暗黙の型変換があるから何でもできるが。
803:デフォルトの名無しさん
10/07/01 12:16:07
inline関数化して違う型同士のビット演算を弾くべき
804:デフォルトの名無しさん
10/07/01 15:38:12
コギレイに static const へ乗数入れる方法教えて。
805:デフォルトの名無しさん
10/07/01 17:14:09
いみふ
806:デフォルトの名無しさん
10/07/01 18:16:07
ファクトリでインスタンス生成して複数の他のオブジェクトに所有させるとき
削除の責務を何処に負わせるのが良いでしょうか?
共有してる側に負わせると、共有側それぞれの寿命までキニシナイと行けないようになるし
ファクトリにどんなインスタンスを生成したか記憶させるようにして
動作終了時にごそっと削除させてしまうべきか・・・?
807:デフォルトの名無しさん
10/07/01 18:36:50
よろしい君にshared_ptrを使う権利を与えよう
808:デフォルトの名無しさん
10/07/01 18:39:03
スマポが基本じゃね
809:デフォルトの名無しさん
10/07/01 19:03:47
using namespace boost;
bind( CHoge::hoge , this , 50 , _1 , _2 , _3 );
を c++0xでboostを使用せずに記述する方法は無いでしょうか。
810:デフォルトの名無しさん
10/07/01 20:09:57
>>804
staticメソッド作っておいて初期化でそれ使うぐらいしか思いつかん
811:デフォルトの名無しさん
10/07/01 20:10:45
ラムダ関数は使えないのか?
812:デフォルトの名無しさん
10/07/01 20:56:51
テンプレートの例題を見ると、変数xとyの値を交換するってのがある
こんなの本当にプログラミングで使うのか?
テンプレートってobject型の代わりに使っているような印象を受けるんだけど
813:デフォルトの名無しさん
10/07/01 21:07:19
swapを使うこともない程度のプログラムしか書かないなら、たぶん一生テンプレートの恩恵は理解できない
814:デフォルトの名無しさん
10/07/01 22:19:55
>>811
ヒントありがとうございます
f = [this](int a1,int a2,int a3) -> void { hoge(a1,a2,a3); };
で解決しました( VC10で確認 )
ただ残念な事に gcc4.4 を使用しているので当面は boost::bind の方を使用します。
半年待ちかな
815:デフォルトの名無しさん
10/07/01 22:35:28
配列のバッファオーバーランが生まれてる場所って知る方法ないの?
どっかでぶっ壊れてるんだがまったく特定できん…
816:デフォルトの名無しさん
10/07/01 23:05:03
assert使えばいいじゃない
817:デフォルトの名無しさん
10/07/01 23:48:43
>>815
デバッガにメモリの特定の箇所が変化したら止まる機能があるかもしれないから、
毎回決まった箇所が壊れるなら、それ使えばいい。
VSにはあった。
818:デフォルトの名無しさん
10/07/02 09:36:58
>>817
まじで。スレ違いだけど教えてもらっていい?vs2008proで出来る?
819:デフォルトの名無しさん
10/07/02 11:17:42
>>818
手元に2008がないから確認できない。
2005proなら、メニューの「デバッグ」→「ブレークポイントの作成」→「新しいデータブレイクポイントの作成」でできる。
820:デフォルトの名無しさん
10/07/02 11:38:27
>>819
出来た!ありがとう!
821:デフォルトの名無しさん
10/07/02 23:25:14
>>820
選択できないんだけど、どうすればいい?
822:デフォルトの名無しさん
10/07/02 23:26:34
あ、ごめんデバッグ中にやればいいのか。
823:デフォルトの名無しさん
10/07/02 23:52:44
int/intをやったときに小数点以下が「切り下げ」られるってのは保証されてる?
824:デフォルトの名無しさん
10/07/02 23:57:29
うん
825:デフォルトの名無しさん
10/07/03 00:18:31
てんきゅー
826:デフォルトの名無しさん
10/07/03 00:26:32
>>823
-x/y だと 89 と 99 で結果が異なる CPU もあるんじゃなかったけ?
たしか、89 だと CPU 依存で 99 だと厳密に来ていされていたような気が…
# 完全にうろ覚え
827:デフォルトの名無しさん
10/07/03 01:49:05
>>826
つURLリンク(seclan.dll.jp)
828:デフォルトの名無しさん
10/07/03 13:10:28
gcc4.2 mac osx で次のコードがコンパイルできません。不可能なのでしょうか。ご教授下さい。
template< class T >
class A
{
public:
A()
{
std::vector< A< T > > vec;
}
};
829:デフォルトの名無しさん
10/07/03 13:20:08
>>828
vectorのところでA<T>のサイズが決まらないからじゃなイカ?
vector<shared_ptr<A<T>>> vec;
で試すでゲソ
830:デフォルトの名無しさん
10/07/03 17:52:30
explicit なんですか、これ?
831:デフォルトの名無しさん
10/07/03 18:25:56
暗黙的型変換を抑制するキーワード
832:830
10/07/03 19:29:19
>>831
thx
833:デフォルトの名無しさん
10/07/04 01:29:47
Windows 7
Borland C++ 5.5.1で、カラー画像を指定した閾値で2値化するプログラムを書きました。
プログラムで処理した画像をout.bmpとして出力しているのですが、
この画像をプログラムを終了させることなく表示する方法はありませんか?
834:デフォルトの名無しさん
10/07/04 01:35:46
閉じろ
835:デフォルトの名無しさん
10/07/04 07:57:20
>>833
GUIを扱えるように勉強する
system関数等でwindows付属のビューア等を呼び出す
あたりかな
836:デフォルトの名無しさん
10/07/04 09:29:48
>>833
C#使え
837:デフォルトの名無しさん
10/07/05 03:50:48
system("out.bmp");
838:デフォルトの名無しさん
10/07/05 14:21:21
出力と入力が決まっていない関数は
f(cin , cout );
って感じの関数を作ればいいですか?
cinとかをfinとかに変えても動作するみたいにできますか?
839:デフォルトの名無しさん
10/07/05 14:34:45
Foo f(std::istream& in, std::ostream& out);
840:デフォルトの名無しさん
10/07/05 15:04:45
ありがとうございます。
841:デフォルトの名無しさん
10/07/05 23:16:42
ヘッダファイルって何であるんですか?
ヘッダファイルはコンピュータにとって何処が美味しいの
842:デフォルトの名無しさん
10/07/05 23:21:53
ヘッダーはコンパイラのためにあるよ
843:デフォルトの名無しさん
10/07/05 23:22:07
>>841
URLリンク(ja.wikipedia.org)
844:デフォルトの名無しさん
10/07/06 06:27:36
vector<クラス*>のobjがあって(* objのイタレータ)->idというint型のメンバがあるのですが
vector<クラス*>の要素数は最大10個で
idは1~10までの整数で、重複しないようにしたいのです
vector<クラス*>に要素を追加した時にそのidメンバに他のvector<クラス*>の要素が持ってない整数を入れたいです
例えば今要素5個のvctor<クラス*>があったとして前から並べた時にidが3,5,2,6,0のような場合に
6個目のvector<クラス*>を作ってそのidに3,5,2,6,0以外の1~10の整数のうち一つ(無い値ならなんでも良い)を入れたいのですがどうすれば良いでしょうか?
845:デフォルトの名無しさん
10/07/06 07:00:37
vectorじゃなくてmapを使う
846:デフォルトの名無しさん
10/07/06 07:04:42
10個程度なら、総当りで使ってない整数を探したらいい
847:デフォルトの名無しさん
10/07/06 10:15:56
>>844
たとえばクラスをFooとする。
Foo *valids[10] = {0};
vector<Foo *> v;
for (int i = 0; i < 10; i++) {
if (!valids[i]) {
Foo *foo = new Foo();
foo->id = i;
v.push_back(foo);
valids[i] = foo;
}
}
848:デフォルトの名無しさん
10/07/06 10:27:05
ユニークな整数のリストを共有して
そこから借りたり返したりする
849:デフォルトの名無しさん
10/07/06 17:07:25
入門Qt4プログラミングで
OvenTimer::OvenTimer(QWidget *parent)
: QWidget(parent)
{
//関数の中身
}
という表現があるのですが、
「: QWidget(parent)」の部分は何を意味しているのでしょうか?
OvenTimerクラスはpublicでQWidgetクラスを継承しています
850:デフォルトの名無しさん
10/07/06 17:10:36
>>849
C++の基礎を勉強しなおせ
基底クラスの初期化子
851:デフォルトの名無しさん
10/07/06 17:23:30
>>850
ベースクラスのコンストラクタの引数がポインタなことに違和感があって、
何か意味があるのかなと。。。参照ならしっくりくるんですが。
私に基礎がないからなんですね?頑張って勉強します。
852:デフォルトの名無しさん
10/07/06 17:34:22
>>851
がんばれ
853:デフォルトの名無しさん
10/07/06 18:16:47
> ベースクラスのコンストラクタの引数がポインタなことに違和感があって、
なんでだよw そのコンストラクタの引数も単にポインタでしょうにw
854:デフォルトの名無しさん
10/07/06 18:50:11
>>853
コピーコンストラクタとかでは参照で受けるようにするのが普通だと思っていて、
そのコンストラクタを呼び出してもいいはずなのに、あえてポインタで受けるコントラクタを用意して
そのコンストラクタを呼び出すのは何か理由があるのかなと思ってしまったんです。
サブクラスのコンストラクタでベースクラスのポインタを受けるのは、
そのベースクラスがisでなくhasな場合もあるだろうし、
あまり違和感を感じないんです^^;
そもそも自身のポインタを受けるコンストラクタって用意するのが普通なんでしょうか。
ってことからわかってない><
855:デフォルトの名無しさん
10/07/06 19:02:51
> そもそも自身のポインタを受けるコンストラクタって用意するのが普通なんでしょうか。
厳密に言うとおかしい。自身のポインタってのをthisのことだとすると。
自身のポインタを受けるコンストラクタっていう表現が。
コンストラクタにそのインスタンスのthisポインタを渡すことなどできない(?)し、
コンストラクタの初期化リスト呼び出しが終わったあと、
コンストラクタ本体へ処理が移らないとthisは使えない。
自身のポインタってのがQWidget(parent)に対する、
QWidget *parentのことであるとするなら(多分そのつもりなんだろうけど)、
クラスとインスタンスの違いが分かってない可能性すらある。
分かってるんだとしたら、そういう質問出てこないと思う。
たとえば、古典的なリンクリストを実装しようとしたら、
Node::Node(Node *next)っていうコンストラクタがあっても不思議じゃないし、
双方向だとしたらNode::Node(Node *next, Node *prev)ってのがあって不思議じゃない。
GUIのコンポーネント間に親子関係があるとき、
親が子を知っていることにくわえ、
子が親を知っていることもあたりまえによくあること。
だから、OvenTimer(QWidget *parent) みたいにコンストラクタで親オブジェクトを渡す。
コンストラクタだからどうあるべき、ってんじゃなくて、
あくまで用途ありきでオブジェクトやクラスなんかもあるし、
どういうコンストラクタを設けるかも、あくまで用途次第。
> そのコンストラクタを呼び出してもいいはずなのに
つまり、コピーする目的じゃ無いと思われ。
856:デフォルトの名無しさん
10/07/06 19:18:13
>>855
ありがとうございます。
>厳密に言うとおかしい。自身のポインタってのをthisのことだとすると。
インスタンスの話ではなく、型の話です。ですから this のことはないと思っています。
>Node::Node(Node *next)っていうコンストラクタがあっても不思議じゃないし、
リンクのノードならしっくりきます。全然普通です。
>つまり、コピーする目的じゃ無いと思われ。
ということなんですね。よくわかりました。謎が解けました。
自身の(コピーによる)初期化ではなくて、あくまでメンバの一つにそのポインタを格納しているんですね。
そういう想像が直ぐにできなくて、不思議な書き方だなと思ってしまいました。
勉強になりました。ありがとうございました。
857:デフォルトの名無しさん
10/07/06 19:20:40
>>856
>メンバの一つにそのポインタを格納しているんですね
それも違う・・・・・
いいからC++の勉強やり直してこいって
858:デフォルトの名無しさん
10/07/06 19:31:02
>>857
例えばノードの場合だったら、
Node::Node(Node *next) {
// m_next 以外の初期化
m_next = next;
}
だと思ったので、同じように
m_parent = parent;
というコードがあるんだろうと理解したんですが・・・
うーん、なんかまだまだわかってないことがありそうですね、
まだ3週目ですし、もっと勉強してから質問します。失礼しました。
859:849
10/07/06 19:50:52
勝手に話が進んでてワロタ
>>850
どうもありがとう
860:デフォルトの名無しさん
10/07/06 23:17:50
質問です。boost または stl の function です。
std::function<A(B, C, D)> func1;
std::function<A(C, D)> func2;
B b = 10;
func2 = xxx(func1, b);
上のように、テンプレート引数Bのみを拘束する、汎用的な xxx のような
機能をする関数とかありますでしょうか?
bind だと、引数ごとにプレースホルダが必要ぽいので、面倒なんです。
よろしくお願いします。
861:デフォルトの名無しさん
10/07/07 12:33:51
質問です
音を扱うプログラムにて
#define RATE_44100 0xac440000
という定義を見ました
16進数でac44が10進数の44100に相当することは分かっているのですが、そうすると定義のように
0を余計に4つもつけている意味はなんでしょうか?
はじめ16進数でac440000が44100相当なのか、でも計算が全然合わない、と悩んだのですが・・・
862:デフォルトの名無しさん
10/07/07 12:40:16
上位16bitと下位16bitに分けてるんだよ。
863:デフォルトの名無しさん
10/07/07 12:42:43
すくなくともそのまま整数での意味じゃないよなその名前。
$ ruby -e 'p 0xac440000'
2890137600
$ ruby -e 'p 0xac44'
44100
なんかしらのビット演算をしようとして、
ac44を44100と名づけなおすことに何かメリットがある、
からそうなってるのか、
あるいは勘違いか。
864:861
10/07/07 12:54:27
釈然としませんが半ばブラックボックス関数で扱われている数値であるので>>862で指摘されたとおり、関数内部で上位下位16bitで分けられていうるようです。
>>862-863
すばやいご返答ありがとうございました。
865:デフォルトの名無しさん
10/07/08 03:55:10
タイマーを使いたいのですがSetTimerは引数にHWNDがあるのでいろんな場所で使えませんよね?
HWNDを引数に持たない自分で作った関数の中でタイマーをセットするにはどうすれば良いのでしょうか?
866:デフォルトの名無しさん
10/07/08 03:59:19
ヒント:SetTimerの第四引数
867:宮城たった
10/07/08 05:56:21
>>866
調べてみましたがよくわかりませんでした
void hogeA()
{
この関数中で大麻を窃盗
}
CALLBACK MsgProc( HWND hWnd~)
{
大麻が経過したら最悪ここでhogeB関数をする、KillTimer
}
という感じにしたいのですが大麻 凍る獏関数というのが使えるのでしょうか?どうすれば良いのでしょうか?
868:みやぎたった
10/07/08 06:24:57
型だけ同じコールバック関数を作ってその関数の名前を第四引数に入れたらいいんだな
わかりやすく書けよ
乙!ありがとな!
869:デフォルトの名無しさん
10/07/08 18:59:36
monodevelopで#include <stdio.h>
int main (void)
{
int num;
num = 0;
float f;
f = 0;
printf("整数を入力してください:");
scanf("%d", &num);
printf("浮動少数点数を入力してください:");
scanf("%f", &f);
printf("%d ", num);
printf("%f", f);
return 0;
}
を実行しても
整数を入力してください:浮動少数点数を入力してください:0 0.000000
と表示されるだけで入力ができません
何か問題があるのでしょうか?
870:デフォルトの名無しさん
10/07/08 19:26:45
>>863
RATE_44100から、CDのサンプリングレート44.1kHzを連想出来ないキミはPGに向いていない。
これだからruby脳は…
871:デフォルトの名無しさん
10/07/08 19:34:28
>>870
うるせー馬鹿w
CDのサンプリングレート44.1kHzなんか知らないっつーの。
872:デフォルトの名無しさん
10/07/08 20:33:17
LZ法で圧縮したっていうデータのバイナリを見たら
データの中間辺りで、00 00 00 00と00が凄い連なっていたんだが
LZ法でこういうデータを吐き出すケースってどんな時?
スライド窓とか大きく確保しても、こうならないと思うんだが…
873:デフォルトの名無しさん
10/07/08 20:36:51
870の方が馬鹿だね。
874:デフォルトの名無しさん
10/07/08 21:01:27
>>872
0が1Gバイトくらいじゃね?
875:デフォルトの名無しさん
10/07/08 22:05:23
1G所か10G合っても連なるのか怪しいな
876:デフォルトの名無しさん
10/07/08 22:08:28
>>871
これだから ruby 脳は‥‥‥。
877:デフォルトの名無しさん
10/07/08 23:38:15
下位アドレスを豪快に端折ってるコンテナ形式とかだったら詰め物の可能性もあるね
878:デフォルトの名無しさん
10/07/09 00:02:29
>>871
無知自慢しなくていいぞ。ruby脳
879:デフォルトの名無しさん
10/07/09 23:27:58
プログラムで生成した画像データを連番のファイル名で保存したいと思っています。
for(i=0;i=<100;i++) sprintf(str,"out-%d.jpg",i);
というプログラムを書いたのですが、出力は
out-0.jpg out-1.jpg・・・out-10.jpg ・・・ out-100.jpg
と桁がそろっていない形になっています。
出力する数字を3桁にして、out-0.jpgをout-000.jpgとなるようにする場合、
どうしたら良いですか?
880:デフォルトの名無しさん
10/07/09 23:59:00
%d -> %03d
881:名無しさん@そうだ選挙に行こう
10/07/10 16:55:13
struct{
std::string text;
int number;
int count;
} data;
std::vector<data>
このようなdataの配列があるとして、textとcountが重複している要素があったら重複しないようにしてcountは足すという事をしたいのですが、
単純に前から順に比較していって新しい配列に結果を格納していくという方法しか思いつきません。
速い方法があったら教えて頂きたいです。
882:名無しさん@そうだ選挙に行こう
10/07/10 18:52:35
>>881
どういう処理をさせたいのか分からないけど、
その構造でそういうやりくりするのって、
すっげー始末が悪いと思う。
883:名無しさん@そうだ選挙に行こう
10/07/10 20:00:05
>>881
>textとcountが重複して
textとnumberが重複してたらcountを足すんじゃなくてtextとcountなんだな?
じゃぁvectorの全走査でしかたないんじゃない?
判定に使うcountが変動するんじゃ、
単純に前から比較しなくて済む方法使った場合格納時に並べ直す必要が出ちゃうし
884:名無しさん@そうだ選挙に行こう
10/07/10 21:12:24
24bitのビットマップで表現出来る色(256^3)色をすべて含めた1枚の画像を作りたいです。
1画素に1色とすると(256^3)画素が必要だと思うので、
√(256^3) = 4096で、4096×4096の画像を出力することになりますよね?
そこで、出力用の配列としてimage_out[4096][4096][3]という配列を用意したのですが、うまく色が入ってない様です。
for(i=0;i<255;i++){
for(j=0;j<255;j++){
for(k=0;k<255;k++){
image_out[l][m][0]=k;
image_out[l][m][1]=j;
image_out[l][m][2]=i;
m++;
if(m==4096){
m=0;
l++;
}
}
}
}
この様なプログラムを書いたのですが、どう修正したら良いでしょうか?
885:名無しさん@そうだ選挙に行こう
10/07/10 21:30:17
なんで<255
886:名無しさん@そうだ選挙に行こう
10/07/10 21:47:27
あー 256か<=255か・・・・
でも、同じ色の菱形ができるんです・・・
887:名無しさん@そうだ選挙に行こう
10/07/10 21:57:20
スレ違いかも知れまんが質問させてください。
現在中学二年生で工科高校のシステム科を受験しようと考えています。
それに伴い、C言語を学習しようと考えているのですが、どのような事をまなべばいいのでしょうか?
いままでHSPというwindows用のインタプリタ言語を使いゲーム制作をしてきました。
C言語でもゲーム制作を学習して良いのでしょうか?それともゲームなどとはちがうソフトウェア制作を学習したほうが良いのでしょうか。
888:名無しさん@そうだ選挙に行こう
10/07/10 21:58:47
>>887
ゲームで学ぶことを知っているのなら、
ゲームで学んで十分。
構造体やポインタ、メモリの動的確保。
全部ゲームで押さえることができる。
889:名無しさん@そうだ選挙に行こう
10/07/10 21:59:37
むしろゲームは集大成っていう
890:名無しさん@そうだ選挙に行こう
10/07/10 22:03:53
普通高校に行きなさい
891:名無しさん@そうだ選挙に行こう
10/07/10 22:06:35
工業高校は高卒で地元企業で一生下っ端もしくはたたき上げになるつもりがなければ行くメリット無し。
普通の進学校いけ。プログラミングは学校で学ぶもんでもない。
やりたいことなんていつ変わるかわからんのだし。
892:名無しさん@そうだ選挙に行こう
10/07/10 22:07:39
プログラミングは独学するやる気があるなら全く学校に拘る必要はない。
893:名無しさん@そうだ選挙に行こう
10/07/10 22:17:05
これからのIT産業は斜陽産業だぞ?
景気の良かった頃でもゲーム開発は社員の寿命が短かった
(若くても辞めざるを得なくなる)
あまり勧められんなぁ
894:名無しさん@そうだ選挙に行こう
10/07/10 22:18:33
入り口はどうあれ、結局最後は独学だよな。
いかに言語の規格を正しく理解するか。
コードをいっぱい読んでイディオムを見出し、
設計に躓きまくってデザパタにも親しむ。
APIリファレンスとホワイトボードだけが友達。
895:名無しさん@そうだ選挙に行こう
10/07/10 22:31:26
はっきり言って常に新技術の勉強を続ける覚悟がいるぞ。
896:名無しさん@そうだ選挙に行こう
10/07/10 22:36:28
>>895
若い頃は簡単でも歳食うとこれがまあかなり難しい。
897:名無しさん@そうだ選挙に行こう
10/07/10 22:52:03
みなさんありがとうございます。
別にゲーム制作を本業にするつもりは全くないです。
ただ工科高校のシステム科は就職率が高いとのことなのでそちらを進路に選択しました。
家庭事情的にも働かなければいけないので大学に行けないので…
それならプログラムをまなぶ前にパソコン検定などの資格を取り、基本的な操作を学んだほうがいいのでしょうか?
898:名無しさん@そうだ選挙に行こう
10/07/10 22:54:45
書き込んでから気付いたのですが、はげしくスレチですね。
スルーで構いません。無駄レスすみませんでした。
899:名無しさん@そうだ選挙に行こう
10/07/11 01:35:04
このご時世高卒がありつける仕事なんてどこ行こうが変わらんよ
900:名無しさん@そうだ選挙に行こう
10/07/11 13:53:43
マ板に帰れお前ら
あと>>887も行け
スレチどころか板違いだ死ね
901:名無しさん@そうだ選挙に行こう
10/07/11 14:06:37
ハ,,ハ
(*゚ω゚ ) >>900お断りします
. (=====)
_(_⌒) )
/\ `J  ̄ ̄\
 ̄ ̄ ̄ ̄| | ̄ ̄ ̄
|
/ \
 ̄
902:名無しさん@そうだ選挙に行こう
10/07/11 20:28:31
2ch書き込み用のライブラリって何がありますか?
903:名無しさん@そうだ選挙に行こう
10/07/11 22:30:51
socket.h
904:名無しさん@そうだ選挙に行こう
10/07/11 22:53:05
>>903
有難うございます
ググって見ます
905:名無しさん@そうだ選挙に行こう
10/07/11 22:53:37
あ、いやなんかごめん
906:名無しさん@そうだ選挙に行こう
10/07/11 23:02:42
>>902
現在無いので
httpを簡単に扱えるライブラリ(これはいろいろある)を探して
monazillaあたりで、書き込みの方法を調べるのが割と楽かと
907:デフォルトの名無しさん
10/07/11 23:38:07
>>906
嘘でしたか
ありがとうございます
908:デフォルトの名無しさん
10/07/11 23:47:57
>>907
作ったら公開してよ。
909:デフォルトの名無しさん
10/07/12 00:29:06
>>907
いや嘘じゃねーよ。socke.h使えば2ch書き込みだってできるっつのふざけんな。
910:デフォルトの名無しさん
10/07/12 00:33:26
2ch書き込み用のライブラリか?って言われると確実に嘘だけどな
911:デフォルトの名無しさん
10/07/12 12:06:27
dolib
912:デフォルトの名無しさん
10/07/12 13:24:15
2chの書き込みなど簡単だろ。スクリプト言語のブラウザ動作真似るやつ使え。
UWSCなら手動操作をスクリプト化出来るし。
913:デフォルトの名無しさん
10/07/12 13:25:11
それよりも、P2P掲示板作ってくれよ。
そしたら、規制掛からないし。いいよ。
914:デフォルトの名無しさん
10/07/12 18:37:44
FreeNet