1 名前:デフォルトの名無しさん [2009/03/02(月) 00:36:19 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/
641 名前:デフォルトの名無しさん [2009/04/02(木) 00:04:08 ] >>636 上のループで1からNum_Points-2まで進んで 下のループでも1からNum_Points-2まで進んだってこと? それなら処理終わってるよね? せっかく解決しようと聞いているんだから省略しないできっちり説明してほしいな。
642 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 00:40:04 ] >>641 上のループ、もしくは下のループどちらかしか書いてなければ正常に動きます。 だから、printfでiがどこまで進んでいるかも確認して、Num_Points-2まで進んでました。 このループを両方コードに書いてプログラム実行すると止まって、 printfで表示できてたものも表示されなくなってしまいます。
643 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 00:48:48 ] >>642 printfを具体的にどこにどのように入れてるのか知らないが、つまりループを両方書くと 実行時に最初のループに入ってすらいないということか? もし可能であれば、実際にその問題が生じるような最小限のコード全部を書いてほしい。 つまり、俺らがそのままコピペして自分でコンパイルしてみると、同じ問題に遭遇できるようなコードってことね。 それが出来れば問題解決のための労力は少なくて済む。 まあ実際にはかなり長いコードになっちゃうのかもしれないけど。 あと、君が使ってるコンパイラに特有のトラブルだったりすると、助言できないかもしれない。
644 名前:デフォルトの名無しさん [2009/04/02(木) 00:54:16 ] >>634 これ↓実行したら何が表示されるの? Num_Points=1 fprintf(stderr, "start(1) Num_Points=%d\n", Num_Points); for (i=0; i < (Num_Points-1); i++) { fprintf(stderr, "(1)[i=%d][Num_Points=%d]\n", i, Num_Points); distance_x = (gsd[i+1].x-cur_xpos) * (gsd[i+1].x-cur_xpos); distance_y = (gsd[i+1].y-cur_ypos) * (gsd[i+1].y-cur_ypos); distance = sqrt(distance_x + distance_y); } fprintf(stderr, "end(1) Num_Points=%d\n", Num_Points); fprintf(stderr, "start(2) Num_Points=%d\n", Num_Points); for (i=0; i < (Num_Points-1); i++) { fprintf(stderr, "(2)[i=%d][Num_Points=%d]\n", i, Num_Points); a0 = atan2(cur_ypos-gsd[i].y, cur_xpos-gsd[i].x)-atan2(gsd[i+1].y-gsd[i].y, gsd[i+1].x-gsd[i].x); a1 = atan2(gsd[i+1].y-cur_ypos, gsd[i+1].x-cur_xpos)-atan2(gsd[i+1].y-gsd[i].y, gsd[i+1].x-gsd[i].x); } fprintf(stderr, "end(2) Num_Points=%d\n", Num_Points);
645 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 00:59:13 ] >>643 printfはどこに入れても実行されないです。 このループを二つ入れると、そのvoid関数の部分のprintfは全てダメになります。 結構変数値を他の部分から呼び出してて、 その部分に関しては別の人がやった部分なので最小限のコードを作るにも少々時間かかると思います。 他にも少しやらなくてはいけないことがあるので、もしそれができたら戻ってきます。 ここまで、あまり上手く説明できなくて御迷惑おかけしました。 レス下さった方々、ありがとうございます。
646 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 01:03:50 ] 最小限のコードなんて作らなくていい。 とりあえず>>644をコピペすればいいだけだろ。
647 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 01:06:28 ] 無駄骨
648 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 01:10:54 ] ステップ実行して、どこで爆死してるか見つけないとダメじゃね? どっかでメモリ、ぶっ壊してるのだろ、きっと
649 名前:630 mailto:sage [2009/04/02(木) 01:30:25 ] >>644 何も表示されません…。自分が両方のループ入れた時の症状と同じです。
650 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 05:50:46 ] もう4月馬鹿は過ぎているんだから釣りは勘弁してくれ。
651 名前:デフォルトの名無しさん [2009/04/02(木) 06:40:26 ] #include<stdio.h> int sum(int x,int y){ return x+y; } int max(int x,int y){ return x*200+y*300; } int main(void){ int x,y,i,am,pm; char cl; for(i=0;i<9;i++){ scanf("%s %d %d",&cl,&x,&y); am=sum(x,y); pm=max(x,y); printf("%s %d %d\n",cl,am,pm); } return 0; } と書いて実行するとき、%sの読み込みにc1と入れても 出力の%sではcだけとしか表示されないんです。 誰かこの謎の答えを教えてください。
652 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 06:46:18 ] >>651 char cl; → char cl[5000];
653 名前:デフォルトの名無しさん [2009/04/02(木) 07:03:43 ] >>652 さん ありがとうございます!!ありがとうございます!! 何でこんなことにも気づかなかったんでしょ(;'ω`)アホだ自分…
654 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 07:32:36 ] >>633 「デバッガでは良く分からない」んじゃあない お前がデバッガを分かってないだけ
655 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 07:38:41 ] >>651 char cl[100]; if (scanf("%99s%d%d", cl, & x, & y) != 3) fprintf(stderr, "Illegal input.\n);
656 名前:デフォルトの名無しさん [2009/04/02(木) 08:14:44 ] ここからユーザ定義関数で処理しなくてはならないんだが、 コレ以上の行動は俺の頭ではむりです…誰か助けて下さいorz #include<stdio.h> #define ROW 8 /*縦*/ #define COL 8 /*横*/ int main(void){ int i,j; int matrix[ROW][COL] ={ {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','#','#','#','#','#','#','#'}}; for(j=0;j<COL;j++){ for(i=ROW-1;i>=0;i--){ printf("%2c ",matrix[i][j]);} printf("\n");} printf("\n"); for(i=ROW-1;i>=0;i--){ for(j=COL-1;j>=0;j--){ printf("%2c ",matrix[i][j]);} printf("\n");} printf("\n"); for(j=COL-1;j>=0;j--){ for(i=0;i<ROW;i++){ printf("%2c ",matrix[i][j]);} printf("\n");} return 0; }
657 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 08:22:20 ] >>656 宿題スレへどうぞ
658 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 08:56:29 ] #include<stdio.h> #define ROW 8 /*縦*/ #define COL 8 /*横*/ void disp(int (*matrix)[ROW][COL], int revrow, int revcol) { int i,j,row,col; for (j = 0; j < COL; j++) { col = (revcol) ? COL - 1 - j : j; for (i = 0; i < ROW; i++) { row = (revrow) ? ROW - 1 - i : i; printf("%c ", (*matrix)[row][col]); } printf("\n"); } } int main(void){ int matrix[ROW][COL] ={ {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','*','*','*','*','*','*','*'}, {'#','#','#','#','#','#','#','#'}}; disp(&matrix, 1, 0); printf("\n"); disp(&matrix, 1, 1); printf("\n"); disp(&matrix, 0, 1); return 0; }
659 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 09:20:59 ] c初心者です。 以下の二つの関数はまったく同じように動きますか? int f1(int a) { if(a==3){ return 1;}; if(a>1){ return 2;}; return 3; } int f2(int a) { if (a==3) { return 1;} else if (a>1) { return 2;} else {return 3;}; }
660 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 09:24:27 ] 実行してみればいいじゃん
661 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 09:39:24 ] >>659 動きます。
662 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 10:12:28 ] 春休みが終わりそうで、カツオ状態だから、このありさま?
663 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 11:36:16 ] >>662 春休みに宿題なんかないだろ。
664 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 11:36:47 ] あるよ
665 名前:デフォルトの名無しさん [2009/04/02(木) 14:33:24 ] LinuxでC++で書いたクラスをまとめて、sharedライブラリ作ろうとおもってるんですが ヘッダファイルは、まとめたり、きれいにできませんか? 公開したいクラスは1つだけ(class A)です。実装はライブラリファイルひとつになります。 内部でたくさんのクラスを使ってるんですがこれらは外からは直接 使いません。 で、class Aのメンバにたくさんの他のクラスのオブジェクトがあったり、使ったり しているので、 class AのヘッダファイルA.hには内部のクラスたちを定義した たくさんの *.h がincludeされてます。 ライブラリを他人につかってもらうとき、ライブラリ1つと、ヘッダたっくさん になっちゃうんです。ひとつのヘッダファイルにまとめる方法ないです?
666 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 14:57:10 ] >>665 ひつの手だが、privateメンバにはダミー宣言を使う方法がある 例えば下の例(ヘッダ)で LIBをビルドする時だけ _LIB_MAIN_ を定義する こうすれば、LIB利用者には aaa.h は渡さなくて良い #ifdef _LIB_MAIN_ #include "aaa.h" aaa *a; #else void *a; #endif
667 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 16:46:14 ] それをいかに容量上限を感じさせないようにプログラムさすのがプログラマの役割だろ、常識的に考えて
668 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 16:52:42 ] 誤爆
669 名前:665 [2009/04/02(木) 17:33:37 ] >> 666 なるほど。いただき。 ポインタじゃなきゃだめ?サイズが合えばよい?
670 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:46:27 ] どんなクラスなのか分からんが、そもそもポインタ型にするなら、ヘッダからヘッダをインクルードする必要はないよ。 前方宣言だけで済む。
671 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 17:51:49 ] >>668 できるよ。 以上。 はい次の方。
672 名前:665 [2009/04/02(木) 18:04:13 ] >>670 そか。 全部ポインタにして、前方宣言すればすればよいのね。 ポインタじゃないとやっぱりむり?
673 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 18:10:08 ] >>672 参照でも可能だけど、まあ同じ話だね。 普通の変数の形で持つなら、その変数の型の完全な定義が必要になる。ポインタや参照なら不要。
674 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 18:31:47 ] Aのポインタだけメンバに持つ公開用のクラスでも作ればいいんじゃ まぁ要するにpimplなんだが
675 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:44:13 ] pthreads関数を使用してその環境で一番処理が早いスレッド数に自動的にあわせるプログラムを作っているのですが、 すべてのスレッド内の一秒間にループした回数の和を取得することができません。 どうすればうまくできるでしょうか。
676 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 21:59:41 ] 一番簡単なのはグローバル変数に格納する事。 2番目はクラスにしてメソッドで各スレッド内で足したものを返す。かなぁ??
677 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:20:48 ] >>675 pthread_joinで戻り値(第2引数)を合計すればいい。
678 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 05:06:12 ] #include<stdio.h> int main(void){ int a,s,i; int box[10]={0}; scanf("%d",&s); while(s!=0){ for(i=0;i<s;i++){ scanf("%d",&a); if(a<=9) box[0]+=1; else if(9<=a&&a<20) box[1]+=1; else if(29<a&&a<40) box[3]+=1; else if(19<a&&a<30) box[2]+=1; else if(39<a&&a<50) box[4]+=1; else if(49<a&&a<60) box[5]+=1; else box[6]+=1; } } printf("%d\n",box[0]); printf("%d\n",box[1]); printf("%d\n",box[2]); printf("%d\n",box[3]); printf("%d\n",box[4]); printf("%d\n",box[5]); printf("%d\n",box[6]); } return 0; } 上のソースをユーザ定義関数を使って書きたいときはどうしたらいいのでしょう?
679 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 05:21:41 ] mainの中身をそっくり自分の関数に移動して、mainでそいつを呼ぶ。
680 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 08:00:22 ] #include<stdio.h> int hantei(int i) { if (i < 0) { return 0; } if (60 <= i) { return 6; } return i / 10; } int main(void){ int a,s,i; int box[10]={0}; scanf("%d",&s); for(i=0;i<s;i++){ scanf("%d",&a); box[hantei(a)]++; } for(i=0;i<=6;i++){ printf("%d %d\n",i,box[i]); } return 0; }
681 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 21:50:25 ] 他の板でこんな言葉を叩きつけられました プログラマになりたくてなるんじゃないなってしまう者がプログラマ 貧弱一般人がプログラマになろうとしても人工的に淘汰されるのが目に見えている この言葉にはすごく説得力があるような気がします やはり、プログラマになろうとしている僕に、プログラマなんて無理なんでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 21:57:21 ] 向き不向きは有るかもしれないが、やりたい人は誰でもなれる。 向かない人はやりたいと思わない。
683 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:02:29 ] ブロントネタに真剣にならなくても
684 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:28:30 ] >>682 ありがとうございます。 頑張ってみようと思います
685 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:41:26 ] 0b00000001とかしたらサフィックスが無効ですってエラーでるんだけど、何で?
686 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:42:12 ] サフィックスが無効だからです。
687 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 22:44:30 ] プログラマはがんばっちゃう人はダメなんだよ。 プログラマの三つの美徳 怠惰であれ、短気であれ、コーマン大好きであれ 海軍式の努力と根性がまかり通っている職場や そのような空気を当たり前とみなすSE/PGによるプロジェクトは 漏れなくデスマーチになる。
688 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 23:37:25 ] >>685 2進リテラルは無い。 8進数なのにbが入ってて不正じゃないかい?
689 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 01:24:45 ] 0bはたしかgcc独自拡張で存在したと思う。 使わないほうが無難だな。
690 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 10:38:18 ] >>681 他の板ってこれか? プログラミング質問すれ Part1 pc12.2ch.net/test/read.cgi/unix/1127388574/474
691 名前:デフォルトの名無しさん [2009/04/04(土) 12:02:02 ] >>681 プログラマーに限った話じゃない。 全ての職業に言えること。
692 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:32:32 ] まぁ、私はプログラミングなら飯が食えると判断したからプログラマになったけどな。
693 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:42:21 ] すいません。 ポインタを使って、配列のそれぞれの要素に文字列を入れたんですけども、 こういう場合の配列のアドレスって一体どういう規則で並んでいるんでしょうか? #include <stdio.h> int main() { char test[] = "1234"; char *words[] = {"one","two","three","four"}; printf("%p %p %p %p\n",test[0],test[1],test[2],test[3]); printf("%x %x %x %x\n",words[0],words[1],words[2],words[3]); }
694 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:45:41 ] 雑魚ぷろぐらまあは手配師(人材派遣会社)に喰わせてやる(=喰われてやる)のが仕事だかんなあ
695 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:51:41 ] >>693 %xではなく、%pを使うべきじゃないだろか。 で、質問は"one", "two", "three", "four"がどう配置されているかってこと? だとしたら答えは「コンパイラのご機嫌次第」かな。 大抵は、その順番で8バイト境界に並べられるような気がするけど。
696 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 13:58:50 ] wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
697 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:06:43 ] FFFF0000 o n e \0 FFFF0004 t w o \0 FFFF0008 t h r e FFFF000C e \0 X X FFFF0010 f o u r FFFF0014 \0 X X X ※ Xに何が入るか分からない words[0] = (char*)FFFF0000 words[1] = (char*)FFFF0004 words[2] = (char*)FFFF0008 words[3] = (char*)FFFF0010 こんなイメージ
698 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:12:56 ] >>695 なるほど。ありがとうございます。 >>697 ありがとうございます。
699 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:12:59 ] そのコードの前にconst char * foo = "one and two";なんてコードがあったら面白いことになりそうだ。
700 名前:デフォルトの名無しさん [2009/04/04(土) 14:20:39 ] VC++2008EE使用 これでエラーが出るんですが、どこが悪いんでしょうか? #include <stdio.h> #include <stdlib.h> #include <string.h> main() { char str[100] ; int num ; gets_s(str) ; num = atoi(str) ; printf("%d",num*2) ; }
701 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:29:28 ] >>700 エラーの対処を人に聞く場合はエラーの詳細を書け たぶん、get_s には2番目のパラメタとして長さが必要ではないかと思うけど
702 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:35:20 ] gets_s(str, sizeof(str)); だろうね mainの最後にreturn 0;も忘れずに
703 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:37:13 ] なあに、この程度のソースならエスパーでなくとも どんなエラーか想像がつくってもんさ
704 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 14:57:29 ] >>701-703 ありがとうございます。 コンパイル通りました。
705 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 15:41:42 ] >>704 C/C++はコンパイル通っただけじゃまっっっっったく安心できない言語だから気をつけな。 むしろコンパイル通らない内が楽だよ。(コンパイラがミスを見つけてくれるから) コンパイル通ってからのデバッグが大変なんだよねぇ。
706 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 16:38:04 ] それって言語として問題あるんじゃない?
707 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 16:50:40 ] アホは黙ってていいよ
708 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 16:51:37 ] >>706 何を今更。 そんな欠陥があっても、便利なとこがあることに変わりはないから使うというだけのこと。
709 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 17:20:12 ] インタプリタ言語なんてすべて実行時エラーだから もっと恐ろしいことに。
710 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:52:37 ] >>705 が言ってる事(>コンパイル通ってからのデバッグが大変なんだよねぇ。)は 別に言語の欠陥じゃないだろ。 プログラムを作る →期待通りに動作していない →何がいけないんだーー? ってなるのはどの言語でも一緒だろ。
711 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:55:30 ] ロジックエラーってやつだな。
712 名前:710 mailto:sage [2009/04/04(土) 19:07:42 ] >>711 俺の頭のエラーってことだな。ホント質わるい。
713 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 19:12:44 ] 誰も頭の話なんてしてないが。。。
714 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 19:23:10 ] 初心者が読むc++のお勧め教えてください お願いします。
715 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 19:34:48 ] >>714 入門者かな?これからC++始めたいって人? 入門者ならエクスメディアの『ビジュアルラーニングC++』って本が個人的なオススメだったけど、会社が倒産した。
716 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 21:51:20 ] >>715 ありがとうございます
717 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 21:53:53 ] コロッとだまされちゃうんだな。
718 名前:715 mailto:sage [2009/04/04(土) 22:26:09 ] >>717 失敬な
719 名前:デフォルトの名無しさん [2009/04/05(日) 00:27:14 ] すんません。知り合いのフリーのPGがVBやVCのアカデミック版使って 作ったソフトを売ってるんだが、ソフト自体は差は無いのですか? やめたほうがいいんじゃって言っても「ばれねぇ」の一点張り。 実際どうなの?
720 名前:デフォルトの名無しさん [2009/04/05(日) 00:30:31 ] 何か問題あるの?
721 名前:デフォルトの名無しさん [2009/04/05(日) 00:37:52 ] アカデミック版で作ったソフトって売っていいの?
722 名前:デフォルトの名無しさん [2009/04/05(日) 00:38:20 ] 売っちゃいけないの?
723 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:39:42 ] ライセンス読まないの?
724 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:41:13 ] >>719 ライセンスキーの情報が埋め込まれてるから ばれる可能性はある アカデミックとかImagineCupのは商用利用負荷だよ Expressはできるけど
725 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:43:20 ] いやアカデミックは商用利用可能だよ
726 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:53:16 ] >>725 ほんとだ、ごめん アカデミックは大丈夫ですね
727 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 00:59:16 ] テンプレートの明示的特殊化の際に「整数型全部」「浮動小数点型全部」といったことをしたいんですが、いい方法はありませんでしょうか。 template<typename T> class Hoge { void f() {} } template<t> class Hoge<整数>::f { void f() {整数専用処理}; } みたいな感じで。
728 名前:デフォルトの名無しさん [2009/04/05(日) 01:00:39 ] じゃあ、学生のときに買ったアカデミックで作ったソフトは売っても全く問題ないわけね
729 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 01:00:49 ] もうひとつ。 テンプレートの明示的特殊化はヘッダファイルに書いておいてもいいものなのでしょうか。
730 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 01:28:00 ] >>727 boost::enable_ifを使うしか無いと思うよ。 letsboost::enable_if www.kmonos.net/alang/boost/classes/enable_if.html
731 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 01:38:48 ] >>730 ありがとうございました。boostの使用も考えてみます。 テンプレートの明示的特殊化を複数個所で使用する場合に、 実体を置くべき場所の解決がうまくできない問題は相変わらず…… externを使えば?とも思いましたが、BCCでもVCでも解決できませんでした。
732 名前:730 mailto:sage [2009/04/05(日) 01:51:31 ] >>731 まあ正直俺だったらboost::enable_ifじゃなくて、 適当なprivateインライン関数テンプレートfoo_temp()を1つ別個に用意しておいて、 int, short, unsigned long, etc... を全部考え得る限り特殊化し、それぞれから foo_temp<int>, foo_temp<short>とかを呼び出すように定義しちゃうかもしれない。
733 名前:730 mailto:sage [2009/04/05(日) 01:54:10 ] >>731 >>テンプレートの明示的特殊化を複数個所で使用する場合 そもそも明示的特殊化って何? ふつーに特殊化だよね? あと、メンバ関数テンプレートの話だよね? 実体をどこに書いてる? 特殊化してなければちゃんとコンパイル→リンクまで行くの?
734 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 02:19:10 ] >>733 「明示的特殊化」はIBM XL C/C++ ランゲージ・リファレンスの言葉に従っています。 中身は普通の特殊化でメンバ関数です。 やりたいことはクラステンプレート内部のメンバ関数のみの特殊化です。 (クラス内部のテンプレート関数の特殊化を指す名前はあるのでしょうか?) 現在は hoge.h hoge.cpp a.cpp b.cpp があるとして、 // hoge.h template<typename T> class Hoge { void f() {} } // template<> class Hoge<int>::f() { int専用処理; } // cppでの記述を消しても多重定義、NG // template<> class Hoge<int>::f(); // VCとBCCではじかれる。externを書いても同じ。 // hoge.cpp template<> class Hoge<int>::f { void f() {int専用処理}; } // a.cppとb.cpp Hoge<int> hoge; hoge.f(); とおいて試してみています。
735 名前:デフォルトの名無しさん [2009/04/05(日) 02:56:13 ] >>728 学生じゃなくなってもアカデミックを使い続けて良いの?
736 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 03:40:33 ] 課題やる→コンパイルエラー→シコシコ直す→コンパイル通る→やったー!これで終わりだー →./a.out→文字がうじゃうじゃうじゃうじゃうじゃうじゃうじゃうじゃorセグメンテーション・エラー云々 →( ゚д゚) →( ゚д) そうだね、今このときだね
737 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 03:41:41 ] おれはなんて遅レスをしていたんだ・・・・・・ 恥ずかしい・・・・・・っ、でも、
738 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 04:36:19 ] >// hoge.cpp >template<> class Hoge<int>::f { void f() {int専用処理}; } template どうこう以前に、すでに書き方間違ってるじゃろ、それ。 あと、特化したのはクラスであってメンバ関数じゃないんだから 特化のための宣言である template<> もいらない。
739 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 04:56:41 ] >>738 失礼しました。その部分はclass→voidですね。classだとそもそもコンパイルが通らないはず。 というわけで試してみました。 // hoge.h template<typename T> class Hoge { void f() {} } // なにも書かない→gcc3.4:リンカで多重定義 VC9:通るがcppでの実装は無視される BCC:cppのコンパイル時に多重定義扱い // void Hoge<int>::f; //gcc3.4→too few template-parameter-list VC9:通るがcppでの実相は無視される BCC5.5:template<>宣言が必要 // hoge.cpp void Hoge<int>::f { void f() {int専用処理}; } といった感じです。
740 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 05:11:32 ] template<> class Hoge<int>::f(); テンプレートクラスの特化宣言をなぜ落とすw テンプレートクラスの特化はちゃんと宣言する必要がある。 それが目的なんだから。 特化宣言がいらないのはそのクラスのメンバ関数。 なぜなら特化したのはクラスであってメンバ関数じゃないから。 仕様書を読んだほうがいいかも。
741 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 05:50:37 ] >>740 メンバが多めのテンプレートクラスの一つの関数だけを再定義、といった場合に、 教科書通りにテンプレートクラスの特化で全メンバを再定義すればいけるというのは分かるのですが、 特化したテンプレートクラスのある特定の関数だけリンカで特殊な定義に差し替えられないかと考えたのですが、 冷静に考えるとそれをコンパイラに知らせるのはかなり酷な作業の気がしてきたので、 教科書通りに全部再定義してみます。 一足飛びに変な質問をしようとして、エスパーさせてしまってすみません。
742 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 07:10:08 ] 4桁の2進数があったとします。0001←2進数表記 それを0001→0010→0100→1000→0001→…という感じでずっと1を移動させたいん ですがifやforなど条件分岐を使わず出来るだけ軽い処理でいい方法ありませんか? この関数が呼び出されるたびに上記のように1を移動させていくって感じです。 <<=1でシフトさせていけば軽いしいいかなと思ったんですがそれだと1000を処理したとき 0000になってしまいます。やっぱりif入れて8より大きくなったら1にとかしかない?
743 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 07:14:21 ] (x << 1 ) & (x >> 3)
744 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 10:36:51 ] 初心者はポインタより多重ループのほうが躓きやすくない?
745 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 11:10:02 ] ポインタや多重ループより「躓き」の読み方の方が難しい
746 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:19:05 ] >>743 m9(^Д^)
747 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 13:28:50 ] x = ((x & 7) << 1) & (x >> 3)
748 名前:デフォルトの名無しさん [2009/04/05(日) 14:00:12 ] x = 0; x = (x << 1) & 16 || x = 1;
749 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:18:49 ] >>748 右辺値への代入?
750 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:40:38 ] || は副作用完了店だお
751 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:42:06 ] 15じゃない?
752 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:54:35 ] #include <stdio.h> void main() { int i, x = 1; for (i = 0; i < 10; i++) { printf("%d:%X ", i, x); x = ((x & 7) << 1) | (x >> 3); } } 0:1 1:2 2:4 3:8 4:1 5:2 6:4 7:8 8:1 9:2
753 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:57:43 ] x = ((x + x) >> (x & 4))& 15
754 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:02:39 ] >>752 7とか中途半端だなどうせなら非環境依存にしとけよ
755 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:17:34 ] >>745 躓きの「書き」を問われたら俺失点するわ。
756 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:25:45 ] 簡単な文字だから今覚えてしまえば、死ぬまで忘れないだろ
757 名前:デフォルトの名無しさん [2009/04/05(日) 15:29:31 ] >>751 15だ。ごめん。
758 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:42:21 ] 「躓き」覚えた 3日も経てば忘れるだろうけど
759 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 16:30:25 ] そもそも何で足偏に質なんだ? どの辺がつまづきなんだろう・・・。
760 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 16:32:17 ] x=^((x<<1)+1);
761 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 16:58:46 ] x = 1<<(((S++)%4)+1) ??
762 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 13:27:16 ] 図書館でC++の本探そうかと考えてるんですが・・ 図書館にあると思いますか?(・∀・)
763 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 13:32:26 ] うちの近所の図書館にはある
764 名前: ◆xb8eIST5.k mailto:sage [2009/04/06(月) 13:50:42 ] そうですか!また行こうと思います(・∀・) ところで、誰かモリタポ別けてもらえないでしょうか(・∀・ ) ◆xb8eIST5.k
765 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 14:20:47 ] >>764 お前、厨房か?クレクレやろうは逝ってよしだ、ゴルァ
766 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 14:39:11 ] 小学校の図書館とか、児童施設の図書コーナーとか、特定の分野に特化した図書館とかじゃなきゃ 数冊はあるんでねーの?
767 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 14:58:49 ] >>764 住所晒したら着払いで送ってやんよ
768 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 15:28:31 ] >>767 着払いでモリタポを送る!?(・∀・)
769 名前:デフォルトの名無しさん [2009/04/06(月) 18:42:31 ] mogera.jp/gameplay?gid=gm0000000129 そんなことより exe が使用しているdllを調べるソフトってなんだったっけ?
770 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 18:43:45 ] Dependency Walker(Depends.exe)のことか
771 名前:デフォルトの名無しさん [2009/04/06(月) 18:53:32 ] Linuxでデバイスとのやりとり(シリアル通信)をラップするような ライブラリを提供したいです。C++。 ユーザにはどんなインターフェイスで公開するとよいですか? 受信スレッドでデバイスから読んで 受信バッファにデータ積んで、コールバック登録されたメソッドを 呼び出してあげる。でよいですか? ユーザアプリ側のコールバックルーチンが別スレッドで走るのが 気持ち悪い気がするのですが。
772 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 19:09:29 ] Windowsでプロセス間通信)をラップするような ライブラリを提供したいです。C++。 ユーザにはどんなインターフェイスで公開するとよいですか? 受信スレッドでプロセスから読んで 受信バッファにデータ積んで、コールバック登録されたメソッドを 呼び出してあげる。でよいですか? ユーザアプリ側のコールバックルーチンが別スレッドで走るのが 気持ち悪い気がするのですが。
773 名前:771 [2009/04/06(月) 19:42:26 ] >>772 Windowsのプロセス間通信なら、 共有メモリと、Windows Messageを使うと、ユーザアプリに求めるのは メッセージポンプだけになるし、ほぼ標準的なつくりになる気がするので、 好みなんですが。 Linuxではどうですか?
774 名前:771 [2009/04/06(月) 19:45:43 ] Named pipeは、よく使われますか? ユーザアプリは、selectで待つようになるんですよね。
775 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 10:59:32 ] 自作ソフトで使うマクロの文法を、拡張しようと思い、 lexやらyaccやらbisonやら調べ始めたのですが・・・ 難しい・・・ 例えば呼び出し前に新たなトークンを追加したり、関数定義みたいなことが 出来るようにするサンプルを探しているのですが、見つかりません。 ・自作ソフトはプラグインで拡張可能になっていて、マクロのプラグイン名 を自前で解析していますが、区切り文字の検出とか括弧の扱いとか、自力 では限界なので・・・プラグイン名を追加トークンにして、ライブラリお 任せ一発という形に出来ればと思っています。 ・マクロの中で関数マクロの定義が出来るようにといいのですが、 hoge(a, b, c) = { age; sage(a, b); uge(c); } hoge(1, 2, 3); こういうのを実現しているサンプルなどありましたら教えてください。
776 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 11:43:07 ] >>775 こっちのスレのほうが適当かな。 pc12.2ch.net/test/read.cgi/tech/1233143342/
777 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 12:56:10 ] >>776 ありがとうございます。行ってきます。
778 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:22:03 ] 初歩的な質問で申し訳ないんですが みなさんは童貞でしょうか?
779 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:29:35 ] どっちか一方しか居ないとでも思ってんだろうか。
780 名前:デフォルトの名無しさん [2009/04/07(火) 13:53:49 ] フォームの中にサブフォーム?を作ってメニューのボタンを押すたびにそのサブフォームの内容を変えるようにしたいのですが どうすればよろしいのでしょうか?
781 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:54:39 ] いきなりフォームとか言われても環境がわからんわ どのフォーム?
782 名前:デフォルトの名無しさん [2009/04/07(火) 14:02:03 ] えっとWindowsフォームでしょうか・・VisualC++使っています
783 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 14:03:59 ] >いきなりフォーム ヴビ厨特有の現象です。 >サブフォーム? このオレ用語も。 …ほらね、俺に ESP 能力なんかないでしょ。 >>780 C++/CLI なら TabControl でも使っとけ。
784 名前:デフォルトの名無しさん [2009/04/07(火) 14:17:05 ] すみませんでした。 ありがとうございました。
785 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 19:30:35 ] >>779 どちらでもない、あるいは両方ってあり得るの?
786 名前:デフォルトの名無しさん [2009/04/07(火) 19:40:47 ] >>785 「みなさんは」という集合なんだから両方は余裕であるだろ
787 名前:デフォルトの名無しさん [2009/04/07(火) 20:29:33 ] >>786 はい、残念。 「童貞」は個体の属性だから、>>778 は集合に対する問いかけじゃない。 集合の元に対する問いかけだ。 日本語勉強してから出直しな。
788 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 20:32:21 ] >>787 数学できるのかっこいー ってお世辞言ってもらえるとでも思っているのかな? ・・・恥さらしてないで出直しな。
789 名前:デフォルトの名無しさん [2009/04/07(火) 21:08:12 ] できて当たり前のことをほめられてもうれしくないだろ 788が恥さらしだということだけは確実に真理だ
790 名前:788 mailto:sage [2009/04/07(火) 21:54:35 ] >>789 >「確実に真理だ」 ・・・顔 真っ赤にしちゃってかわいー
791 名前:デフォルトの名無しさん [2009/04/07(火) 22:01:26 ] >>790 定番のレスしか返せないってほんとかっわいいいいwwwwww
792 名前:790 mailto:sage [2009/04/07(火) 22:12:06 ] >>791 あきらめろ。 このありさまではもう、誰が見てもお前が○け犬
793 名前:デフォルトの名無しさん [2009/04/07(火) 22:26:27 ] >>788 数学?
794 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 00:38:22 ] >>787 「童貞」は数学用語じゃないから勝手に元と認識してはいけません
795 名前:デフォルトの名無しさん [2009/04/08(水) 00:39:57 ] 集合とか言い出したのは>>786 なのだが。
796 名前:デフォルトの名無しさん [2009/04/08(水) 01:02:41 ] >>787 童貞乙
797 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 07:03:13 ] 童貞が煽りになると思う時点でガキすぎるw
798 名前:デフォルトの名無しさん [2009/04/08(水) 07:07:20 ] 本当に童貞の奴が必死ですw
799 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 09:32:35 ] >>787 >「童貞」は個体の属性 を不特定多数に対して問いかける間抜けさに気付けない頭の悪さを棚に上げて >日本語勉強してから出直しな。 てのが、なんだかカッコイイですね。
800 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 11:16:42 ] 元レスの奴と違う人間に煽られて反応したお前が負け犬だwwwww
801 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 13:54:40 ] >>800 違うか同じかは知らんが (よく解るなお前)、そんなことより その「お前」ってのは誰?
802 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 13:55:58 ] オレオレ
803 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 14:04:13 ] いーや俺。
804 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 14:18:26 ] うんお前
805 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:11:57 ] 初心者なんですが、質問させてください。 まず、BCCの無料版をDLして、メモ帳のソースをcファイルで保存しました。 それからコマンドプロンプトを使って実行しましたが、次の文章が出てexeファイルができませんでした。 'bcc32'は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして 認識されていません。 そして、ソースは以下のものです。 main() { }
806 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:15:41 ] >>805 BCCへのパス通したか? ttp://pocketstudio.jp/win/xp/path.html
807 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:16:09 ] パスが通ってない。通せ
808 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:21:52 ] パス通せよ
809 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:26:41 ] ttp://www.cppdrive.jp/bcc/install/ ここで勉強しる
810 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 15:39:14 ] >>806-809 やってませんでした。ありがとうございます。やってみます。
811 名前:デフォルトの名無しさん [2009/04/08(水) 17:57:14 ] select関数の第一引数について TCP/IPのソケット通信処理を作成していて、select関数を使用するつもりです。 select関数の第一引数には「集合にある記述子の中の最大値に1を足したもの」 を設定するということですが、具体的に何を設定すればよいか分かりません。 以下の場合、第一引数"nSocket"には何を設定すればよいのか教えて下さい。 FD_ZERO(&rd); FD_SET(acceptSocket1, &rd); FD_SET(acceptSocket2, &rd); select(nSocket, &rd, NULL, NULL, 10); よろしくお願いします。
812 名前:デフォルトの名無しさん [2009/04/08(水) 18:03:41 ] select()に登録するソケット(=socket()の戻り値)の中で一番大きい奴に+1した値 socket()の戻り値はint型だから比較したり+1したりできるでしょ?
813 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 18:08:20 ] >>812 そういう意味ですか。 ありがとうございました。
814 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 18:16:27 ] ttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200704/07040016.txt nfds 引数は Windows Socket では未使用 (無視される) Windowsのソケットはいろいろ癖がある
815 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:17:45 ] クラスの継承時にコンストラクタも継承するというか、 親クラスに定義されているコンストラクタをそのまま使う方法というのは、 再定義してデフォルト初期化子に渡す以外ないのでしょうか。
816 名前:デフォルトの名無しさん [2009/04/08(水) 23:32:54 ] class A { int m_val; public: A(int a, int b){ m_val = a+b; } } class B : A {} B(1, 2); みたいにしたいってこと?再定義しかないね。
817 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 23:41:25 ] >>816 了解しました テンプレートで class A { int m_val; public: A(int a, int b){ m_val = a+b; } } template<class X> class B : public A { ... } のようにして、定型の追加機能を持たせるテンプレートを作ろうとしたのですが、 どうしてもそこで引っかかってしまいまして。
818 名前:デフォルトの名無しさん [2009/04/09(木) 02:04:45 ] とりあえず 童貞乙 であります!