- 1 名前:処理系定義の名無しさん mailto:sage [2008/07/09(水) 11:00:48 ]
- 言語の入門者向け解説スレです。
教えて欲しいのではなく宿題を丸投げしたいだけなら宿題スレへ行ってください。 C/C++の宿題を片付けます 110代目 pc11.2ch.net/test/read.cgi/tech/1213796455/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 31 pc11.2ch.net/test/read.cgi/tech/1214569903/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
- 29 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:17:07 ]
- >>27
それだと常に削除の対象です・・・ ChkSwitchの戻り値が-1と-2は削除それ以外の場合、リストはそのままなんです。
- 30 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:18:28 ]
- つーか、下手に技巧かまして初期に配列確保して動かないコード書くぐらいなら
単品 malloc() を n回呼び出し+途中の追加も単品 malloc() のほうがマシじゃね?
- 31 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:21:29 ]
- >>29
switch(ChkSwitch[wfp->Hoge06](i,wfp)) { case -1: wfp2 = wfp->nextdata; HogeDel(i,wfp); wfp = wfp2; break; case -2: wfp2 = wfp->nextdata; HogeDel(i,wfp); free(wfp); wfp = wfp2; break; default: break; }
- 32 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:23:59 ]
- 宿題スレだな
- 33 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:25:34 ]
- ついでにこっちも直しとく
// // 領域確保部分抜粋 // int size = sizeof(HOGE_HED) + sizeof(HOGEHOGE) * ret; fpHOGE = malloc(size); if (fpHOGE == NULL ) return -18; memset(fpHOGE,0x00,size); fpHOGE->HOGE_COUNT = ret; fpHOGEDATA = (HOGEHOGE *)(fpHOGE+1);
- 34 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:29:23 ]
- >>33
>fpHOGEDATA = (HOGEHOGE *)(fpHOGE+1); あーなるほど。こうすればいいんですね。 これでchar data[2];が不要になりますね。
- 35 名前:924 mailto:sage [2008/07/09(水) 14:35:13 ]
- >>30
まー近い挙動のものにシューティングゲームなんかがありますけど ゲームを構成する素材(背景や敵本体)は固定になりますが、自機や敵が吐き出す弾 は事前に・・というわけにはいきませんよね? それでこういった2種類の領域の確保の仕方になってます。 >>31 ありがとうございます。 これでうまくいきました。 最近大改造してようやく今のスタイルにこぎつけたので混乱してました。
- 36 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 14:53:37 ]
- >>35
は? 全て固定にしろと言っているのではなく、 全て動的にしといて たまたま固定分は先にやっちゃったね って構造のことを指しているのだが? 全て敵が吐き出す弾扱い。 背景や敵本体は初期化の時に1個1個追加してくだけじゃん
- 37 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:00:19 ]
- まーいいじゃないですか
あの変なポインタ操作みてるとヘッダ+データになったバイナリファイルをまとめて 読み込んだりしてるんでしょ? >>31で動いたってことは領域の確保の問題じゃなく単にリスト操作の間違いだったんだし。
- 38 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:04:54 ]
- >>37
リストをバイナリファイル保存するのは… テラオソロシス ちゃんと繋ぎ替え作業しないといけないしね。 そこだけ違うコード書くってことは、そこで間違う可能性もあるわけだし… >>31 の修正で動く >>31 のせずに、構造体のメンバ入れ替えで挙動変化する のは、どういう副作用かなぁ free後次の alloc する何か次第なんだろうけど…
- 39 名前:デフォルトの名無しさん [2008/07/09(水) 15:21:54 ]
- 学校の課題なんですが、どうやればいいかいまいちわかりません。
なので、全体の流れだけでもいいので教えてくれませんか? 以下、課題の内容です。 200x200ピクセルの画像の中に三角形、四角形、円、楕 円を用いて絵を作成しよう。その際、関数を用いて作成し ましょう。 図形の作成、移動、回転などには関数を用いること。 効率よく関数を使って、絵を作成しましょう。 main関数は画像配列の確保と関数の呼び出しで作成する。 出力ファイル名(art.bmp)
- 40 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:23:17 ]
- 要するにfreeした後の領域を使おうとしてたわけで、
おそらくアロケート情報が入っていた領域先頭付近のメモリの書き換えが発生したんだろう だからポインタを先頭に置いてたらおかしくなった 後ろに配置してたときはたまたま情報が壊れずに残ってたと
- 41 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:26:40 ]
- >>38
別人28号、余談だが俺いま、双方向ツリーデータのべた書き保存してるよ。 元々はテキストで保存読込みしていたが、あまりにも遅いので、いろいろ考えた据え メモリーイメージべた書きにした。もちろんアドレス変換つきで。 数十Mぐらいのデータ読込みに分かかってたのが一瞬で読み込めるようになった。 いや〜あまりの速さに、TPOを考慮しないプログラムもいいなと思った。(チラシの裏
- 42 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:29:42 ]
- そういうことやね
- 43 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:30:30 ]
- >39
1)各画像をビットマップ描画する関数を作る。 このとき、関数の引数で図形の基準座標や大きさ、角度などを指定できるようにする。 指定の方法はいろいろあるが、かなり引数が多くなることもある。 その場合には必要な変数を構造体に詰めこんでそのポインタを渡すと楽。 対象のビットマップは、引数で渡してもいいし、どうせ1個しか書かないなら、 グローバル変数で確保してもいいだろう。 2)mainで、1)で作った関数に適当に数値を与えて呼び出し、ビットマップに描画する。 3)作ったビットマップをファイルに書き出す(何かメソッドがあるはず)。
- 44 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:30:53 ]
- >>40ね
- 45 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:31:00 ]
- >>40
なるほど。 ある意味先頭に持ってきたためにバグが発覚してよかったのかもなw >>41 まあリストを保存するっていったって、保存ルールさえ決めちゃえば 問題ないしな。
- 46 名前:デフォルトの名無しさん [2008/07/09(水) 15:32:28 ]
- char func(char *hoge){
char hoge2[256]; 処理 return *hoge2; } とする関数を定義しました。 main関数で char test[256]; *test= func("文字列"); って書いたんですが、testにゴミしか入りません・・・ 正しいやり方を教えてください
- 47 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:36:00 ]
- char *func(char *test, char *hoge){
char hoge2[256]; 処理 return strcpy(test, hoge2); } main() { char test[256]; func(test, "文字列");
- 48 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:37:28 ]
- int func(const char *hoge1,char *hoge2){
} char test[256]; func("文字列",test); でfuncの中でtestに書き込みできるよ
- 49 名前:39 mailto:sage [2008/07/09(水) 15:37:49 ]
- >>43
ありがとうございます! 関数を作るってところが授業でもよくわかっていないのですが、どんな感じかソースを少し書いてみてくれませんか? 質問ばかりですいません。
- 50 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:40:37 ]
- 宿題スレに行けよ
- 51 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 15:50:52 ]
- >>49
細かい部分は処理系の用意しているグラフィック機能の詳細による たぶん実際にはC++なんだろうから、ビットマップオブジェクトクラスのメソッドを調べて使うこと void square(BITMAP bitmap, POINT *points) { bitmap->pen->color=BLACK; bitmap->pen->move(points[0].x, points[0].y); bitmap->pen->line(points[1].x, points[1].y); bitmap->pen->line(points[2].x, points[2].y); bitmap->pen->line(points[3].x, points[3].y); bitmap->pen->line(points[0].x, points[0].y); } あくまで感じ
- 52 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:02:20 ]
- 引っ越したときは引越し通知くらいほしいよね
- 53 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:08:05 ]
- マルチかと思ったら別人だったようだ
- 54 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:09:20 ]
- < 39 >
======================================== 引っ越しました! 近くにお越しの際は、是非お立ち寄り下さい ======================================== C/C++の宿題を片付けます 112代目 pc11.2ch.net/test/read.cgi/tech/1215439445/260
- 55 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:10:40 ]
- 本とかによく出てるプログラムをそのまま打ち込んでうまくコンパイルしてくれるコンパイラって無いの?
- 56 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:11:46 ]
- それができりゃあプログラマの仕事がなくなるな
- 57 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:19:51 ]
- 換字式暗号について聞きたいんですが、c言語で[a,b,c]を[g,C,f]に変換するようなプログラムってどう作ればいいですか?
ちなみに文字列に規則性はないです。
- 58 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:19:52 ]
- それはタイパーの仕事じゃ?
コンパイルできないといっているコードはコード片だったりしないのかな
- 59 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:20:52 ]
- 微妙に違う内容でマルチすんなw
- 60 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:21:36 ]
- >>57
rand関数で適当にASCIIコードを進める
- 61 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:24:29 ]
- >>55
本と同じ環境、同じコンパイラーならそのまま動く。 しかし、半年や1年で、OSもコンパイラーも仕様さえも変わってしまう時が有る。 一つの変化は数年だが、環境は多くのソフトで成り立つので。どれかがすぐに変わるのはザラ。
- 62 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:27:25 ]
- qあwせdrftgyふじこ
- 63 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:34:29 ]
- 標準関数かAPIに文字列の置き換え関数ってないの?
自分で作ったけどいまいち信用できない(速度的に)
- 64 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:36:52 ]
- >>63
cならそれこそマクロで皮だけ作ったら? #define hogehoge(A,B,C,D) { API_hoge(A,B,C,D) };
- 65 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:37:41 ]
- あーーーーーーすまんぼけてましたorz
文字列置き換えって言われてもどう置き換えるの?
- 66 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:42:28 ]
- 文字列の配列データーを作って、適当に文字列入れて、
文字のコードで配列を引く、これが単純。
- 67 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 16:59:29 ]
- >>57
char *stra = "abcdefghijklmeo....."; char *strb = "gCfEjBm....."; で文字が一致したところで置き換える
- 68 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 17:48:01 ]
- >>67
strb[data - 'a'] の何が不満なの?
- 69 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 17:58:07 ]
- >>65 こんな感じなんだけど非効率かどうか自分にはわからない
//szSrcの中からszKeyを探してszRepで置き換える //置き換えた数を返す int strrpl(char *szSrc, char *szKey, char *szRep) { int nRepTime = 0; size_t nSrcSize = strlen(szSrc); size_t nKeySize = strlen(szKey); size_t nRepSize = strlen(szRep); char *szCpySrc = new char[nSrcSize + 1]; strcpy(szCpySrc, szSrc); *szSrc = 0; char *cp = szCpySrc; char *_cp = szCpySrc; while (cp = strstr(cp, szKey)) { *cp = 0; strcat(szSrc, _cp); strcat(szSrc, szRep); cp += nKeySize; _cp = cp; nRepTime++; } strcat(szSrc, _cp); delete [] szCpySrc; return nRepTime; }
- 70 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 18:34:03 ]
- >>68
文字コードが順番じゃなくても使える ASCII限定でも問題ないんだろうけど
- 71 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 18:38:43 ]
- EBCDIC でやったときは"ABCDE・・・だったなー
- 72 名前:sage [2008/07/09(水) 21:06:35 ]
- 学校の課題でC言語が出てしまったのですが、さっぱり分かりません…
あつかましいかもしれないですが、どなたか教えてください… @「キーボードから10個の数値を入力して、10個の数値の最大値と最小値を表示するコードを 記述せよ」 A「キーボードから数値を入力し、その数が素数か否かを判断するコードを記述せよ」 よろしくお願いします。
- 73 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 21:07:57 ]
- ごめんなさい、1を見てませんでした。宿題スレに行ってきます。
- 74 名前:デフォルトの名無しさん [2008/07/09(水) 22:15:00 ]
- リスト構造がよく分かりません。
構造体は理解できるのですが、なぜそれが繋がっていくのか(繋げれるのか)がどうにも・・・。 抽象的な質問ですみませんが、どなたかお願いします。 例となるようなソースなどもあると助かります。
- 75 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:16:41 ]
- >>74
ポインターはわかります?
- 76 名前:74 mailto:sage [2008/07/09(水) 22:21:33 ]
- >>75
大まかには理解している、と思うんですが・・・。 intやcharなどの関数のメモリの先頭の場所で、 その関数を指すのと、その関数の場所を指すのは同じこと。 というくらいの理解なんですが・・・。
- 77 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:26:45 ]
- >>76
構造体の中に自分自身と同じ構造体をさせるポインターを持たせてあって それでつないでるのがリストです。
- 78 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:30:49 ]
- 宝箱の中に
「宝」と「次の宝箱の場所」が入ってるようなもんだ
- 79 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:31:44 ]
- www9.plala.or.jp/sgwr-t/c/sec15-5.html
ここなんてどうかな?
- 80 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:44:29 ]
- >>77
どう繋ぐかが分からず・・・。 >>78 その「次の宝の場所」は、どういう処理になっているのでしょうか? その「次」が無数に増える場合、最初から指定しておくのは不可能だと思うんですが、 どうやってその「次の場所」を指定すれば良いのか分からないのです。 >>79 struct list { char name[20]; struct list *next; /* 自己参照構造体 */ }; で、構造体のポインタ *nextを作成しているのは分かるんです。 でも、それがどういう働きをして「次の構造体」に行っているのかがよく分からず……。
- 81 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:51:14 ]
- たとえばこんな感じ
struct list { char name[20]; struct list *next; /* 自己参照構造体 */ }; int main() { list *listptr; listptr = (list *)malloc(sizeof(list); listptr->next = (list *)malloc(sizeof(list); listptr->next-next = NULL; return 0; }
- 82 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:52:05 ]
- 一部ミス
struct list { char name[20]; struct list *next; /* 自己参照構造体 */ }; int main() { list *listptr; listptr = (list *)malloc(sizeof(list); listptr->next = (list *)malloc(sizeof(list); listptr->next->next = NULL; return 0; }
- 83 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:53:07 ]
- あふーんorz
またまたミス。ヘッダとかは自分でいれてね。 struct list { char name[20]; struct list *next; /* 自己参照構造体 */ }; int main() { list *listptr; listptr = (list *)malloc(sizeof(list)); listptr->next = (list *)malloc(sizeof(list)); listptr->next->next = NULL; return 0; }
- 84 名前:74 mailto:sage [2008/07/09(水) 23:05:58 ]
- >>83
struct list { char name[20]; struct list *next; /* 自己参照構造体 */ }; int main() { list *listptr; listptr = (list *)malloc(sizeof(list)); /* mallocで確保したメモリの場所をlist型のlistptrに代入 */ listptr->next = (list *)malloc(sizeof(list)); /* listprtの中の*nextにmallocで確保したメモリの場所を代入 */ listptr->next->next = NULL; /* listprtの中の*nextで指定されたlistptrの中の*nextにNULLを代入*/ return 0; } って理解でいいんでしょうか?
- 85 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:11:21 ]
- >>84
です。 リストを管理するポインターは例のような単純なリストでも2つは欲しいですかねえ・・・ listptrはリストをつないで置くだけのポインタ。 リストの入り口ですかね。 で、リストの最後を判別するために最後の構造体のnextにはNULLを入れます。 これはリストの決まりごとみたいな感じですね。
- 86 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:14:22 ]
- struct list {
char name[20]; struct list *next; /* 自己参照構造体 */ }; int main() { list *listptr; //管理用 list *listwptr; //リストをたどる用 listptr = (list *)malloc(sizeof(list)); /* mallocで確保したメモリの場所をlist型のlistptrに代入 */ listptr->next = (list *)malloc(sizeof(list)); /* listprtの中の*nextにmallocで確保したメモリの場所を代入 */ listwptr = listptr->next; listwptr->next = NULL; /* listprtの中の*nextで指定されたlistptrの中の*nextにNULLを代入*/ return 0; }
- 87 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:29:30 ]
- 初心者です。
Visual C++ 2008 Express EditionをDLし、プログラミングしてみたところ なぜかコンパイルできません。なぜでしょう・・・? ---------------------------------------------------------- プログラム 'c:\work\sample_console1\Debug\sample_console1.exe'を開始 できません。 アクセスが拒否されました。 ---------------------------------------------------------- OSはVistaで管理者権限で実行しています。
- 88 名前:74 mailto:sage [2008/07/09(水) 23:44:41 ]
- >>86
むむむ、分からないorz listptr = (list *)malloc(sizeof(list)); /* mallocで確保したメモリの場所をlist型のlistptrに代入 */ でlist型の関数にメモリの場所を渡してますよね? このとき、struct listのchar name[20];は(今は説明のため省いてある部分だと思うのですが)どういう扱いになるんでしょうか?
- 89 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:46:41 ]
- >>88
一緒に確保されてる 構造体の定義が目次で、中身が本文で、本ごと手に入れるというか。
- 90 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:47:28 ]
- listptr->name
とか listptr->name[0] とか
- 91 名前:74 mailto:sage [2008/07/09(水) 23:59:05 ]
-
int main() { list *listptr; //管理用 list *listwptr; //リストをたどる用 listptr = (list *)malloc(sizeof(list)); /* mallocで確保したメモリの場所をlist型のlistptrに代入 */ scanf("%c",&listptr->name); listptr->next = (list *)malloc(sizeof(list)); /* listprtの中の*nextにmallocで確保したメモリの場所を代入 */ listwptr = listptr->next; listwptr->next = NULL; /* listprtの中の*nextで指定されたlistptrの中の*nextにNULLを代入*/ return 0; } のような事をすれば、入力できると考えて大丈夫でしょうか?
- 92 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:01:24 ]
- >>91
領域をオーバーしないように十分な注意を払える環境であればそれでも。
- 93 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:02:31 ]
- そんなことないわ。
scanf("%s",listptr->name); だね
- 94 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:03:05 ]
- >>91
そういう使い方をするならとりあえず入力の情報を受けるだけのでっかい器 を別に用意して文字数の確認なんかをした上でmemcpyとかで 入れてあげたほうが良いかもしれないですね。
- 95 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:07:39 ]
- まず構造体をおさらいしてからの方がいいのかも?
入力処理に自信がもてず、構造体に自信がもてない状態でリストに進むと、 何か問題があったときにどこが問題なのかが分からなくなるかもよ
- 96 名前:74 mailto:sage [2008/07/10(木) 00:18:47 ]
- 了解です。
構造体あたりから復習してみます。 ありがとうございました!
- 97 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:36:23 ]
- int hoge[10000];
と言う配列を以下のように操作したいのですがいまひとつ効率のよい方法が思いつきません。 1.hogeには0以上の整数がランダムで入っている 2.0は空きと考え、hogeを添字0から順に走査して1以上の数であれば添字の小さい順に詰める (301200960890なら312968900000としたい) 出来る限り効率の良い方法はどのようになるのでしょうか?
- 98 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:41:06 ]
- >>97
メモリ効率 or 時間効率?
- 99 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:41:52 ]
- それはCっていうより、アルゴリズムの話だからスレ違い
- 100 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:44:59 ]
- 時間効率なんですが、すれ違いみたいなので去ります
スレ汚し失礼しました
- 101 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:50:57 ]
- for(i=j=0; i<10000; i++) if(hoge[i]) hoge[j++] = hoge[i];
for(;j<10000; j++) hoge[j] = 0;
- 102 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:54:32 ]
- これでメモリ効率持ち出す奴ってどんなアルゴリズム考えたの?
- 103 名前:デフォルトの名無しさん [2008/07/10(木) 01:25:10 ]
- それはCっていうより、アルゴリズムの話だからスレ違い
warota
- 104 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:46:44 ]
- あげんなカス
- 105 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 01:51:45 ]
- あがっちゃうんだよ
- 106 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 05:54:59 ]
- 最近のexe compなに使ってる?
- 107 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:42:45 ]
- XPに最適なCコンパイラをおしえて
今はbccつこうとる
- 108 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:47:45 ]
- vc++でいいんじゃないの?
あれってGUI版も作れるし、コンソールのもできるでしょ?
- 109 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:48:43 ]
- >>107
統合開発環境を使うと関数のマニュアルやプロトタイプが簡単に見えたり スペルチェックや変数名の補完もできたりするメリットはある でも、現状それで何か不都合があるの?
- 110 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 11:48:04 ]
- >>107
Windows用ならやっぱり開発元の作ったVisualC++がいいだろう
- 111 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 13:31:27 ]
- せっかくだから俺はこのWindowsSDKを使うぜ!
- 112 名前:デフォルトの名無しさん [2008/07/10(木) 13:49:50 ]
- 入力は正の整数n.
• 出力はn = a^2 となるような正の整数a が – 存在するときは上の式をみたすa の値. – 存在しないときは“ No ”. このプログラムの作り方を教えてください。お願いします。
- 113 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 14:00:57 ]
- >>112
正の整数を変数nに入力し、 nの平方根を求めて変数aに代入し、 変数aが整数ならそれを出力し、 そうでないなら"No"を出力する。 ように作ればいいとおもうよ。
- 114 名前:デフォルトの名無しさん [2008/07/10(木) 14:19:22 ]
- >>113
ありがとうございます。 がんばってみます。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 15:30:40 ]
- OSSである、expat-2.0.1のソースコードを読んでいるのですが、どうしても分からない部分があります。
elements.c内のstatic void XMLCALL startElement(void *userData, const XML_Char *name, const XML_Char **atts); この関数の引数XML_Char **attsのHeap領域がどこの関数で確保されているのかが分かりません。 構造体をchar **にキャストして使用している、と予想して探しているのですが、 ご存知でしたらご教授下さい。お願いします。
- 116 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:03:35 ]
- >>115
最初のポインターを配列に置き換えて考えてみたら?
- 117 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:06:23 ]
- 自己管理がちゃんとできるならC++にたいした利点はありませんよね?
- 118 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:10:16 ]
- そのレスの意味する所が余りに広大そうで訳が分からん
- 119 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:10:22 ]
- >>116
レスありがとうございます。 最初のポインタを配列に置き換えて考える、というのはどういう意味でしょうか?
- 120 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:12:28 ]
- const XML_Char *atts[]
- 121 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:14:02 ]
- 確かに自己管理ができていれば山本モナも番組降板になることもなかったわけで、
そう考えるとC++のことなんてほんとたいした問題ではない
- 122 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:14:09 ]
- >>117
ええ!?クラスとかデフォルト引数とか死ぬほど便利なのに・・・
- 123 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:18:22 ]
- >>120
XML_Char **attsは動的に複数個確保された構造体を指している、という事でしょうか?
- 124 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:21:48 ]
- CとC++て結局どっちが速いの?
- 125 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:22:04 ]
- >>123
main関数でコマンドラインに渡されたパラーメータを解析するとかやったことないの?
- 126 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:29:16 ]
- >>125
申し訳ありません、した事無いです。
- 127 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:34:28 ]
- >>126
ポインタへのポインタってこと何だけど、これが分からないとなると...
- 128 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:41:29 ]
- char *へのポインタ、ですか?
main引数のパラメーターの場合は二次元配列に使っている。と覚えています。
- 129 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 17:43:46 ]
- >>128
そこまで分かってるのに 試しに、コマンドラインに渡されたパラメータを表示することとかやってみたら?
|

|