- 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/
- 610 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:49:49 ]
- ,.、 .,r.、
,! ヽ ,:' ゙;. ! ゙, | } ゙; i_i ,/ ,r' `ヽ、 | ,.、 ,r.、 ,i" _, ._ ゙; うーん・・・・ | ,! ヽ,:' ゙;. !. ・ ・ ,! | ! ,! } ヽ、 x _,r'' 僕には何も言えない |二゙; i二二二(⌒ノ"''`''''''''''''"´`ヽ. | ,r' `ヽ、 ´ヾ、 l l ,i" _, _ ゙; ! i___| !. ・ ・,! | t,ノ |ゝ_ x _::' !、、、、、、、、、、! |,/"`''''''''''''''"´';, | | | (,;! !) | | | |゙''::r--、::--;r' |____|_____| |―゙'ー-‐゙ー-゙'―┐ (,,,__(,,,____)
- 611 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 23:14:21 ]
- >>600のせいでスレのレベルが落ちたな
- 612 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 23:16:48 ]
- >>611
もともと低かったろ。
- 613 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 07:46:43 ]
- 普通の頭であれば検索だけで理解できるからな
検索先が信じられずに2ちゃんのレスのほうを信じるのもどうかと思うし
- 614 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 08:14:01 ]
- ここは検索のスレではありません。
検索に関する会話はご遠慮下さい。
- 615 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:57:04 ]
- staticをつけると内部的な名前が変わる
- 616 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 13:13:50 ]
- かどうかは知ったこっちゃないわな。
- 617 名前:デフォルトの名無しさん [2009/04/01(水) 16:33:56 ]
- バイナリデータとテキストデータを結合してchar型配列に格納したいです。
例えば char STR[256] = {0}; unsigned long Value_A = 0x01234567; unsigned long Value_B = 0x89ABCDEF; char Str_A[] = "sample1"; char Str_B[] = "SAMPLE2"; というデータがあったとして、配列STRに以下のようにデータを格納するコードを教えて下さい。 < binary > < text > 0x01234567 0x89ABCDEF sample1|SAMPLE2 ちなみに、バイナリデータはテキストにはせず、BigEndianで格納したいです。 あとテキストには'|'文字を入れて区切りたいです。 よろしくお願いします。
- 618 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 17:24:58 ]
- #include <ctype.h>
#include <stdio.h> #define swap(ul) ((ul)<<24)|(((ul)&0xFF00)<<8)|(((ul)&0xFF0000)>>8)|((ul)>>24) void main() { unsigned char STR[256] = {0}; unsigned long Value_A = 0x01234567; unsigned long Value_B = 0x89ABCDEF; char Str_A[] = "sample1"; char Str_B[] = "SAMPLE2"; unsigned long ul; int i; ul = swap(Value_A); memcpy(STR, &ul, 4); ul = swap(Value_B); memcpy(STR + 4, &ul, 4); strcpy(STR + 8, Str_A); strcat(STR + 8, "|"); strcat(STR + 8, Str_B); for (i = 0; i < 8 || STR[i]; i++) { printf("%d:%02X[%c] ", i, STR[i], isprint(STR[i]) ? STR[i] : '.'); } } 0:01[.] 1:23[#] 2:45[E] 3:67[g] 4:89[.] 5:AB[.] 6:CD[.] 7:EF[.] 8:73[s] 9:61[a] 10:6D[m] 11:70[p] 12:6C[l] 13:65[e] 14:31[1] 15:7C[|] 16:53[S] 17:41[A] 18:4D[M] 19:50[P] 20:4C[L] 21:45[E] 22:32[2]
- 619 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 17:39:06 ]
- char * push_STR(char* d,char* e,char* s,int ln){
int i = 0; while(d < e && i < ln){*d++ = *s++; ++i} return d; } char *p = STR, *end = STR + sizeof(STR); if(p=push_STR(p,end,&Value_A,sizeof(Value_A)) >= e) abort(); if(p=push_STR(p,end,&Value_B,sizeof(Value_B)) >= e) abort(); if(p=push_STR(p,end,&Str_A,sizeof(Str_A)) >= e) abort(); if(p=push_STR(p,end,&Str_B,sizeof(Str_B)) >= e) abort();
- 620 名前:デフォルトの名無しさん [2009/04/01(水) 17:50:34 ]
- もしかしたら上の方のコードが途中かもしれませんが
よろしくおねがいします。 C言語の入門ページの動的配列などの部分を読んで mallocやreallocでメモリの再確保などができる事はわかりました。 しかし、結果的にははじめに変数に入力をうけてその結果にあわせて 配列の量を変更する事はできません。 例えば文字列の入力を受け付けるプログラムでたとえば書籍の タイトルを受け取る処理なのでせいぜいこのくらいだろうと見積もって 配列の大きさをとっていたとしてユーザーが予定以上の 非常に長いタイトルの書籍を入力したりしても残りの部分は切り捨てられるように なってしまうと思います。これを回避する方法は無いでしょうか?
- 621 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 17:57:18 ]
- ない、と言ってしまうのは簡単だが
もし上限がなかったらどうなるかを考えてみよう
- 622 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:02:15 ]
- 1文字ずつ受け取って、それらをリンクリストでつないでいくというのはどうだろう?
メモリが許す限りどんどん大きくできるぞ。しごいね!
- 623 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:02:34 ]
- Stringクラスを使う
- 624 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:04:42 ]
- cstringでぐぐったら紐なしエロパンツサイトがヒットした
- 625 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:05:29 ]
- キー入力を都度処理してグルグル回せば出来ない事はないけど
パイプ通しての洪水テキストや 例えばカナ漢字変換が驚くほど丈夫で数メガバイトの変換済文字列をイッキに送り込んでくるような状況 には対処しきれんよな
- 626 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:15:49 ]
- ありがとう御座います。
前もって入力を受け付けるときに文字数宣言が有る事を書いておきたいと思います。
- 627 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:24:43 ]
- そこでstream IOですよ
- 628 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:36:41 ]
- 結局メモリ+HDD(外部記憶装置)以上のデータは扱えないので扱えるデータには制限がある
- 629 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:39:55 ]
- ネットがあるじゃないか
- 630 名前:デフォルトの名無しさん [2009/04/01(水) 19:51:28 ]
- もうデバッグに一日以上費やしても理由がわからなかったので、ここで質問させてもらいます。
本当に理由が解明できなくてマジで困ってます…。 for (i=0; i < (Num_Points-1); i++) { 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); } for (i=0; i < (Num_Points-1); i++) { 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); } コンパイルエラーは出ないのですが、実行した際に途中で止まってしまいます。 何回か試したところ、上のループか下のループどちらか一方しか書いてない時は動きます。
- 631 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:58:34 ]
- 一日以上費やしたってデバッガ使った?
- 632 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:15:36 ]
- どっか別のところでスタック破壊してんじゃねーの?
- 633 名前:デフォルトの名無しさん [2009/04/01(水) 20:15:52 ]
- 使いましたが、デバッガではよくわかりませんでした。
どちらのループも単体でしかコードに存在しない時は動くので、 printfで結果表示した場合、ちゃんと計算結果が出ます。 しかし、両方ともコードに書くと、なぜか止まってしまうんです。
- 634 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:46:09 ]
- >>633
for文の中でiを表示したらどこまで進むの?
- 635 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:53:29 ]
- 本当に>>630の通りに書いてあるならループにする意味がねーよw
- 636 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 21:08:33 ]
- >>634
どちらかのループ単体のみの実行なら、Num_Points-2まで進んでいます。 なので、配列の範囲外から数を呼び出してるということはないみたいです。
- 637 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 21:15:24 ]
- >>635
エイプリル・フールは午前中までだってのにな
- 638 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:09:54 ]
- ソースアップすれば調べてもいいよ
- 639 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 22:51:04 ]
- >>635
distance, a0, a1 がクラスのインスタンスで、 = がオーバーロードされてるかもよ。
- 640 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 23:58:38 ]
- 本人かデバッガ使って解らないものを、他人が不定な変数の多い
部分的ソースだけ見せられて判るとは思えない。
- 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が言ってる事(>コンパイル通ってからのデバッグが大変なんだよねぇ。)は
別に言語の欠陥じゃないだろ。 プログラムを作る →期待通りに動作していない →何がいけないんだーー? ってなるのはどの言語でも一緒だろ。
|

|