スレを勃てるまでもないC/C++の質問はここで 17at TECH
スレを勃てるまでもないC/C++の質問はここで 17 - 暇つぶし2ch533:デフォルトの名無しさん
10/10/31 22:02:14
>>532
逆じゃないか?

534:デフォルトの名無しさん
10/10/31 22:18:48
>>533
あ、ごめん逆だった

535:デフォルトの名無しさん
10/11/01 12:18:39
>>531-534
検索用に書き直してまとめ。
--
new Hoge(), new Hoge;は何が違うんですか?

カッコ付きは非PODとPODで挙動が異なる

POD・・・カッコ無しは不定値が入る、カッコありは0で初期化
非POD・・・どちらも同じ意味

これもFAQになってきたな
--

536:デフォルトの名無しさん
10/11/01 12:22:32
マージソートがわからん誰か教えて
void merge(int data1[], int n1, int data2[], int n2, int data3[]){
int index1, index2, index3, i;
index1 = index2 = index3 = 0;
printf("merge_sort\n");
while(index1 < n1 || index2 < n2){
if(index1 == n1){
for(i=0; i<n2-index2; i++){
data3[index3+i] = data2[index2+i];}
break;}
if(index2 == n2){
for(i=0; i<n1-index1; i++){
data3[index3+i] = data1[index1+i];}
break; }
// data3[index3] に値を代入したい//
for (i=0; i<(2*N) ;i++)
printf("%d,", data3[i]);
printf("\n");}


537:デフォルトの名無しさん
10/11/01 12:38:46
もしソースだけ目にして分からないって思えるなら
なんか文章とか絵とかで解説されてるサイトを見るといいよ
マージソートは理屈がかなり簡単なソートだからすぐわかるだろう

538:デフォルトの名無しさん
10/11/01 13:27:33
初歩的な質問なんですが
URLリンク(users.rcn.com)
上記のウェブサイトのソースコードでconst参照仮引数に代入しているように
みえるのですが良くわかりません。
ちなみにisA関数の意味もcomplexExemplarの意味もわかりません。
教えてください。

539:デフォルトの名無しさん
10/11/01 13:39:14
マルチすんなカス

770 デフォルトの名無しさん [] 2010/10/31(日) 11:52:29 ID: Be:
初歩的な質問なんですが
URLリンク(users.rcn.com)
上記のウェブサイトのソースコードでconst参照仮引数に代入しているように
みえるのですが良くわかりません。
ちなみにisA関数の意味もcomplexExemplarの意味もわかりません。
教えてください。

540:デフォルトの名無しさん
10/11/01 13:48:18
>>539
別人っす。

541:デフォルトの名無しさん
10/11/01 13:53:17
そんな偶然の一致があってたまるか

542:デフォルトの名無しさん
10/11/01 13:56:36
一致100%で言い逃れしようとするバカ初めて見たわ

543:デフォルトの名無しさん
10/11/01 14:18:03
ん?投稿は別人という意味だが。

544:デフォルトの名無しさん
10/11/01 14:24:25
mypaintっていうオープンソースのお絵かきソフトに
photoshopみたいな拡大縮小機能を付けたいけど
それをするのにはc++でおkですか?
OKならまず何が必要ですか?
参考書とかソフトとか何を買えばいいですか?
プログラムはプラスとかビジュアルの付いていないC言語で
ifやforとかで条件分岐させてぐるぐる回すとかの
プログラムの作り方の基本的な部分しか分かりません。
↓mypaintのコード概要
URLリンク(wiki.mypaint.info)

545:デフォルトの名無しさん
10/11/01 14:27:43
>>537
ありがとうございます、解決しました

546:デフォルトの名無しさん
10/11/01 14:49:14
>>544
>Mostly written in Python with PyGTK
と書いてあるんだから、Pythonだろ。
つーか、その程度の英語も読めないようなら無理だと思うぞ。
それとcanvasのzoom機能はあるらしいが、それでは不充分なのか?

547:デフォルトの名無しさん
10/11/01 14:51:23
マルチってなんで嫌われるんだろう。。。

548:デフォルトの名無しさん
10/11/01 14:57:18
>>547
URLリンク(ja.wikipedia.org)

549:デフォルトの名無しさん
10/11/01 14:59:28
同じ質問をあちこちにポストされると、俺らはその同じ質問を何度も目にすることになる
同じことを何度も何度も訊かれたら鬱陶しい

550:デフォルトの名無しさん
10/11/01 15:07:42
単純明快である

551:デフォルトの名無しさん
10/11/01 15:10:48
参照があちこちに散らばって管理が大変だから

552:デフォルトの名無しさん
10/11/01 15:16:38
マルチは手段であって目的では無いんだよな。
なんでもマルチは悪いと考えるのは思考停止のなにものでもないよ。
投稿されてから一日たっているのや別スレでスルーされていいるのや別人がコピペしているのを考慮すると
これは許されるマルチだと思う。

553:デフォルトの名無しさん
10/11/01 15:18:14
んなことない

554:デフォルトの名無しさん
10/11/01 15:21:41
じゃあスルーされたり質問者が自己解決して答えが分からない場合はどうしたらいいの?

555:デフォルトの名無しさん
10/11/01 15:21:44
>>553
君はプログラミングに向いてないよwww
他逝きなww

556:デフォルトの名無しさん
10/11/01 15:22:52
許される許されないの問題じゃないから

557:デフォルトの名無しさん
10/11/01 15:28:06
とりあえずスルーされてる原因を考えるよ
被害者面するな

558:デフォルトの名無しさん
10/11/01 15:28:23
じゃあニュースは毎日同じことを何度も流すけど許されない犯罪だなwwww

559:デフォルトの名無しさん
10/11/01 15:31:46
面白い話題が出てて他の質問スルーすることはよくある
そういう時はスレが落ち着いてから催促すればいいんじゃない
まあ俺はスレ遡ってまで回答しないけど

560:デフォルトの名無しさん
10/11/01 15:33:57
>>558
人に聞く行為と人に知らせる行為を一緒にするなよ
頭おかしいの?

561:デフォルトの名無しさん
10/11/01 15:35:57
「40歳ニートですけど総理大臣になるにはどうしたらいいですか?」なんて質問にだれも答えたくないだろ?

562:デフォルトの名無しさん
10/11/01 15:40:33
無視される質問のみんながみんなそんな質問ではないだろ?

563:デフォルトの名無しさん
10/11/01 15:41:57
悪意のあるやつが一番悪い
実生活のストレス解消の場として揚げ足取りを楽しんでいるのだろう

564:デフォルトの名無しさん
10/11/01 15:42:25
みんながみんがそうではないってことは
いくらかそういう馬鹿げた質問してる自覚はあるんだ

565:デフォルトの名無しさん
10/11/01 15:44:47
君は自分に反論する奴はみんな質問者だと思ってるんだ

566:デフォルトの名無しさん
10/11/01 15:45:02
悪意なく嘘を教える奴が最も悪い。
そういう奴は正当な批判も揚げ足取りと思い込んで暴れる。

567:デフォルトの名無しさん
10/11/01 15:46:37
>>565
質問者じゃなきゃこんな文句言わねーだろ

568:デフォルトの名無しさん
10/11/01 15:48:35
俺の意見はみんなの意見だもんね

569:デフォルトの名無しさん
10/11/01 15:49:31
俺はその「みんな」に含めないでくれ

570:デフォルトの名無しさん
10/11/01 15:57:48
質問内容がアホだからマルチするなってのはおかしいだろ
それだと高等な質問ならマルチしてもいいってことになるぞ
どうしてマルチが嫌われるか分かってないのにマルチ叩くのもどうかと思うよ

571:デフォルトの名無しさん
10/11/01 15:59:33
まともな質問をしかるべき場所ですれば
マルチするまでもなく普通に回答が返ってくるからじゃね?

572:デフォルトの名無しさん
10/11/01 16:01:32
ウェブサイトが英語というのが気に障ったんだろうなwww
英語よめないからwwww

573:デフォルトの名無しさん
10/11/01 16:11:17
だからスルーされてる原因を突き止めろよ
議論中なうじゃなかったら
スルー = 日本語が支離滅裂、質問内容が明晰でない
数レス上で同じ内容に答えている、態度が生意気、テンプレを使用していない
みたいな質問に答えたくなくなる何かがあるんだろうよ
それを、スルーするのが悪いんだろみたいに逆ギレされても困る
自分は質問者で回答者の顔色を伺ってる意識を持てよ
高飛車なやつに応えたいなんて思うやつは皆無

574:デフォルトの名無しさん
10/11/01 16:15:37
>>559


575:デフォルトの名無しさん
10/11/01 16:15:59
>>573
どこを縦読み?

576:デフォルトの名無しさん
10/11/01 16:18:24
スルーされる原因を突き止められる人ならそのまま質問も自己解決できそうなもんだが

577:デフォルトの名無しさん
10/11/01 16:21:02
>>571
アホな質問をする奴は自分の質問がアホな質問だなんて思ってないだろうから、
答えが返ってこなければ>>538みたいに平気でマルチするだろ
しっかりとマルチ=ダメというアホでも分かる境界線を引かないとダメ

578:デフォルトの名無しさん
10/11/01 16:22:03
>>576
だから何?
馬鹿だから見逃せっての?
原因が突き止められない馬鹿だからマルチさせてくださいってこと?

579:デフォルトの名無しさん
10/11/01 16:28:49
原因を突き止められる人は初めからマルチなんてしないだろ馬鹿ってこと
原因が突き止められない馬鹿に原因を突き止めなさいって長文レスするのが意味ある事だと思ってるの?

580:デフォルトの名無しさん
10/11/01 16:33:14
喪舞ら餅付けって(笑)
喧嘩して無意味にスレを消費するより
1レス消費するだけでわかっていてもわざと教えない質問の
答えを書き込んだ方が得だぞ(核爆)

581:デフォルトの名無しさん
10/11/01 16:34:09
>>579
原因を突き止めなさいっつてんじゃねーよ
原因突き止めるのが普通なんだからマルチすんなっつってんだよ

582:デフォルトの名無しさん
10/11/01 16:35:39
>>580
誰がマルチにこたえるかバーカ^^

583:デフォルトの名無しさん
10/11/01 16:44:24
そもそもマルチポストしないというのが一番の得だぞ
マルチポストしても何もいいことがないとわかっただろう
次からは気をつけろよ

584:デフォルトの名無しさん
10/11/01 16:44:55
>>581
マルチすんなってのは同意だが、>>573はどうみても原因を突き止めろよと言ってます
わざわざ原因として考えられる要因まで列挙してる心優しいレスです

585:デフォルトの名無しさん
10/11/01 16:49:33
俺はバレないようにこそこそマルチポストするやつより
堂々とマルチポストする奴の方が好きだ

586:デフォルトの名無しさん
10/11/01 16:49:57
お前の好みは聞いてない

587:デフォルトの名無しさん
10/11/01 16:56:57
>>538をかばってる人は、まず質問に答えるべきだ!

588:デフォルトの名無しさん
10/11/01 17:06:32
いや、マルチする人はちょっと・・・

589:デフォルトの名無しさん
10/11/01 17:10:59
プライドの高い人が多いようだね。
ネタではなく真面目に素直に難しすぎてわかりませんと言える
ような人こそ素晴らしいと思うんだよ。

590:デフォルトの名無しさん
10/11/01 17:12:15
ほらな
マルチは悪びれる様子もなきゃ自覚もない

591:デフォルトの名無しさん
10/11/01 17:22:18
わからないならレスしないでくださいって偉い人が言ってたから
素直にわかりませんと発言する人はいないと思うよ

592:デフォルトの名無しさん
10/11/01 17:28:10
でも分からないということも答えだろ。
もしかしたらみんなわからなくて
未解決問題の一つかもしれないわけだし。

593:デフォルトの名無しさん
10/11/01 17:41:23
文字通り誰にも分からない問題なら分かりませんって答えられるけど、
自分には分からないって程度だとわざわざ分かりませんとは書かないな
このスレではそんな問題にお目にかかったことはないが、
サードパーティのライブラリ系のスレとかだと稀によくある話だ

594:デフォルトの名無しさん
10/11/01 18:03:31
operator= がconst で実装されてるぐらいしか思いつかないが

595:デフォルトの名無しさん
10/11/01 18:07:35
>>538のサイトで紹介されているイディオムを全て教えてくれ

596:デフォルトの名無しさん
10/11/01 18:35:13
ここ読めば全部分かるよ
URLリンク(users.rcn.com)

597:531
10/11/01 20:51:08
>>532,535
thx

598:484
10/11/01 21:01:05
>>486, >>495, >>497
皆さんの指摘を見て,よくよくソースを見直してみると,ちょっとしたtypoでおかしなエラーが出ていたことが原因でした.
修正すると,そのままconst int x = 10;で望み通りの結果が得られました.スレ汚しになってしまい,すみません.
こんな稚拙な質問にも丁寧に答えて頂いてありがとうございました.

599:デフォルトの名無しさん
10/11/01 22:30:44
マルチはその掲示板の意向にもよるだろう
思考停止ダメゼッタイとか頭が凝り固まってるのを露呈してる
まあ2chでは基本ご法度ではあるだろうが

600:デフォルトの名無しさん
10/11/02 00:13:48
>>546
うぉぉありがとうございます
pythonスレ行きます。
zoom機能じゃなくて画像を変形する感じの機能です。

601:デフォルトの名無しさん
10/11/02 00:45:49
ファイル入出力について質問です。
以下のように、ファイル名を受け取って、fopenを使ってそのファイルを開き、その内容を配列にしまって出力する関数があったとします。

void hoge(char *file_name){
// ファイルオープン
fp = fopen(file_name, "rb");
// ファイルサイズの所得
fseek(fp, 0, SEEK_END);
sz = ftell(fp);
fseek(fp, 0, SEEK_SET);
// メモリを確保してファイル読み込み
myPtx = (char*)malloc(sz);
fread(myPtx, 1, sz, fp)
fclose(fp);
printf("%s\n", myPtx);
    free(myPtx);
}

これに対して別のテキストファイル名を指定して二階呼び出したところ、二回目の出力がおかしくなってしまいます。
具体的には、出力の最後に"数字の羅列(一回目のファイルの内容?)+文字化け文字"がくっついてしまいます。
サイズが大きいファイル→サイズが小さいファイルと呼び出せばこのようなエラーは起きません。
メモリ開放はしっかりやってるつもりなのですが、何がおかしいのでしょうか?

602:デフォルトの名無しさん
10/11/02 01:42:52
>>601
myPtxの指す文字列に\0のヌル文字が格納されてるか確認してみてはどうだろう
char str[1000];とかにコピーすればデバッガで簡単に見れる

603:デフォルトの名無しさん
10/11/02 01:48:31
>>601
テキストファイルの場合
ftellのサイズをfseek以外に使うのは未定義のはず
fgetposでやってみたら?

604:デフォルトの名無しさん
10/11/02 10:23:30
>>601
読み込むのはサイズ指定していてナル終端文字列になっていないのだから、そのまま%sで出力しちゃダメ。
printf("%.*s\n", sz, myPtx)として味噌。

605:デフォルトの名無しさん
10/11/02 23:13:01
5目並べのクリア条件ってどんな感じでやればいいんですか?

606:デフォルトの名無しさん
10/11/02 23:20:26
縦か横か斜めに5つ並んでたらクリアって感じでやればいいのではないんですか?

607:デフォルトの名無しさん
10/11/02 23:21:32
全部確認するか置かれた位置から調べるか迷ってます

608:デフォルトの名無しさん
10/11/02 23:31:11
自分がプログラムを書きやすい方でいいと思います
試しにどっちかの方法で書いてみて、途中であーなんかこっちは難しそうだと思ったらもう片方にしてみるとかでもいいと思います

609:デフォルトの名無しさん
10/11/02 23:34:07
再帰でやればいいんじゃね?

610:デフォルトの名無しさん
10/11/02 23:37:21
五つ並んでるのをしらべるのに再帰いるのかね。

611:デフォルトの名無しさん
10/11/02 23:41:24
てか最後に置いた石によって並ぶかもしれない5目を調べるだけじゃん?
最大で15通り、碁盤上下左右端付近ならそれ以下
たいした手間じゃないでしょ

612:デフォルトの名無しさん
10/11/03 00:11:52
再帰でもループでも簡潔に書ける


613:デフォルトの名無しさん
10/11/03 00:13:38
関数型言語ならむしろ再帰で書くのが自然。

614:デフォルトの名無しさん
10/11/03 00:15:57
五つ並んでるの調べるのにどこから見たらいいかって話に「再帰で」って
答えも意味不明だな。

615:デフォルトの名無しさん
10/11/03 00:20:40
そんなもん置かれた位置からに決まってる



616:デフォルトの名無しさん
10/11/03 07:56:43
>>602, >>603, >>604
ありがとうございます
まずfgetposですが、ftellと同じ結果でした
次に配列を用意してデバッグ中に見てみると、szから少し進んだところにNULL文字がありました
szからNULLまでは文字化けした文字で埋められていました
szにはNULL文字が含まれないようです
なので、mallocのときにsz+1分だけ確保して、最後にNULL文字をいれることで解決しました
どうもありがとうございました

617:デフォルトの名無しさん
10/11/03 22:54:50
c言語だと文字列の配列はchar *array[] = (ry で作れるけど、
c++でstringの配列はどうやって作るんですか?

618:デフォルトの名無しさん
10/11/03 23:01:13
>>617
string array[];

619:デフォルトの名無しさん
10/11/03 23:08:59
>>618
感謝

620:デフォルトの名無しさん
10/11/04 03:39:27
URLリンク(tv.dee.cc)
このコードの解説をしていただけませんか?

621:デフォルトの名無しさん
10/11/04 04:02:02
>>620
半径rの円を描く時のコード
角度0.02πラジアンごと点の座標を1回転分出力してる
っていうかこれコード間違っててコンパイルできねぇ

622:デフォルトの名無しさん
10/11/04 04:08:46
>>620
・もし様々なことに目をつぶってどういうプログラムかを知りたいなら
→半径1の円周上のxy座標を角度0.02πradごとにx軸から画面表示する

・もし様々な突っ込みどころについてなら
→二行目の時点でコードを投げ捨てる

623:デフォルトの名無しさん
10/11/04 05:53:01
>>620
2行目ワロタ

624:デフォルトの名無しさん
10/11/04 06:02:48
すたじお☆えっち

つまりエロゲの開発コードだよ

625:デフォルトの名無しさん
10/11/04 06:09:06
{}もねえな

626:デフォルトの名無しさん
10/11/04 06:12:58
>>624
(´・ω`・)

627:デフォルトの名無しさん
10/11/04 07:31:31
カウンタをfloatで実装するのは感心しない

というかコレスタッフが書いたのか?

628:デフォルトの名無しさん
10/11/04 09:44:42
ring1.cという意味のないコメントも考慮して
全く分からない奴が、どっかから手動でコピペしたと考えるのが妥当だろうな
紙媒体から手打ちで写したんじゃないかしら


629:デフォルトの名無しさん
10/11/04 10:16:04
>>616
そして敢え無く無視される>604。出力が目的なら、無駄に1バイト確保する必要なんてないのに。

630:デフォルトの名無しさん
10/11/04 10:29:26
本人乙

631:デフォルトの名無しさん
10/11/04 10:35:52
で?

632:デフォルトの名無しさん
10/11/04 11:21:05
>>620
URLリンク(www.esa.c.u-tokyo.ac.jp)

633:デフォルトの名無しさん
10/11/04 14:11:19
>>620
コンパイルエラーわろたwww

634:デフォルトの名無しさん
10/11/04 14:50:39
studio.hってテレビ局のスタッフがつい打っちまったんだろうな。

635:デフォルトの名無しさん
10/11/04 15:02:20
マジレスすると、
コンパイル出来るかどうかなんて
どんなコンパイラーを使うかどうかが決まってないと意味無いと思う。
もっとマジレスするとテレビの背景として使うソースコードが
コンパイル出来るかどうかなんてどうでも良い。

636:デフォルトの名無しさん
10/11/04 15:45:37
マジレスすると、
#include <studio.h>
そのコードで正常にコンパイルできるコンパイラは使いたくない

637:デフォルトの名無しさん
10/11/04 15:58:12
copy stdio.h studio.h

638:デフォルトの名無しさん
10/11/04 16:06:19
飾り鋲入出力

639:デフォルトの名無しさん
10/11/04 17:07:33
実は遠まわしにインド人IT技術者を揶揄する意図で書かれたテロップだとしたら…

640:デフォルトの名無しさん
10/11/04 17:23:20
だが待ってほしい、そもそもC/C++だというのが思い込みなのではないか

641:デフォルトの名無しさん
10/11/04 18:59:44
最初のコメントに.cって書いてありますけど…

642:デフォルトの名無しさん
10/11/04 19:18:51
拡張子.cのインド発新言語かもしれん

643:デフォルトの名無しさん
10/11/04 19:21:06
カレー言語か

644:デフォルトの名無しさん
10/11/04 20:31:35
>>620
番組スタッフが適当に作ったんだろうな。

645:デフォルトの名無しさん
10/11/04 20:44:33
俺らだってゲームのマップ作るとき地質学とか建築学とか考えないで適当に作るだろ (考えて作ってる人いたらごめんなさい)
気にしたら負けだと思う

646:デフォルトの名無しさん
10/11/04 20:48:09
ネットとかから適当にコピったりしたらまずいと思って、
わざわざ手打ちしたんだろうな。
ほほえましいタイポから考えると。

647:デフォルトの名無しさん
10/11/05 03:16:48
てかマでも素でstdio.hをスタジオヘッダーって読んでる奴いるしな

648:デフォルトの名無しさん
10/11/05 04:56:50
ス'タ'ジオの母音はどこいったのか感

649:デフォルトの名無しさん
10/11/05 06:08:26
SCSI「呼んだ?」

650:デフォルトの名無しさん
10/11/05 09:39:11
す・・・スクシー

651:デフォルトの名無しさん
10/11/05 13:56:06
Cのヘッダー名もCP/M時代からの8文字の縛り(?)かもしれないし、
関数名に至っては開発当時の環境の貧弱さから6文字までしか
識別子は認識せず後は無視するようになっていた

そのためCの関数やヘッダーはあのような妙な短縮形が多いんだろう
特にstring.hの関数名の分かりにくさは最悪

652:デフォルトの名無しさん
10/11/05 18:15:18
宿題についての相談です。
正の整数をキーボードから入力し、1からその整数までの和を計算し、出力するプログラムをfor文を用いて書け

というものなのですが、どのように書けばいいでしょうか。

653:デフォルトの名無しさん
10/11/05 18:18:23
宿題スレいけばすでに答えが出てる

654:デフォルトの名無しさん
10/11/05 18:51:23
int *p;
int* p;
書き方が違うだけで同じ意味でしょうか?

655:デフォルトの名無しさん
10/11/05 18:53:27
同じ意味です

656:デフォルトの名無しさん
10/11/05 18:54:49
int*p;
int * p;
などのように書いてもいいぞ

657:デフォルトの名無しさん
10/11/05 18:57:40
identify<int *>::type p;
こう書くのが最も優秀です

658:654
10/11/05 19:01:53
>>655-657
回答ありがとうございます
勉強になりました

659:デフォルトの名無しさん
10/11/05 19:11:00
>>654
int *p; これは*pについて。*pはintを入れるんですよってこと
int* p; これはpについて。pはint*を入れるんですよってこと

int*p;
int * p;
これらは最初の2つのどちらとも取れる手抜き書き方
つまり、読み手に任せるよってこと。

660:デフォルトの名無しさん
10/11/05 19:21:17
配列の中の値を入れ替えるにはどうすればいいのでしょうか?
例えば、配列の中の最小値を求めて、その最小値を配列の中の値の一つに上書きする
といった感じです。
お願いします。

661:デフォルトの名無しさん
10/11/05 19:35:21
配列の中の最小値を求めるには、まず配列の最初の値を調べて変数に覚えます
それから配列の残りの値を順に見ていって、覚えた変数の値と今見てる配列の値の小さい方を変数に覚えます
それを配列の最後まで繰り返したら、覚えてる変数の値が配列の中の最小値ですので、
その最小値を配列の中に好きなように上書きすればいいです

662:デフォルトの名無しさん
10/11/05 19:42:40
たとえば最小値を先頭と入れ替えるならこうだ
URLリンク(codepad.org)

663:デフォルトの名無しさん
10/11/05 19:42:43
それをC++で記述お願いします。

664:デフォルトの名無しさん
10/11/05 19:48:54
ありがとうございます。そしてごめんなさい。
質問間違えましたorz

最小値を上書きするのではなく、その最小値に+1した値を、でした。
申し訳ないです。。。

665:デフォルトの名無しさん
10/11/05 19:53:06
いつのまにか書き込みが!
規制で携帯から失礼してますorz


>>662
こんなページあるんですね。分かりやすいです。
ありがとうございます。

666:デフォルトの名無しさん
10/11/05 20:19:10
>>659
嘘教えるな。その説明はint* p,q;で破綻する。

667:デフォルトの名無しさん
10/11/05 21:39:21
すみません。
3KBのBYTE配列に (※4バイトずつ利用)
変数(int型とfloat型)5~20個(毎回一定ではない個数)を1セット。
それを3~30セット入れています。

毎回一定ではない個数なので、
あらゆる間仕切りに「特定の整数」を使いたいのですが、
floatがその「特定の整数」と同じビットの並びを起こさないかが不安でなりません。

また、同じ並びを検出する事はできるのですが、
下手にfloatの値を動かすと誤差では済まない事になったり、
別の「特定の整数」と化す恐れがないかという不安が・・

どなたか、何か良い回避方法があれば教えて頂けますと幸いです・・orz


668:デフォルトの名無しさん
10/11/05 21:42:54
先頭に個数でも入れとけばいいんじゃないの

669:デフォルトの名無しさん
10/11/05 21:45:19
データ種別をあらわす1バイトを先行させる。

670:デフォルトの名無しさん
10/11/05 22:42:04
配列に入れる際にfloatが特定の整数と同じになったかどうかチェックして同じになってたら 1ulp ほどずらす ・・・あんまりいい方法じゃないと思うけど

671:デフォルトの名無しさん
10/11/05 22:43:52
先頭にインデックステーブルを持つ

672:デフォルトの名無しさん
10/11/05 22:57:51
>>667
intとfloatがグチャグチャに混在すんの?

673:デフォルトの名無しさん
10/11/05 23:45:44
派生クラスの方でコンストラクタによる初期化を行うつもりのプログラムなのですが以下のようなエラーが出ます。
理由を考えてみたのですが良く分からなかったので初歩的な質問ですがお願いします。

エラー E2312 oko.cpp 20: 'Basic::height' は曖昧でない基本クラス 'Human' ではない(関数 Human::Human() )
エラー E2312 oko.cpp 20: 'Basic::weight' は曖昧でない基本クラス 'Human' ではない(関数 Human::Human() )

URLリンク(codepad.org)

674:デフォルトの名無しさん
10/11/05 23:55:39
URLリンク(codepad.org)
派生クラスのコンストラクタで基底クラスのメンバ変数は弄れません
基底の方のコンストラクタで設定するがよろし

675:デフォルトの名無しさん
10/11/06 00:01:15
for文でループを

const int N=hoge;
for(int k=0;k<N;++k) {
cout << "a" << endl;
(中略)
cout << "b" << endl;
}

のように書いたときに,
「b」と出力したきりプログラムがフリーズするということが起きています.
中略部分は事情があって具体的にはここには書けませんが,少なくともカウンタkに手をつけるような処理はしていません.
おおまかには中略部分で反復計算をやって,条件をみたしたらbreak,Nを最大反復回数とする処理です.
色々と経過を吐かせると,もちろん脱出条件は満たしてはおらず,次反復への処理を終えて,
次のループに進もうとするまさにそのときにフリーズしてしまっています.
この場合,どのようにしてデバッグするのが良いでしょうか.

676:デフォルトの名無しさん
10/11/06 00:02:00
>>674
基底クラスの方のコンストラクタで何もしないように定義して後から実行される派生クラスのコンストラクタで
メンバ変数を初期化しようとしていましたが良く分かりました。
ありがとうございました。

677:675
10/11/06 00:04:33
書き忘れました.
コンパイラはGCC,Intelコンパイラ両方を試し,両方共全く同じ段階でストップします.
OSはLinux,最適化は-O0,-O1, -O2, -Osで再現します.

678:デフォルトの名無しさん
10/11/06 00:05:09
>>675
bの後でフリーズするなら
そのあと1行ずつ実行すりゃわかるだろ

679:デフォルトの名無しさん
10/11/06 00:07:07
(中略)にバグがあるとしか。バグ可能性はメモリー破壊

680:デフォルトの名無しさん
10/11/06 00:08:27
gdb?

681:デフォルトの名無しさん
10/11/06 00:46:37
>>676
何度も質問すみません。
もし派生クラスから基底クラスのメンバ変数を変更したいならば
派生クラスで初期化の関数を作る方法ぐらいなんでしょうか?

682:デフォルトの名無しさん
10/11/06 00:56:37
代入すれば?

683:デフォルトの名無しさん
10/11/06 00:58:49
>>682
そうですねw
出来たらコンストラクタみたいに実装したかったので

684:デフォルトの名無しさん
10/11/06 01:00:34
URLリンク(codepad.org)
コンストラクタで代入してもいいのよ

685:デフォルトの名無しさん
10/11/06 01:06:35
>>684
初期化ばっかり考えてたので全く頭に浮かびませんでしたw
代入の場合は派生クラスのコンストラクタでも基底クラスの値は変更できるんですね。
回答ありがとうございました。

686:デフォルトの名無しさん
10/11/06 02:31:23
>>673
URLリンク(codepad.org)

基底クラスのメンバ変数をコンストラクタ形式で初期化する事はできない
引数付きのコンストラクタで初期化する事

687:デフォルトの名無しさん
10/11/06 03:46:47
シリアルポートで通信するクラスで
すでにopenしてるポートを再度openしようとしたら例外もしくはassertしたいのですが
対象のポートが使用済みかどうかを判別する方法はないでしょうか?

688:デフォルトの名無しさん
10/11/06 16:09:54
ダイナミックライブラリを作るときは
関数の前に
__declspec(dllexport)、__declspec(dllimport)
を付けて

スタティックライブラリのときは、消す必要がある?(消さないとそのライブラリを使った時リンクエラーがでた)

つまり#defineでダイナミックライブラリとスタティックライブラリを分ける必要がるの?

689:デフォルトの名無しさん
10/11/06 16:10:01
double c[0][1]=1;
double x = 1;
if( tan(sita) * x == c[0][1] ){
printf("hoge");
}

tan(sita) は1になるようにしてあります。
実行してみると「hoge」と出力されません。
判定式には三角関数を使ってはいけないなどあるのでしょうか?

690:デフォルトの名無しさん
10/11/06 16:19:26
>>689
そんなことはありませんが、 double 型の値には計算誤差が含まれるものですので
== で比較した場合は、ぴったり完全に誤差なく 1 が得られたときしか出力されません
double は 17 桁くらいの精度がありますから、
printf("%.17f\n", tan(sita) * x);
などとしていちど値を確認してみてください

あとどうでもいい話ですが、θは sita じゃなくて theta です

691:デフォルトの名無しさん
10/11/06 16:30:39
>double c[0][1]=1;
double c[1][2];
c[0][1] = 1;
こうじゃなくて大丈夫なのか?

692:デフォルトの名無しさん
10/11/06 16:55:29
>>688
はい

693:デフォルトの名無しさん
10/11/06 16:58:59
>>688
生成物が変わるんだから宣言変えなきゃダメだろう。

694:デフォルトの名無しさん
10/11/06 17:07:19
>>689
不動小数点の=比較は誤差を考えて、
if( abs(A-B) < 10^-6) とかやった記憶がある。

695:デフォルトの名無しさん
10/11/06 18:36:21
>>694
ありがとうございます。
その方法で解決できました。

696:デフォルトの名無しさん
10/11/07 11:19:50
lseekの頭の"l"って何の略ですか?

697:デフォルトの名無しさん
10/11/07 11:36:19
long

698:デフォルトの名無しさん
10/11/07 12:12:59
>>697
ありがとうございます。

699:デフォルトの名無しさん
10/11/07 23:51:15
マウスイベントメッセージを使用せずにマウスクリックの情報を取得する方法はありますか?
WM_LBUTTONDOWNではなく、GetKeyStateのようなこちらから確認する方法です
お願いします。

700:デフォルトの名無しさん
10/11/07 23:55:40
自分で書いてるじゃん

GetKeyState(VK_LBUTTON)

701:デフォルトの名無しさん
10/11/08 00:25:28
>>700
ああ!それで大丈夫でしたか!
ありがとうございます。助かりました。

702:デフォルトの名無しさん
10/11/08 00:26:10
>>700
おお!それで大丈夫でしたか!
ありがとうございます。助かりました。

703:デフォルトの名無しさん
10/11/08 00:27:33
これはどう解釈したら良いのだろうか、

704:デフォルトの名無しさん
10/11/08 00:58:27
これはどう解釈したら良いのだろうか、

705:デフォルトの名無しさん
10/11/08 00:58:44
僕にはわからない

706:デフォルトの名無しさん
10/11/08 01:04:20
僕にはわからない

707:デフォルトの名無しさん
10/11/08 08:28:04
多分キーボードにしか使えないと思ってたんじゃないだろうか

708:デフォルトの名無しさん
10/11/08 11:03:58
多分キーボードにしか使えないと思ってたんじゃないだろうか

709:デフォルトの名無しさん
10/11/08 12:55:57
タグみたいなのあるじゃないですか。
それでタグみたいなやつを作るには
class A{};
static const int A=1;
typedef int A;
上記のうちのどれが最適ですか?
ちなみにtypedefはint Aとint Bはべつものになりますか?

710:デフォルトの名無しさん
10/11/08 13:03:22
日本語でおk

711:デフォルトの名無しさん
10/11/08 13:28:26
iterator_tag でも参考にしろ。

712:デフォルトの名無しさん
10/11/08 16:25:51
for(i=1;i<10;i++)
{
if(no[i] < i_min)
{
i_min = no[i];
a = i;
}
no[a] = i_min+10;


これを10回繰り返したいのですが、どうすればいいんでしょうか?
具体的には配列の最小値を選び、その最小値に+10をして、もとの値に入れる

といった動作です
お願いいたします。

713:デフォルトの名無しさん
10/11/08 16:45:50
forで括れよ

714:デフォルトの名無しさん
10/11/08 16:50:35
>>712
int j;

for ( j=0 ; j<10 ; j++ ){
i_min = no[0] ;
a = 0 ;
for(i=1;i<10;i++)
{
if(no[i] < i_min)
{
i_min = no[i];
a = i;
}
}
no[a] = i_min+10;
}

715:デフォルトの名無しさん
10/11/10 19:11:42
ビットフラグの定義を

#define A_ENABLE 0x00000001
#define B_ENABLE 0x00000002
#define C_ENABLE 0x00000004
#define D_ENABLE 0x00000008

みたいに書いている同僚がいたので


#define A_ENABLE (1 << 0)
#define B_ENABLE (1 << 1)
#define C_ENABLE (1 << 2)
#define D_ENABLE (1 << 3)

のほうがいいと思ったので指摘したんだけど、こんなものは会社によって
書き方のルールは違うからどっちでもいいみたいなことを言われました。

マイコン用のライブラリとかでは後者の書き方をよくみかけるし、
ビットフラグだということがわかりやすいので、後者で統一しようと
考えているんだけど、おかしいですかね。。。?



716:デフォルトの名無しさん
10/11/10 19:14:15
>>715
どっちでもいいし、デバッガで見たときなどに計算しなくてすむぶん上の方がいいという考え方もありうる。

717:デフォルトの名無しさん
10/11/10 19:28:40
ありがとうございます。

ただ、デバッガでみるときはビットがたっているか、いないかで確認するので
表示は16進表記じゃなく、2進数表記に切り替えると思いますがどうでしょうか?

やっぱりもともとビット単位で表現するものをわざわざ16進表記にするのは
余計な脳内変換が必要なのでそうする理由がよくわからないのですが、ほかに
デバッガでの表示が容易という点以外に何か利点はありますでしょうか?


718:デフォルトの名無しさん
10/11/10 19:58:25
2、8、16進数の相互変換は見た瞬間出来るぐらいでちょうどいいよ

719:デフォルトの名無しさん
10/11/10 21:41:06
A_ENABLEの定義を見ただけでフラグに何ビット使うかわかるとか

720:デフォルトの名無しさん
10/11/10 22:54:07
>>15
1ビットだけ立つならそれでもいいが、複数立てる場合は前者が直感的にいい。
もちろん、頭の中で瞬時にビットのイメージがわくからね

721:デフォルトの名無しさん
10/11/10 23:22:22
>>720
どういうこと?マクロの使用箇所は関係ないと思うが。

722:デフォルトの名無しさん
10/11/10 23:42:21
>>715
そんなビミョーこと指摘しても認めるわけないだろ。

マニュアルに書いてあるようなことでも絶対認めないような
連中とかゴロゴロいるくらいだし。

「SQLでbetween禁止な。インデックスがきかないから」

「(各種証拠をみせて)インデックスききますよ」

「いままでずっとそうだから、とにかくbetwennは禁止だ」

みたいな。

723:デフォルトの名無しさん
10/11/10 23:53:48
>>722
まあ指摘が細かいことはわかっているんだけど、こういう糞コードで
どんどん汚染されていくのを黙ってみてられないんだよね・・・


724:デフォルトの名無しさん
10/11/11 00:23:30
>>723
bit立てるのにbit長キメウチは汎用性ないからな
でも、A_ENABLE ってのはちょっとセンスないな

#define BIT_0 (1 << 0)
#define BIT_1 (1 << 1)
#define BIT_2 (1 << 2)
#define BIT_3 (1 << 3)
....
とか位にしてくれ
BIT_0 || BIT_3 とかするときにどのbitが建っているか解りやすい

725:デフォルトの名無しさん
10/11/11 00:26:57
BIT_0 | BIT_3 だった

726:デフォルトの名無しさん
10/11/11 00:45:26
#define BIT(n) (1 << (n))

727:デフォルトの名無しさん
10/11/11 00:48:04
#define A_ENABLE 0x100000000
#define B_ENABLE (1 << 32)

intが32ビット以下のときAはlong long等になるがBはint 0
シフトするなら環境依存の有効ビット幅を意識せずにはいられない

728:デフォルトの名無しさん
10/11/11 01:03:21
>>722
だって日本ではドカタと呼ばれている底辺職種の人たちだよ
>>723 だから、細かいことはあまり気にするな

729:デフォルトの名無しさん
10/11/11 01:05:11
情報産業がなければ何もかも回らなくなるのに土方とか言われてなんでこんな立場低いのかね

730:デフォルトの名無しさん
10/11/11 01:22:59
>>729
プログラマに低脳多いから、立場が低いじゃないか
わが社の主業務は人貸しですってとこ多いし。売買の対象となる人の立場が高いなんてありえないよ。
自社製品を売って金を稼ぐ会社か元受に近い会社じゃないと、プログラマ==ドカタって扱いになるんじゃないか

731:デフォルトの名無しさん
10/11/11 07:44:06
本物の土方だっていなくなれば大変だからな
いなくなれば困るなんてのは立場には関係ないわな

732:デフォルトの名無しさん
10/11/11 12:54:09
プログラマーは30過ぎるとSEにジョブチェンジされるんだからいいじゃん。
土方は定年まで土方だよ。

733:デフォルトの名無しさん
10/11/11 14:30:22
数千行のプログラムである処理を行うとき、
関数の引数としてポインタを利用する場合とグローバル変数を
用いる場合ではどのような違いがありますでしょうか?

734:デフォルトの名無しさん
10/11/11 14:30:22
ひ、ひじかた…

735:デフォルトの名無しさん
10/11/11 14:34:27
グローバル変数は極力使わないようにするべき

736:デフォルトの名無しさん
10/11/11 15:14:44
グローバル変数を使うと悪意を持った同僚がバグを仕込む確率が高くなります

737:デフォルトの名無しさん
10/11/11 15:28:41
関数コールの時にスタックに積まない分、グローバルの方が早いって事?

738:デフォルトの名無しさん
10/11/11 15:40:55
>>733
仕様をいちいち客に問い合わせるか、
仕様書を見るかの違い。

739:z
10/11/11 16:54:20
C言語で分からない問題があります。
{if-else文} 身長と体重のデータを読み込み、下の定義から体型を判定するプログラムを作成せよ。

定 義:身長h(cm),体重w(Kg)とすると

w < (h-95)*0.82 やせすぎ(SLIM)

w > (h-95)*1.10 ふとりすぎ(FAT)

その中間 正常(NORMAL)



740:デフォルトの名無しさん
10/11/11 16:56:19
マルチしね

741:デフォルトの名無しさん
10/11/11 17:41:13
>>737
誤差らしい

742:デフォルトの名無しさん
10/11/12 11:29:00
>>737
最近のコンパイラはstaticな関数はどんどんインライン展開してしまうのでスタックに積むコストはなくなる場合が多くなります。
また、グローバル変数はCPUキャッシュの外にある場合があるので、アクセスコストが馬鹿にならない場合があります。

そんなことよりも、それが問題になるようなレベルの高速化をする前にやることは腐るほどあるので、保守性を上げる為に
どうしても必要がある場合以外はグローバル変数は禁止の方向で。まして、externで外部変数を参照するなんて以ての外。

743:デフォルトの名無しさん
10/11/12 12:15:27
>>733
マルチスレッド化に際し、大きな障害になる。

744:デフォルトの名無しさん
10/11/12 16:14:21
応用的なクラスを効率とか安全性考えて試行錯誤するんだけどstlとかboost使ってとりあえずでやっつけたほうが良いものが出来上がって悲しい

745:デフォルトの名無しさん
10/11/13 08:38:18
>>744
俺たちの代わりに試行錯誤してくれたんだと考えれば悲しくない。

746:デフォルトの名無しさん
10/11/13 19:14:16
DirectXでゲームを作ってます

外部ファイルで持たせてあるデータのロードに失敗した時に、
エラーメッセージを表示して強制終了したいのですが、
MessageBox()関数には引数として、hwndが必要です。

クラス設計を進めていくと、わざわざ全てのクラスのコンストラクタに
hwndを渡すのが煩わしいのですが、他の方法はないでしょうか?

hwndをグローバル変数で持たせる、という方法も思いついたのですが、
エラーメッセージのために、普通、そこまでするものでしょうか?

ちなみに、_ASSERT_EXPR()は、リリース時には動かないので、除外してください

747:デフォルトの名無しさん
10/11/13 19:50:19
例外を投げてUIを扱えるところまで戻ったところでcatchする

748:デフォルトの名無しさん
10/11/13 19:57:00
>>746
言わんとするところは分かるが根本的な設計が間違ってる

ウィンドウハンドルみたいなハード依存部分を
グローバルスコープで参照したり各クラスオブジェクトに渡すのは良くない
ハードに依存する部分としない部分はキッチリ分けないと再利用性が無くなる

あと、その言い方だとたぶん
各オブジェクトごとにファイルを読んでインスタンスを生成するような設計っぽいけど
それだと同じファイルを使うオブジェクトを複数生成するときに
オブジェクトの数だけ読み込みを行わなくならなくならないか?

やるべきことはデータロード部分と各クラスオブジェクトを分離すること
まずデータロードクラスなりを1つ作って
データ読み込みは全てコイツが行う
ウィンドウハンドルもこコイツだけが内部で知ってれば良くて
メッセージ表示等も全てコイツがやる

各クラスオブジェクトはこのデータロードクラスで
読み込んだデータを参照してインスタンスを生成し
それ自身はファイルの読み込みはしないようにする

749:デフォルトの名無しさん
10/11/13 19:59:00
なるほど!

750:デフォルトの名無しさん
10/11/13 20:11:08
>>748
便乗して質問してしまうが「データの参照」って具体的にどうやって書けばいいの?


751:デフォルトの名無しさん
10/11/13 20:17:36
>>746
コンストラクタとか関数の引数全てにhwnd渡すぐらいなら、
グローバル変数の方がいい

どうしても気なるなら、staticな変数にhwndを覚えるようなクラスを作って、
メッセージボックス表示をそのクラスで行なうとか

752:デフォルトの名無しさん
10/11/13 20:22:51
強制終了ならFatalExceptionとか作ってスローしてmainでキャッチすればいいじゃん

753:デフォルトの名無しさん
10/11/13 21:41:33
>>746
けっこうみんな悩んでるからここで聞いて解決する問題じゃないと思う


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch