1 名前:デフォルトの名無しさん [2006/05/04(木) 08:53:09 ] 入門者向けの俺に聞けスレです。 なんでもきいてよね
369 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 17:58:40 ] >>366 まず何をしたらいいのか・・・・
370 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 18:07:22 ] まず「論理式」でぐぐれ そしてC言語に関連あるところまで理解が進んでからもう一回来い。
371 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 18:11:16 ] >>369 > まず何をしたらいいのか・・・・ まずは、日本語の勉強からどうぞ。 算数の勉強も合わせてどうぞ。
372 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 18:17:18 ] ひねくれ者うぜーしばいばい
373 名前:デフォルトの名無しさん [2006/06/12(月) 18:42:14 ] ttp://www.geocities.co.jp/Technopolis-Mars/5427/math/fe_set1.html ドモホルンリンクルの法則・・・なんでもないw
374 名前:デフォルトの名無しさん [2006/06/12(月) 18:45:03 ] >>368 x nor x = not x だよ。 nor か nandがあればOK。
375 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 18:46:01 ] ねぇねぇ、知ってた?論理回路のすべてはnotがあれば全部作れるんだよ?
376 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 19:10:34 ] 単項演算だけでか?
377 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 19:11:56 BE:81522667-#] >>374 >A→Bを|のみを用いて と書いてあるんでNOTの入った物(NOR,NANDも含む)が必要かなと。
378 名前:365 mailto:sage [2006/06/12(月) 19:16:17 ] A⇔B = ((not A)or B) and (A or (not B))ですかね? これを巧く直せないんです
379 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 19:19:24 ] >>378 だからスレ違いだっての
380 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 20:01:16 ] 300あたりから「くだすれC言語」化してきたな、と思ってたら ついにC言語ですらなくなったか。このスレも終わりかな。
381 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 21:07:50 ] 入門編だからいいんだよ 質問の仕方入門や BOOL代数の入門も含まれる という事にしてマタリしとこう
382 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 21:15:16 ] >>381 質問の仕方は勘弁してくれ。 正しい質問の仕方を心得ている事は、最低限必要。 プログラミング言語初心者はいいが、日本語初心者はお断りにすべき。 母国語もマトモに使えないようでは、プログラム以前の問題。
383 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 21:15:56 ] 2B or (not 2B)
384 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 22:24:30 ] >>368 「論理回路 完全系」でググれ。
385 名前:URLエンコード [2006/06/14(水) 14:57:40 ] upld3.x0.com/src/upld7639.txt このソースは書籍からのCGIのサンプルなんですが CによってURLエンコードをする際に%xx%nn%yyという2バイトコードをを16進数に変更して1バイトにまとめていく処理があるのですが 229行目での配列への代入が何を代入しているのかがどうしても分かりません。 この代入は次のループで書き換えられているような気がするのですが、これは必ず必要な処理なのでしょうか。 変な文章の質問になりますが、ここだけがどうしても胸につかえていて気持ち悪いんです。どなたかスッキリさせていただけないでしょうか。
386 名前:デフォルトの名無しさん [2006/06/14(水) 15:13:41 BE:149769656-#] >>385 %xxという形式じゃなかったら、そのままコピーしてるだけなんじゃない? インデックスの変数をインクリメントしてるから、次のループでも 上書きはしてないと思う。
387 名前:URLエンコード [2006/06/14(水) 15:23:18 ] >>386 失礼しました。 改行でのみの行番号だと223行目の部分でした。 エディタ入れなおしたばっかりで設定し忘れていました。
388 名前:デフォルトの名無しさん [2006/06/14(水) 15:40:38 BE:199692858-#] >>387 ああ、本当だ、それバグっぽいね。 他にも、渡されたデータのサイズに関係なく適当にmalloc()してるとか、 %が現れたら、無条件にインデックスを+2してるとか、危なそうなコー ディングしてるね。
389 名前:URLエンコード [2006/06/14(水) 15:43:59 ] >>386 >>388 おお。ではこれは必要のない一行ということでよかったのでしょうか。 御教授いただきありがとうございました。 これで胸の支えが取れた感じです、、が危なそうなコーディングですかー。 中々C言語によるCGIの書籍というのがなかったもので、徐々に理解していきたいとおもいます
390 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 17:47:23 ] >>385 のソース見ると なんていうか、すごいね。
391 名前:デフォルトの名無しさん [2006/06/14(水) 18:17:22 ] 学校ではC++できるのですが、 家ではやり方が良くわかりません。 どうすれば、C++でコンパイルや実行などができるのでしょうか??
392 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 18:24:56 ] >>391 学校ではどうやっている?
393 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 23:31:48 ] 電気屋に逝って店員に相談する。 XPならVC++とかじゃね? VC++スレ逝け。詳しい香具師が多い。
394 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 23:38:34 ] いつも思うんだが、なぜ学生なのに先生や同級生に聞かないんだろう
395 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 23:45:34 ] キョドってキモがられて虐められて以下無限ループ
396 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 23:59:58 ] www.vipper.org/vip275713.jpg こんな顔の奴だな。
397 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 00:04:08 ] ああ… そういう奴らがここに溜まって来る訳か。
398 名前:デフォルトの名無しさん [2006/06/15(木) 00:07:11 ] 下がり眉 常に上目遣い 常に口が開いてる 口をすぼめ気味 自触癖っぽい唇の傷 全てが精神遅滞を思わせる特徴だなwww
399 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 00:13:10 ] 友達はいないかも知れんが先生に聞くことはできるだろ それすらできないならちょっとアレだ
400 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 00:26:38 ] >>399 この手の人は、他人が書いた答えを写す事しか頭にないだけ。
401 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 00:36:50 ] >>399 そうだよね。積極的に教授と交流作っとけば成績もプラスに評価されるよね。 あ、もちろん対教授コミュ法は『教えて君』じゃだめだよ。
402 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 02:34:08 ] #include <time.h> #include <stdio.h> int main(){ time_t times; struct tm *jt; time_t tt; times = time(NULL); // jt = localtime(×); jt->tm_year = 100; jt->tm_mon =1; jt->tm_mday = 1; jt->tm_hour = 5; jt->tm_min = 11; jt->tm_sec = 33; printf("%4d年%2d月%2d日 %2d時%2d分%2d秒\n", 1900+jt->tm_year,jt->tm_mon,jt->tm_mday, jt->tm_hour,jt->tm_min,jt->tm_sec); tt = mktime(jt); printf("%d\n",tt); return 0; } 上記プログラムで、現在時刻を、また通算秒数に戻したいのですが、 localtime()で受け取った値をそのまま使えば、戻せるのですが、 自分で、年月日、時間分秒を指定すると、-1になってしまいます。 年月日、時分秒だけ入力して、 通算秒数に戻す方法はないのでしょうか?改行で怒られて見づらくてすいません。
403 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 06:04:48 ] >>402 時刻表示にprintf()で愚直に詰めるのはやめようよ。 ちゃんとstrftime()って関数があるんだから。 処で、jtはどこを指しているのかな?
404 名前:402 mailto:sage [2006/06/15(木) 07:39:19 ] そういう関数があるんですか、いろんなHPでprintfで表示してる のでそれで良いのかと思ってました。 すみません、どこを指してるとはどういう意味でしょうか。 localtime()の返り値を受け取って初めて、 時間指定ができるようになるとか、そういう意味でしょうか。
405 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 07:56:52 ] localtime()を使わない場合、struct tm * jt;でポインタを宣言した後初期化もしないで代入してはダメ。 また、localtime()で戻されるポインタが指す領域もlocaltime()が抱える静的領域なのでそれを加工してはダメ。 書くならこんなもんかな。 #if 0 /* localtime()の例 */ time_t tt = time(NULL); struct tm * pjt = localtime(& tt); #else /* 自分で代入する例 */ struct tm jt = {33, 11, 5, 1, 1, 100, }; struct tm * pjt = & jt; #endif char buf[30]; strftime(buf, sizeof(buf), "%F %r", pjt); strftime()の使用例などについてはこちら参照。 ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/localtime.3.html printf()で愚直に詰めるのはアナクロだと言うことを知らないアナクロな表現者は多いと言うことだね。
406 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 08:56:23 ] >>405 > strftime(buf, sizeof(buf), "%F %r", pjt); それ「#else」の方だと strftime(buf, sizeof(buf), "%F %r", &pjt); としないとダメじゃね?
407 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 09:24:44 ] >>406 よく見ろ。それを回避するためにstruct tm * pjt = & jt; している。
408 名前:406 mailto:sage [2006/06/15(木) 10:47:00 ] >>407 そうか、見落としてたよ。
409 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 16:16:49 ] printf 使わないで、 strftime だけで "2006 年 6 月 15 日 木曜" て書く方法教えて!
410 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 16:58:54 ] >>409 char buf[100]; struct tm date = {0}; date.tm_year=2006-1900; date.tm_mon=6-1; date.tm_mday=15; mktime(&date); setlocale(LC_TIME, "Japanese"); strftime(buf, sizeof(buf), "%Y 年 %#m 月 %#d 日 %a 曜", &date); puts(buf);
411 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 18:47:34 ] 外部関数としてファイルを分割し、 メイン関数で外部関数を呼ぶとき、構造体を引数として外部関数に渡すにはどうしたらいいですか?
412 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 20:31:57 ] >>411 普通に呼べばいい。
413 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 20:48:48 ] >>411 その構造体をさらに別のファイルfoo.hで宣言して、それぞれのソースファイルでインクルードする。
414 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 21:47:24 ] 0000000000 1111111111 1セット 2222222222 0000000000 1111111111 2セット 2222222222 0000000000 1111111111 3セット 2222222222 ... xセット (10+1, 3, x) 10文字ずつ並んでいる(改行コードで文字数が+1と考える) それが3行で1セットのものがある。 それがxセットあるとする。あと、これがchar str[1024];とかに入ってると考える。 それを次のように横向きにつなげるのにはどうすればいいだろうか? 000000000000000000000000000000 111111111111111111111111111111 222222222222222222222222222222 (10*x+1, 3) ※ここで10と3って書いたけど実際に使うプログラムでは3じゃなくて20です。 長くなりすぎないように3に変えただけです。 頭が悪くてやり方がわからん。教えてくれまいか?
415 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 23:34:21 ] // こんなもんかな const int rowLen = 10; const int setLen = 3; const int rowSize = rowLen + 1; const int setSize = rowSize * setLen; char newStr[1024]; newStr[0] = '\0'; for (int rc = 0; rc < setLen; ++rc) { for (int ic = 0; ic < x; ++ic) { sprintf(strchr(newStr, '\0'), "%.*s", rowLen, & str[ic * setSize + ir * rowSize]); } }
416 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 23:43:26 ] 変数名の付け方が最悪だなウププププ
417 名前:402 mailto:sage [2006/06/16(金) 00:05:27 ] >>405 うわ、経過秒表示できました。 自分で代入する場合のサンプルまでどもです。
418 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 00:47:20 ] NULLポインタを返す関数を作るのはだめですか? 一々アドレスの有効性を示すブール値が必要とは思ってなかったけど 会社の先輩に言われました。ここは組み込み系だからなとかなんとか・・・
419 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 00:49:34 ] >>418 そんなことありません。 ポインタを返す関数の場合、エラーが起こったときにはNULLを返すのが普通です。
420 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 00:50:49 ] >>418 その先輩を説得するために、mallocやfopenの例を示しましょう。 ただし、あまり関係が悪くならないように立ち回る必要がありますね。
421 名前:418 mailto:sage [2006/06/16(金) 00:54:00 ] >>419 そうですよねー。 なんかアセ屋さん上がりの人たちが得意げに説法してくれるので 自信失いました。 NULLを知らずにアクセスしたらどうすんだって言うんですよ。 ちゃんと返り値のほうでNULLかどうか見てるのですが、 忘れたらどうすんじゃとかなんとか・・・ それ知らない人が次にソース触ったらどうとこかこうとか。 会社辞めようかな orz
422 名前:419 mailto:sage [2006/06/16(金) 01:22:19 ] >>421 周りが全部そうだったら、ひとまず先輩を立てておいて転職を画策するって手もありますね。 いずれにせよ・・・がんばってください。
423 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 07:56:32 ] >>421 そんな変なスタイルに凝り固まった人たちと仕事していても(技術的に)得る物はありませんよ。 適当に相槌打ちつつ次を模索するのが妥当かと。
424 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 13:58:33 ] NULLを知らずにアクセスするのが怖いならCやC++は使うべきじゃないなあ。
425 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 19:06:53 ] >>415 ありがと。解決しました。
426 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 22:42:09 ] 組み込み系だから何か事情があるんじゃないの? つうか一番大事な理由をちゃんと聞いてないってどういう事よ
427 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 22:45:22 ] 理由書いてるじゃん、「NULLを知らずにアクセスしたらどうすんだ」って。 推して知るべし。
428 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 23:14:47 ] boolean な戻り値が何を意味してるかを知らずに 戻り値を無視したらどう(ry
429 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 01:04:16 BE:38820454-#] ポインタを戻すこと自体の是非は文脈に依存するが、ポインタが戻されたらNULLかどうかを チェックするのは当然。
430 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 01:45:23 ] 仕様で NULL にならないと書いてあっても、 とりあえず assert くらいはするかもしれんな。
431 名前:418 mailto:sage [2006/06/17(土) 09:15:32 ] >>426 いろいろ調べてみて分かってきたのですが 今私が使っているCPUではNULLがゼロ番地を示すようにコードが落ちます。 ここまでは普通の話かもしれません。 (違うところを差す環境もあるらしいですが) このCPUの場合には0番地はCPUが使う特殊な領域として定義されていて ユーザがアクセスすると暴走するようです。 明確にCPUリセットや決められた割り込みが発生すればいいのですが、 他に使っている割り込み処理を壊してしまったりするようです。 正直、NULLをチェックするのを忘れた場合でも、CPUリセットする だろうという思い込みはありましたが、 やっぱり、チェックし忘れたらどうするんだっていう言い方だけでは 分かりませんよね。。。 >>428 結局そういうことですよね。 しかも、booleanがTRUEのときに、返り値のアドレスがNULLかチェックする なんて馬鹿げてるし。 結局NULLかどうかは必ず検査していないといけないですよねw >>430 NULLが返ることもあることを仕様書に明記すればいいみたいな話で もういいやみたいな言われてしまいました。 でもやっぱり結局はNULLかどうかを検査するコードを常に書かないと いけないわけですよねw 難しいですね もっと勉強します。
432 名前: ◆hznrtioKU2 mailto:sage [2006/06/17(土) 13:25:54 ] 教えてください。 char *str[][] = { {"abc", "def"}, {"ghi","jkl"} }; これを引数として関数側に飛ばす場合、受け側はどういう記述でいけばいいのでしょうか? *[][]でも***でも**[]でもむりですた('A`)
433 名前: ◆hznrtioKU2 mailto:sage [2006/06/17(土) 13:28:05 ] BOOL GetIniFilePos(POINT *coordinate, short PosVal, char **chKeyPos, char *ActDir) { short i; for(i = 0; i < PosVal; i++) { /* セクション"POS"からxの値を取得 */ (coordinate + i)->x = GetPrivateProfileInt("POS", &chKeyPos[0][i], -1, ActDir); if((coordinate + i)->x == -1) { goto FUNC_END; } /* セクション"POS"からyの値を取得 */ (coordinate + i)->y = GetPrivateProfileInt("POS", &chKeyPos[1][i], -1, ActDir); if((coordinate + i)->y == -1) { goto FUNC_END; } } return TRUE; FUNC_END: return FALSE; } static char *chItemPos[POS_XY][POS_VALUE] = { {"One_x", "Two_x", "Three_x", "Four_x", "Five_x", "Six_x"}, {"One_y", "Two_y", "Three_y", "Four_y", "Five_y", "Six_y"} }; /* SKILLPOSキー項目テーブル */ static char *chSklPos[POS_XY][SKLPOS_VALUE] = { {"SklOne_x", "SklTwo_x", "SklThree_x", "SklFour_x", "SklFive_x", "SklSix_x"}, {"SklOne_y", "SklTwo_y", "SklThree_y", "SklFour_y", "SklFive_y", "SklSix_y"} };
434 名前: ◆hznrtioKU2 mailto:sage [2006/06/17(土) 13:29:57 ] GetIniFilePos()の3番目の引数に下記の配列を渡して参照させたいんだが・・・ chKeyPos部分の受けの型はいったいどうすればいいのかさっぱりなんで('A`)
435 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 13:35:33 ] >>431 君にはこれがきっと役に立つと思うから読んでごらん。 https://sec.ipa.go.jp/download/files//report/200504/coding_guide.pdf ただ、これで先輩を納得させたり教育したりしようと思わないこと。 一人でこっそりスキルアップに励むが吉。
436 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 13:42:07 ] >>434 無理。 char*を二つメンバーにもつ構造体を宣言し、その配列を使うようにしろ。
437 名前: ◆hznrtioKU2 mailto:sage [2006/06/17(土) 13:44:05 ] >>436 あー、やっぱそうなのか それとなぜ無理なのかを教えてほしいんですけどいまいち納得がいかないというか ポインタについてまだ理解できてないというか・・
438 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 14:19:36 ] >>437 結論だけ言うと、多次元配列を関数に渡す場合、仮引数の型は最初の次元を除いてその大きさを 全て明記しなければならない。 詳しくはC FAQ参照。 www.kouno.jp/home/c_faq/c6.html この説明で理解できない場合は、『ポインタ完全制覇』のような(そのような書籍が実在するのか 知らないし、読んだこともないが、確かにポインタに特化した書籍は存在する)書籍を読むと良い。 あるいは、”多次元配列 仮引数”などで検索してヒットしたページを読んでみると良いかもしれない。
439 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 14:22:37 ] 書き忘れたが、POS_VALUEとSKLPOS_VALUEという異なる値(>>433 の場合はどちらも6だが)を 使う限り、配列を渡すのは無理だということ。 どちらもいつも同じというのであれば、仮引数にその大きさを明記してやれば渡せる。
440 名前: ◆hznrtioKU2 mailto:sage [2006/06/17(土) 15:12:12 ] >>438-439 参考になった。ありがとう
441 名前:デフォルトの名無しさん [2006/06/18(日) 19:27:25 ] ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 嫌いなコテハン投票vote2.ziyu.net/html/corosuke.html ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ えいいちに清き1票を!
442 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 12:54:09 ] >>435 もっといいやつ教えてあげればいいのに。
443 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 14:01:52 ] >>442 じゃ、君が教えてあげれば?
444 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 21:24:46 BE:49923252-#] >>443 それは断る。
445 名前:デフォルトの名無しさん [2006/06/19(月) 22:31:52 ] 例えば、その関数に至ったら1秒間止まる、といった具合に、 一定時間処理を止める関数ってありますか?
446 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 22:59:13 ] ある
447 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 23:00:53 ] sleep系の関数は「最低N(mm)秒」止まるだけ
448 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 23:16:38 ] >>447 thx
449 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:10:41 ] 120.10 200.55 344.78 ・・・ 150.66 300.78 664.13 ・・・ 400.44 135.66 333.44 ・・・ 上のようにファイルに実数型で記入されているものを 整数型に型変換したいのですがどうすればいいのでしょうか 小数点以下の数値は切り上げでも切捨てでも構いません 一つずつならできるのですが、複数だとうまくできません どなたかご助力ください
450 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:13:26 ] その、一つずつなら出来るというコードを見せてもらおうじゃないか。
451 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:16:36 ] >>449 一つずつってつまりは複数なんじゃないの?
452 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:25:49 ] 言い方が間違っていました 一つずつではなく、一つのみなら整数型に変換できる ということです コードは他のサイトから拾ってきたもので double d = 2.5; int i = (int) d; のようなやり方をして型変換していました
453 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:29:05 ] んーそれをファイル内のすべてに対してすればいいんでないの?
454 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:29:15 ] >>452 一行読み取って、スペースで区切りながら、atofを使うか、 一行読み取ってsscanf("%lf %lf ....")とかする(個数固定の場合)
455 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:31:56 ] >>453 >>454 ありがとうございました やってみます
456 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 00:51:08 ] >>454 strtod()という選択肢はないのかね。
457 名前:誰か教えてください・・・。 [2006/06/20(火) 11:03:59 ] (OS)XPでソフトはVC++なんですが、こんな問題が解けないのでお願いしたいのですがいいでしょうか? 得点に負の値が入力されるまで得点を入力し、その最大値と最小値を求め、その差が30点以上であれば 「差が大きい」と表示するプログラムを作成せよ。 です。もしよかったらおしえてください。
458 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 11:05:04 ] スレ違い
459 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 12:28:55 ] >>457 #include <stdio.h> int main(int argc, char* argv[]) { printf("得点に負の値が入力されるまで得点を入力し、" "その最大値と最小値を求め、" "その差が30点以上であれば「差が大きい」\n"); }
460 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 13:15:15 ] >>457 人にものを聞くのに「せよ」なんて命令形使うのは人間として間違い。
461 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 13:40:54 ] >>460 ちょwwwwwwおまっwwwwww人にものを聞くじゃなくて その部分は「問題文」だからwwwwwwww >>457 は >もしよかったらおしえてください。 って言ってるじゃんwwwwwwwwwww まさか、あんたが受けたことある試験や問題集に書かれていた問題って 次の○○を解いて下さい。 みたいな、丁寧口調なものばかりだったの?w
462 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 14:11:09 ] 【問題】 得点に負の値が入力されるまで得点を入力し、その最大値と最小値を求め、 その差が30点以上であれば「差が大きい」と表示するプログラムを作成して 戴けましたなら幸い至極に存じあげ奉り候。
463 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 14:12:12 ] 何が候(そうろう)だよー!早漏なんて卑劣すぎ!
464 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 14:14:33 ] 精神年齢低すぎ
465 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 15:09:48 ] >>457 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2111.cpp
466 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 15:12:39 ] >>457 >>465 はミスった kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2112.cpp
467 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 17:23:01 ] >>461 昔から問題文の命令形はおかしいと思ってました。 自分が先生をやっていた時も自分で問題文書きながら 絶対おかしいと思ってました。w
468 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 17:29:46 ] それじゃ「解いてみよう」でいきますか?
469 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 17:30:42 ] なんなら「点数が欲しいなら解いた方が良いよ」とか? 「解かないと単位取得が危ういよ」とかそことなくやらせる気を起こさせる?
470 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 18:12:29 ] ゆとり世代もここまできたか
471 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 20:29:38 ] 候
472 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 20:34:42 ] * 斬新な試み 1. 問題文を若者言葉にしてみる。 2. 問題文を絵文字満載にしてみる。 3. やたら顔文字を使う。 4. (爆)が文末に意味なく挿入されている。 5. wが文末に意味なく挿入されている。 6. 藁が文末に意味なく挿入されている。 7. 最後に「欝」の文字が入っている。
473 名前:虫歯18本 [2006/06/20(火) 21:24:54 ] 超伝導量子干渉素子のプログラムを作ってください。 ちなみに水銀が超伝導状態になるのは、4.2K(ケルビン)の時です。
474 名前:デフォルトの名無しさん [2006/06/20(火) 21:32:34 ] ΣΣ{(内積)の二乗} を計算するプログラムはどのようにつくったらよいでしょうか? forつかっただけでできますか?
475 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 21:51:10 ] 彼女ができません。 forつかっただけでできますか?
476 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 00:25:24 ] for(int=0;i<N;i++)if(kokuhaku(girlfriend[i]))break;
477 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 01:44:00 ] 残念。 N = 0 だ。
478 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 09:22:11 ] ∧ ∧ ΣΣ(´Д`)
479 名前:C++風に mailto:sage [2006/06/21(水) 12:42:16 ] >>475 for( i=0; i<My->GirlFriendCount; i++ ) { try { /* 告白 */ Declared( My->GirlFriend[i] ); } catch( DeclaredSuccessException exp ) { /* カップル成立 */ DeclaredSuccess( exp ); break; } }
480 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 13:50:46 ] なるほど。彼女が出来る方が例外的なことであると。
481 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 14:04:24 ] どうせなら一生彼女ができない無限ループじゃね? 無限と言っても人生が終わった時点でプログラム終了だが
482 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 14:26:58 ] 両親からforkした段階で変数kanojyoが宣言されてないと思う。 ext(1)で氏ぬのを待つだけ。
483 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 16:05:32 ] int life(const char *job) { int age, lifetime; if (strcmp(job, "プログラマ") == 0) lifetime = 50; else lifetime = 70; for (age = 0; age < lifetime; ++age) { #ifdef IKEMEN if (age >= 10) printf("%d 人目の彼女が出来ました。\n", age - 9); else if (age == 25) puts("結婚しました。"); else if (age >= 30) printf("%d 人目の愛人が出来ました。\n", age - 29); #endif sleep(31536000); } }
484 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 17:02:40 ] >>483 生まれた時には職業は決まってないだろう。
485 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 17:15:48 ] age35ってドラマがあったよね?
486 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 19:28:42 ] 生まれながらのプログラマー。
487 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 19:29:44 ] >>484 神は何でも分かっているのです。
488 名前:デフォルトの名無しさん [2006/06/23(金) 01:26:54 ] ファイルから構造体の配列への読込と、書き込みがいまいち 分からないので、教えてください。
489 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 01:30:06 ] >>488 マルチ乙
490 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 01:32:42 ] まるちはだめよ。
491 名前:488 [2006/06/23(金) 01:35:37 ] >>489 >>490 マルチになってスイマセン。 どーしても知りたくて。緊急なんです。 良ければ教えてください。
492 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 01:48:02 ] >>491 情報が曖昧過ぎて何をしたいのかわからない。 宿題スレに、構造体の配列を使った課題があったと思うから探してみたら?
493 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 07:45:58 ] >>488 struct foo { ... }; void write_foo() { FILE* fp; struct foo f[10]; fp = fopen("foo.dat", "wb"); fwrite(f, sizeof(struct foo), 10, fp); // fwrite(f, sizeof(struct foo), sizeof f / sizeof f[0], fp); // fwrite(f, sizeof f, 1, fp); fclose(fp); } void read_foo() { FILE* fp; struct foo f[10]; fp = fopen("foo.dat", "rb"); fread(f, sizeof(struct foo), 10, fp); fclose(fp); }
494 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 09:31:22 ] 実行するとgetsやfgetsのコードがスルーされるのですが、原因が全くわかりません。 しかし、例えば gets(str); gets(str); と二回続けて書くと1つだけが実行されます。 原因が解る方いらっしゃいますか?
495 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 12:27:41 ] >>494 前にscanf()が呼ばれていて、 バッファに改行が残っているとみた。
496 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 13:07:49 ] >>494 素朴な疑問だが、2行目の「しかし」は何に掛かっているんだ?
497 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 13:23:53 ] コードがスルーされるのですがに掛かるので意味は通じる
498 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 14:15:45 ] >>496 but (日本語だと「しかし」、「でも」など) を使うとその手前のことがキャンセル されて後に言ったことが強調される。また口語だといきなり「しかし」を先頭に持っ て来るという考えてみればおかしな文でも通じてしまうのでいきなり何かを強調 したい時に使える。 というようなことがこの前買ったコールドリーディングの本に書いてありました。
499 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 15:21:46 ] PGは日本語が不自由だからな。 意味不明の仕様書しか作れないから、手を入れるより毎回新しいプログラムかいておき替えたほうが早い。
500 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 16:41:20 ] >>499 それはPGで括ることじゃないと思うが PMだってSEだって(ry
501 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 17:45:21 ] >>499 >PGは日本語が不自由だからな。 >意味不明の仕様書しか作れないから PGの書く仕様書を読まされるあなたは、もしや伝説のコーダー様??
502 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 19:30:32 ] 元PGってのが仕様書作って来るけど糞って話では? 仕様書通りに作って納品したら、案の定作り直しでデスマであぼーん。
503 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 14:26:55 ] 無償のVS2005でC言語を始めようと思うのですが、C++かC#どっちがいいと思いますか? 人気のある方がいいです プログラム経験はあります(perl,ASなど)
504 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 14:33:36 ] C++もC#もC言語ではありません。
505 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 17:12:34 ] だがしかし、Visual C++のコンパイラはCのソースをコンパイルすることもできる。
506 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 17:13:04 ] >>503 とても、プログラム経験がある人の発言とは思えない。
507 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 17:13:18 ] >>503 初心者?言語の仕様を習いたいの?それとも教育機関でやる ありきたりな数学的な知識を使った手法(アルゴリズム)をきちっと理解したいの? まぁ、どの道どの言語でも、アルゴリズムの部分は共通しているんで どっちでも良いんだけど、C++にしとけば?
508 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 20:19:17 ] >>506 人気のあるほうって何だよそれ人気があればいいのか?じゃあVB
509 名前:508 mailto:sage [2006/06/24(土) 20:20:04 ] 安価ミス >>506 × >>503 ○
510 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 21:25:01 ] 人気っつーか、自分が使いやすい方がイイ!
511 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 22:10:32 ] おまえら本当にこの手のどうでもいい質問に律儀に答えますね
512 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 22:31:39 ] 君も仲良しクラブに入らないか
513 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 23:12:55 ] 俺も入れてくれないか?
514 名前:デフォルトの名無しさん [2006/06/25(日) 00:23:31 ] バブルソートを少しヒントをもらって、なんとか自力でやりとげたんですが これってどのぐらいの難易度なんですか? 自分はかなり努力したつもりですがみなさんからみたら初歩なんですかね?
515 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 00:26:12 BE:59908234-#] >>514 バブルソートは、アルゴリズムの本にソースが載ってたんで、 自分で考えるなんてことはしたことがない。
516 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 00:35:35 ] >>514 初歩的だが、もっと効率の良いソートを理解する前の前座程度。 しかも、今後作るプログラムにはバブルソートなんて使わず もっと高速なソートが使われるし、自分で定義しなくてもできたものがあるしね。
517 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 01:01:51 ] >>483 どうあっても結婚まで発展しなさそうな気がするんだが
518 名前:デフォルトの名無しさん [2006/06/25(日) 01:13:38 ] C言語を勉強するとAVのモザイクが外せると聞いたのですが どのようにするといいのか教えてください。
519 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 01:14:14 ] 勉強しろ
520 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 01:15:19 ] 別にCじゃなくても出来ると思うが
521 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 01:15:41 ] ソートのアルゴリズムはいくらでもそれ専用の本でてるじゃん それを言語に置き換えるだけで、アルゴリズム理解しようとは思ったこともなかったわ。 シェルソートとクイックソート覚えるだけで良し
522 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 02:05:39 ] 今日からC言語をやってみたいと思うのですが C言語を使えばどんなものが作れるのかを教えてください。 その中から簡単そうなプログラムから一つずつ作って行って C言語を学んでいこうと思います。
523 名前:522 [2006/06/25(日) 02:41:58 ] C言語についてググッてC言語のソースを見てみて 感じたのですが。 C言語のソースって、なんだかPerlによく似ているような気がする。 補足するようですが私はPerlを使ってのCGIなら組んだことはあります。 C言語の\nってもしかして、改行を意味する命令? ifってPerlで使っているifと一緒? だったら、画面に文字を表示する命令は print "文字\n"; でしょうか?
524 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 02:46:56 ] >>523 本読め寝言を書き込むな。薬でもやってるのか?
525 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 02:52:17 ] >>523 命令制御コード制御文の基礎から勉強しとけ
526 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 03:26:04 ] ググレば腐るほど入門出てくるというのに…
527 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 04:24:32 ] どの入門書がいいですか 都会の本屋に行ったら種類が山ほどあって 近所の本屋に行ったら一冊もなくて 迷います
528 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 04:37:50 ] >>527 ネットで検索してネットで注文しなさいよ プログラミング言語C ANSI規格準拠 B.W. カーニハン これを、理解できるまで何百回も読み直せ
529 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 04:41:57 ] やっぱりその本が一番いいんですかね・・・ お小遣い貯めて買います
530 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 13:09:44 ] 小学生が2chやってんじゃねーよ
531 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 20:21:20 ] 小学生ではありません 立派なニートです
532 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 23:59:37 ] 実家引きこもりで小遣い貰ってるって香具師か。 いきなり本買う前に近所の図書館で借りて読んでみたほうがいいよ。
533 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 00:51:17 ] >>528 ちうかそれ、出版された日付が古いぞな・・・ ANSI基準もそれから変わった部分もあるんでは?
534 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 01:08:41 ] バブルソートの件を書きこんだものです。 みなさん返信くださってありがとうございます なんかへこみましたが‥これからも頑張ります
535 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 01:15:55 ] >>534 そりゃ経験があなたとは何万時間も違うような人から見たら、 バブルソートなんてアホみたいなものに見えちゃうさ。 別にへこむこと無いよ。そのまま突っ走れ。
536 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 01:41:43 ] 図書館は敷居が高くて・・・ バブルソートです
537 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 01:46:27 ] 基本情報やソフトウェア開発の本にもソートについては出てくるが 最初はバブルソートだな。けど、この仕組みを理解するのに苦労するのは 先行き不安だね・・・。単純に、各々の要素を配列の先頭から比較して並び替える程度だし。 まぁ、頭の中だけでなく、実際に数字を並べて自分で並び替えて仕組みを理解してみ。 んな難しくないことだし。
538 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 02:15:23 ] >>536 どこかの大学の講義資料とか漁ってみ。 学外から見れるところもまだ結構残ってる。
539 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 02:32:58 ] ttp://www.elc.ees.saitama-u.ac.jp/ProgrammingI/ ここにあるけど、ここのは配列の後ろの要素から比べているね・・・ 自分が見たものの多くは前からだったが、まぁ概要は同じなんで
540 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 04:00:40 ] 前からも後ろからも計算量は同じだし。 降順に並べるか昇順に並べるかの差。 Cには関係ない。アルゴリズムの本読めばソートの解説載ってる。 数学屋の理論的な蘊蓄付きで。
541 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 04:17:20 ] >>539 はモロにC言語なんだがw
542 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 12:45:00 ] >>541 君は日本語の勉強を先にした方がいいよ。
543 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 14:24:46 ] >>533 いや、この本を理解できればどんなCのマニュアルも理解できる っつうことでさ。 おれが生まれて初めて読んだ時は10回読んでも理解できんかったw
544 名前:デフォルトの名無しさん [2006/06/26(月) 14:58:38 ] >Cに=関係ない >>540 =>>542 は>>539 のPDFが見られず 人間の言葉以前に状況も理解できないサル以下の知能しかないようだ >>539 はバブルソートをC言語で表したものだが? 頭が悪い以前に自分勝手な主観や意見だけでゴリ押しする 周りを無視するタイプだな 所詮、低学歴、低俗、低レベルな奴
545 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 15:03:51 ] >>540 と>>542 はこのスレの流れも理解していないようだ。 >>538 には >大学の講義資料とか あるため、大学でそれに関する文献を公表している場所を示して 話が続いただけなんだが、無理やりバブルソートを話を終わらせようと必死こいた結果 ここはお前が中心になって話を進めるスレじゃないんで、他へ行った方が良いよ? そういう考えはまともなソースをかけないクズの考え。 一つ一つおろそかにせず、順を追うことは重要。 なぜなら、効率が悪いアルゴリズムを改善していくという部分の勉強も含まれているから。 現代人は最初っから便利なものを使っている。が、その便利なもの 手法が作られる経緯をろくに知らず、さらに、現代の問題を無視して 現在使っているものが引き起こす問題をそのままにしておく傾向もある。 そういう改善をする考えをもてなければ、プログラマとしてでなく 知能を持った人間として成長しない人間になるよ。
546 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 15:05:48 ] >>540 >前からも後ろからも計算量は同じだし。 誰もそんなことは聞いてないw >降順に並べるか昇順に並べるかの差。 え?後ろから比較するか前から比較するかの差は分かるけど? >Cには関係ない。 モロにC言語で記述されたソースが提示されてんですけどぉ? C言語でないって言うならスレタイを見て「お前」には聞いてねーって思えよ?w >数学屋の理論的な蘊蓄付きで。 数学の話なんてしてねーよ
547 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 15:07:53 ] >>542 が必死こいて自分の勘違いを認めないレスをする↓
548 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 15:18:49 ] ま た お 前 か
549 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 15:27:08 ] 前からか後ろからかで実際の速度が変わる環境は多いと思うがね。
550 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 15:34:02 ] >>549 それは一概に言えないけど、とりあえず上の流れは 明らかに大学のプログラムの講義でC言語を使っているものを例に出しているけどね そういうと、今度は無理なこじつけとか言い出すだろうけど、C言語において ソートは出てくるんで、あまり細かいことを言っていたら それじゃC言語でなんのプログラムを作るの?って話にまで発展しちゃうんで 一例を出しての話はおkだな
551 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 16:33:18 ] 面減る
552 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 17:08:59 ] メンヘル型かまってちゃん症候群
553 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 17:19:28 ] お勧めC本(ステップアップ順) やさしいC しばたぼうようのC入門のやつ 独習C++ ダイテル親子の本 K&R
554 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 17:57:35 ] すいません 質問したものですが私のために揉め事になってしまっているようで どうもすいませんでした 家の物置を整理したところ 兄の使っていたC言語の本と思しき書物がありましたので ひとまずそれを繙いてみます
555 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 19:25:20 ] >>554 古そうな本はやめておけ。 Cだって生まれたときから今まで全く同じ姿だったわけではない。 せいぜい10年以内できれば5年以内のもので、お前が合っていると感じればよいと思う。
556 名前:名無し [2006/06/26(月) 19:26:15 ] >>517 イケメンなら結婚できる。 void life(const char *job) { int age,lifetime; if(strcmp(job,"プログラマ") == 0) { lifetime = 50; } else { lifetime = 70; } age=-1;
557 名前:続き [2006/06/26(月) 19:27:46 ] while(++age<lifetime) { #ifdef IKEMEN if(9<age && age<25) { printf("%d 人目の彼女が出来ました。\n",age-9); } else { if(age==25) { puts("結婚しました。"); } else { if (age>29) { printf("%d 人目の愛人が出来ました。\n",age-29); } } } #endif sleep(31536000); } }
558 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 19:49:22 ] #ifdef IKEMEN if(9<age && age<25) printf("%d 人目の彼女が出来ました。\n",age-9); else if(age==25) puts("結婚しました。"); else if (age>29) printf("%d 人目の愛人が出来ました。\n",age-29); } #endif でいいじゃないか。 何でそんなにネスト掘り下げてんの?
559 名前:デフォルトの名無しさん [2006/06/26(月) 21:03:39 ] >>558 else と if がどこに懸かっているのかが分かりにくいから。
560 名前:デフォルトの名無しさん [2006/06/26(月) 21:29:37 ] 初心者へ上司からの指令です。 C言語を使って「愛していますか?」って表示させるプログラムを組んでみよ。 さらに、YESとNOの選択を用意して YESを選択すれば「もちろん!」 NOを選択すれば「なわけねーだろ!」 って表示させるプログラムを組んでみよ。
561 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 22:05:23 ] >>559 いつか、ひと目で解るようになれるといいですね。
562 名前:デフォルトの名無しさん [2006/06/26(月) 23:00:16 ] >>560 文字列の受け取り方が分かりません('A`) int main(void) { char yn; do { printf("愛していますか?"); printf("(y/n) > "); scanf("%c", &yn); while (getchar() != '\n') { } if (yn == 'y') { printf("もちろん!\n"); break; } else if (yn == 'n') { printf("なわけねーだろ!\n"); break; } else { printf("yかnを入力してください。\n"); } } while (!(yn == 'y' || yn == 'n')); return 0; }
563 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:09:09 ] 534です。 みなさん色々指示してもらって。助かります。 >>535 さんの発言どうり途中であきらめず、この世界で やっていこうと本気で思いました。本気で突っ走りたくなったんで 更に更に勉強します。
564 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:24:54 ] 思いとどまれよ。 人生負け組みになりたくなければ。
565 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:31:06 ] >>564 ひとそれぞれだよ。 俺は今年で35歳になるが、この業界に入って後悔したことはただの一度も無い。 負け犬だと思ったこともないし。客観的に見れば社会的ステータスは低いんだろうけどね。
566 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:32:18 ] 質問なんですが scanfとgetsこの二つは なにが違うのですか?? 初心者ですいません
567 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:36:27 ] ゲッツは文字列を受け取る スキャンエフも文字列とか受け取れるがゲッツの方が使い勝手がよいと自分なりに勝手に拝借して候
568 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:52:53 ] scanfはスペースがあるとそこで区切られるよね。 ところでgetsって ゲッツ?ゲットエス?
569 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:16:44 ] getStringの略だからゲットエスだろ。 getsは文字列(string)を受け取るだけ。 scanfは書式指定(Format)できるから、文字列じゃなくて数値とか いろいろ入力できる。 ま、本当はバッファオーバーランを防ぐためにもfgetsを使う べきだと思うが。
570 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:33:45 ] >>568 区切られずに読ませる方法もある。
571 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:45:55 ] >>566 むしろ同じ所などない。 全てにおいて異なる。
572 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:51:58 ] >>566 です 教えてくれた人ありがとうございます。 勉強になりました
573 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 16:32:42 ] opendirはNo errorなのに readdirでBad addressって言われるのってどういう場合が考えられる? 環境はWindowsのMingwです。
574 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 18:58:59 ] 単に終端に達したのを勘違いしたとか
575 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 10:50:19 ] ん〜?ファイルはあるんだけどなぁ。でもそれくらいしかあり得ないか・・・。解答どうもでした。
576 名前:デフォルトの名無しさん [2006/06/28(水) 23:27:59 ] 文字列のなかで特殊文字(%や”など)が入っているかをチェック するときどのようにすればよろしいでしょうか。 目的はSQLでエラーになるような特殊文字を検索時の値として渡さないようにしたい
577 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:44:41 ] >>576 一文字づつチェックすればいいだろ。 それより、そういう文字は普通、エスケープして渡すべきだと思うよ。
578 名前:デフォルトの名無しさん [2006/06/28(水) 23:50:36 ] エスケープして渡すべきとは具体的にどうすればいいいのですか。
579 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:52:51 ] >>576 つ[strcspn]
580 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:54:35 ] SQL エスケープでぐぐれ メタ文字の意味を消失させる事 例えばCの文字列定数なら"\\"みたいな
581 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:55:29 ] >>578 そのSQLの仕様見れ
582 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 10:03:59 ] Visual C++ 6.0上で実行すると、「Press any key to continue」が最後に出るのに、 直接実行すると、「Press any key to continue」が出ずに すぐに終わってしまいます。どうすれば、 直接実行したときに、「Press any key to continue」が出るようにできるのでしょうか?
583 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 10:42:11 BE:15528724-#] main関数の最後に puts("Press any key to continue.");getch(); と書いておく。
584 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 16:56:59 ] >>582 末尾に system("PAUSE");
585 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 16:59:05 ] >>582 コマンドプロンプトを立ち上げて 実行プログラムがある場所に移動してから実行するとか
586 名前:デフォルトの名無しさん [2006/06/29(木) 20:19:49 ] コマンドプロンプト上でカーソル位置を自由に設定する方法を教えてください。 メニュー画面を作って、メニュー番号を入力させるプログラムを作りたいの ですが、メニュー画面を表示させることはできるのですが、 画面上の真ん中あたりに、メニュー番号を入力させるところを作りたいのですが、 そこに、カーソルをもってくるにはどうしたらいいですか? お願いします。
587 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 20:48:22 ] コンソールAPI でぐぐる。
588 名前:586 mailto:sage [2006/06/29(木) 21:01:06 ] >>587 ありがとう!!
589 名前:586 [2006/06/29(木) 22:12:54 ] ごめんなさい、やっぱわかんなかった。 VCじゃなくって、まったくのc言語だけでカーソル移動とかさせたいのだけど、 windows.hとか使わないでやる方法教えてください。
590 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 22:17:07 ] >>589 ない。 そもそも、標準Cにコンソールとか言う概念自体がない。
591 名前:586 mailto:sage [2006/06/29(木) 22:21:42 ] >>590 そうなのか、、ありがと
592 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 01:03:38 ] すげぇなぁ。 >メニュー画面を作って、 >メニュー番号を入力させるプログラムを作りたいのですが、 >メニュー画面を表示させることはできるのですが、 >画面上の真ん中あたりに、 >メニュー番号を入力させるところを作りたいのですが、 >そこに、 >カーソルをもってくるにはどうしたらいいですか? なげぇ文だぜ。 きっとプログラムもmain()で冗長に書いているのだろう。
593 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 16:42:41 ] 文字列の部分コピーをやりたいです。 先頭から n 文字目までのコピーなら strncpy(*char, *const char, int); で実現できますが、 n 文字目から最後までのコピーは、char配列の1成分ずつfor文等でコピーしないといけないのでしょうか?
594 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 17:43:09 ] >>593 strcpy(dst, src+n);
595 名前:593 mailto:sage [2006/06/30(金) 18:38:32 ] >>594 できました。ありがとうございます。 このような使い方が出来るとは・・・覚えておきます。
596 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 19:05:37 ] >>595 ポインタとヌル終端文字列の基本テクです
597 名前:デフォルトの名無しさん [2006/06/30(金) 22:56:30 ] do-while文で、整数を入力して、0になったらおわりという文はどうしたらいいのですか?最近プログラムの勉強始めたばかりで申し訳ありません
598 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 23:19:56 ] >>597 適当に答えてみる #include <stdio.h> #include <stdlib.h> int main(void) { int num; char tmp[256]; do{ num=atoi(gets(tmp)); }while(num!=0); return 0; }
599 名前:582 mailto:sage [2006/07/01(土) 00:25:26 ] >>583 ,584,585 ありがとうございます。system("PAUSE");を利用することにしました。 >>597 #include <stdio.h> int main(){ int n; do{ scanf("%d",&n) if(n<1) printf("1以上の整数を代入してください!"); }while(n<1); do{ n--; }while(n!=0); return(0); } 実行してないからバグあるかもしらん。
600 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 01:04:31 ] 598、599さん、素早い返答ありがとうございます。実は猫でもわかるシリーズの本にあった例で、do〜while(n)で終わってて理解できなかったんです。初学者ゆえこれからも質問しますが、よろしくお願いいたしますm(__)m。
601 名前:デフォルトの名無しさん [2006/07/02(日) 13:57:54 ] double a=123456.6789 b=-12345.6789 printf("a=%10.4f b=%10.4f\n",a,b); printf("a=%7.4f b=%7.4f\n"),a,b); の結果が両方とも a=123456.6789 b=-12345.6789になるのはどうしてでしょうか?
602 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/02(日) 14:07:24 ] >>601 %10.4fは、浮動小数の「小数点以上」ではなく「全体の幅」を10文字で表すと言う意味。 もちろん小数点以上の桁数が足りない場合は自動的に補われる。 小数点以下の「4」の部分は、小数点以下に使う桁数の指定。 どっちも7文字でも10文字でも表しきれないので11文字に拡張されて同じ表示になる。
603 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 14:15:07 ] >>601 pc8.2ch.net/test/read.cgi/tech/1148993760/671
604 名前:デフォルトの名無しさん [2006/07/02(日) 14:15:33 ] >>602 よくわかりました。ありがとうございます。
605 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 14:30:09 ] 目がおかしくなったかなぁ。 >601の後者はコンパイルさえ通らないし、二番目の%10.4fの結果は12桁になるようにしか見えない。
606 名前:デフォルトの名無しさん [2006/07/02(日) 16:02:02 ] Boland C++ Compiler 5.5でアプリケーションプログラムをコンパイルする方法を 教えてください。 パラメータ 'hWnd'は一度も使用されない パラメータ 'hPrevInstance'は一度も使用されない パラメータ 'lpCmdLine'は一度も使用されない といった警告はどうしたら消えるのでしょうか?
607 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/02(日) 16:09:20 ] int WINAPI WinMain( HINSTANCE /* hInstance */ , HINSTANCE /* hPrevInstance */ , LPSTR /* lpCmdLine */ , int /* iCmdShow */ ) { // ほげほげ }
608 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 16:36:34 ] その気持ちの悪いカンマの位置はどんなメリットがあるんだ? たまに見かけるんだが。
609 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 17:50:20 ] Borland Developer Studio 2006 No.06 pc8.2ch.net/test/read.cgi/tech/1151562315/l50 int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int, ) { // ほげほげ }; ってやっちまって、コンパイルエラー出て悩むのを防ぐ馬鹿除けでは?
610 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:10:34 ] 俺ならint WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int)って1行に書く。
611 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:11:34 ] 一応言っておくと>>607-610 のように仮引数名を省略できるのはC++だけで、Cではできない。
612 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:40:04 ] あれ? C99でできなかったっけ?
613 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:47:37 ] nに入力した数字の数だけ$を表示するプログラムを作ったんですが 数字を入力するとなんか沢山$が出てきちゃいます。 改善方法はありませんか。よろしくお願いします。 #include <stdio.h> int main(void){ int a; char c; while(1){ printf("C="); scanf("%c",&c); if(c==0) break; if((c <= 'A' && c <= 'Z') || (c <= 'a' && c <= 'z')){ printf("英数字ですぅ\n"); continue; } else{ for(a=1;a<=c;a++) printf("$"); } } }
614 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 19:58:25 ] >>613 ・scanf()の戻り値をチェックしないとcの値が有効かどうか判らない。 ・cには文字が入っている。それは数値ではないので0と比較する意味が殆どない。 ・同じ理由で、$の数は文字コードの値に依存してしまう。 やりたいことがよく判らんが、入力と処理を分けて考えた方がいいんじゃないか?
615 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 20:54:59 ] cを入力 ↓ 英字か?no→→→数字か?no→→→→→それ以外 yes↓ yes↓ ↓ 上に戻る cの数だけ$を表示 終了
616 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:01:46 ] 上のようなプログラムを作りたかったんですが 10進数型で入力にして if((c <= 'A' && c <= 'Z') || (c <= 'a' && c <= 'z')){ printf("英数字ですぅ\n"); else if((c <= 0){ for(a=1;a<=c;a++) printf("$"); } else break; このようにしても英字を入力したらダメですし・・・。 上のようなプログラムを作るのは無理ですか。
617 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:05:30 ] >>616 つ isalpha(), isdigit()
618 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:05:51 ] >>616 >>616 読め
619 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:13:22 ] cが0以下ってのはどういう事よ
620 名前:デフォルトの名無しさん [2006/07/02(日) 21:44:18 ] signed char であれば、ASCII範囲外を除外しているといえなくも無い。
621 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:48:38 ] ASCII範囲内を除外しているように見えるが...
622 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 22:17:10 ] #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { // ここから入力 char buf[200]; if (fgets(buf, sizeof(buf), stdin) == NULL) { // 入力終端or異常 } char * ptr; long foo = strtol(buf, & ptr, 10); if (ptr[0] != '\0') { // 数字以外の入力 } // ここから文字処理 for (unsigned ic = 0; ic < foo; ++ic) { putchar('$'); } return 0; }
623 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 22:40:48 ] 見たことのない文字がいっぱい・・・。 c言語って難しいですね。 あと、616は間違いだらけでした・・・。 皆さんありがございました。皆さんが言ってることが理解できるようにもっと勉強します。
624 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 22:45:12 ] >見たことのない文字がいっぱい・・・。 確かにそれでは文字コードの処理は難しいだろう …とかいうツッコミは置いといて、 ガンガレ。
625 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 22:55:52 ] >>622 改行を除去するか、'\0' || '\n'で判定しないと、 常に数字以外と判定されるよ。
626 名前:622 mailto:sage [2006/07/02(日) 23:36:30 ] あ、いけね、忘れてた。 >>625 THX! こんなもんかな。 #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char buf[200]; if (fgets(buf, sizeof(buf), stdin) == NULL) { printf("No input.\n"); return 0; } char * ptr = strchr(buf, '\n'); if (ptr) { * ptr = '\0'; } if (strlen(buf) == 0) { printf("Empty input.\n"); return 0; } long foo = strtol(buf, & ptr, 10); if (ptr[0] != '\0') { printf("Not a number.\n"); return 0; } for (unsigned ic = 0; ic < foo; ++ic) { putchar('$'); } return 0; }
627 名前:デフォルトの名無しさん [2006/07/02(日) 23:36:32 ] 初歩的な質問ですみません。 main関数とは別のファイルに作ったユーザー定義関数を 呼び出すのはどうしたらいいですか? #includeで取り込めばいいのでしょうか? そのときは、やっぱり関数のプロトタイプ宣言は必要ですか?
628 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:37:57 ] extern付けて宣言する必要がある
629 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:38:16 BE:314515679-#] >>627 環境は?
630 名前:デフォルトの名無しさん [2006/07/02(日) 23:39:01 ] >>629 WindowsXPです
631 名前:デフォルトの名無しさん [2006/07/02(日) 23:42:36 BE:239631168-#] >>630 VCとかなら、プロジェクトに別ファイルを追加すればいいよ。 コマンドラインなら、引数で、mainのファイルと、別のファイルを渡せば勝手にリンクされる。
632 名前:デフォルトの名無しさん [2006/07/02(日) 23:44:39 ] すごく初歩的なんですが c言語を学校で習ってるんですが 家のPCでソース組むにはどうしたらいいでしょうか?
633 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:46:01 ] 答え:先生に聞く はい次の方どうぞー
634 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:47:57 BE:359446098-#] >>632 メモ帳
635 名前:デフォルトの名無しさん [2006/07/02(日) 23:48:54 ] コンパイラがどれがいいのかわからなんです・・・・
636 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/02(日) 23:49:08 ] コンパイルまでやるなら Visual C++ Express
637 名前:デフォルトの名無しさん [2006/07/02(日) 23:52:17 ] 学校じゃコマンドプロンプトでlcc ソース名でコンパイルできるんですが
638 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/02(日) 23:55:23 ] Visual C++ Expressならコマンドプロンプトから cl ソース名 でおk
639 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:59:08 ] >>632 コマンドプロンプトでnotepad[Enter]だ。
640 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:59:45 ] ttp://www.borland.com/jp/products/cbuilder/freecompiler.html ttp://www.vector.co.jp/soft/win95/prog/se141451.html VC++ Expはダウソに時間が掛かるから、今すぐちゃちゃっとやるならこっつで
641 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/03(月) 00:05:42 ] lcc-win32も自分で環境変数通せばコマンドラインで使えそうだけどな
642 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 01:23:42 ] >>637 lccと言えば、LSI C-86のような気がする。 準備(インストール)はなれないと面倒かもしれないが、学校と同じというのは利点かもしれない。
643 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 02:02:18 ] 4つ程度なら、int WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int)って1行でもいいけど、世の中にはもっといっぱい受け渡す関数もあるよ。 今更、lccって気もするなあ。 実務経験的に、gccかVCのインスコと環境構築方法も学習すべき。
644 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 07:34:30 ] lccと言ってもLSI-Cではないと思うけどね。 授業でLSI-C使っているならそれはそれで、よっぽど阿呆で楽しいが。
645 名前:仕様書無しさん [2006/07/03(月) 13:16:25 ] 配列でhoge[i*j]と*(hoge+i*j)はどちらがいいのでしょうか? メリットなどがあれば教えてください 見やすいのはhoge[i*j]なのでこっちで書くほうが多いのですが
646 名前:デフォルトの名無しさん [2006/07/03(月) 13:34:54 ] >>645 a[i] は *(a + i) の略記法なんだからコンパイラにとってはどっちでも同じ。 見やすい方で書けばいい。
647 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 15:55:19 ] pow()や、malloc()は重い関数と聞いたのですが、 ではclock()は重い関数なのでしょうか。 というか、重い関数というのはどこでどうやって知るのでしょうか?
648 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 15:58:51 ] >>647 OSのソースを読むとか実際に測定してみるとか。
649 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 16:06:47 ] >>648 ということは重いかどうかというのは環境依存なんですね。 分かりました。どうもありがとうございます。
650 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 18:46:45 ] >>647 >というか、重い関数というのはどこでどうやって知るのでしょうか? というか、重い関数というのは何を基準に決めるのでしょうか?
651 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 19:14:34 ] 主観
652 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 21:21:28 ] 相対的なもんじゃね。
653 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 22:04:21 ] 他に手段があるならそれと較べて重い(≒遅い)か判断すればいいんじゃない? pow()はpow(5, 2)と5*5を較べれば一目瞭然だし、malloc()の代わりにC99の可変長配列を使うとか、 malloc(100)を1万回の代わりにmalloc(100 * 10000)すればずっと早くなるわけだし。
654 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 23:06:35 ] 各辺が全て500以下であるようなピタゴラスの三整数を全て求めよ。 ただし、三重にネストしたforループを使う事。 #include<studio.h> main() { int x,y,z; for( z = 1, z <= 500 , z++ ){ for( x = 1, x <= 500 , x++ ){ for( y = 1, y <= 500 , y++){ if( pow(z,2) == pow(x,2) + pow(y,2 )) printf("%dの二乗は%dと%dの二乗の和に等しい\n",z,x,y);}}} return0; } 上記で合ってますか?
655 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 23:15:42 ] 宿題スレで会おう!
656 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 23:21:42 ] >>655 スマソ サンクス
657 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 01:57:58 ] ちょっと質問です。 a , b ? c , d : e , f; は a , (b ? (c , d) : e) , f; と同じでしょうか? あと、 a = b ? c = d : e = f; は a = (b ? (c = d) : (e = f)); ですか? どうも3項演算子の優先順位が今ひとつ…。 括弧つけろってのは別の話ということで、 よろしくお願いします。
658 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 02:11:37 ] www.google.co.jp/search?q=%E6%BC%94%E7%AE%97%E5%AD%90+%E5%84%AA%E5%85%88%E9%A0%86%E4%BD%8D で、その式はコンパイル通るのか?
659 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 09:13:57 ] >>658 VC6で試したけどコンパイルは通りました。 たとえば条件演算子と、代入演算子やカンマ演算子は、条件演算子の方が優先順位の方が高いじゃないですか。 なら、そのまま解釈すると a = b ? c = d : e = f; は a = (b ? c) = (d : e) = f; a , b ? c , d : e , f; は a , (b ? c) , (d : e) , f; こうなっちゃいそうだけどそれじゃあ本当にコンパイルが通らないし、それで聞いてみたんです。 a , b ? c , d : e , f; これは、 (a , b) ? (c , d) : (e , f); こう括弧でくくってもコンパイル上は問題になりませんが、優先順位としては明らかにカンマの方が高くなっているから ありえない。実際動作もそうなってはいないようです。 で、演算子を解釈していくときのプロセスで、3項演算子だけは二項演算子とは違った特異な処理をしているんしょうか? ちょっと入門の質問じゃないかも知れないですが、どうも自分の考え方が理解の域に達していないので、初心者とし て質問させていただきました。 グーグル先生以外の人間の達人の方、出来ましたら演算子の解釈順序なんかをご教示くださいませんでしょうか。 よろしくお願い致します。
660 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 09:28:04 ] >>659 a = b ? c = d : e = f; は a = (b ? (c = d) : e) = f; a , b ? c , d : e , f; は a , (b ? (c , d) : e) , f; だ。 ? と : の間は分離なんかできるわけがないから、 ここは常に ? ... : は ? (...) : と同じになる。
661 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 10:12:54 ] >>660 どうもありがとうございます。ただ、まだちょっと納得いってません。aを除いて、 b ? c = d : e = f; これはご教示に従えば (b ? c = d : e) = f; こうなりますよね? ここで、bが偽なら 最初の括弧の中は (e) となって、 e = f が実行されますが、 b が真のとき、(c) = f が実行されないのでしょうか? (b ? c = d : e) = f; ↓ (c = d) = f; ↓ (c) = f; bが真のとき、実際に挙動を見てみると、 b ? (c = d) : (e = f); こうなっているように思えるのです。なので、 a = b ? c = d : e = f; このケースでも、bが真か偽かによって、 a の値が d か f のどちらかになります。
662 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 10:13:39 ] 改行が多いみたいで、上の続きです。 a = (b ? (c = d) : e) = f; a = b ? c = d : e = f; これはトレースすると、挙動が違うんです。もし手軽に試せる状況なら、 追試していただけないでしょうか? お手数ですが、よろしくお願い致します。
663 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 10:33:12 ] (b ? c = d : e) = f; ってコンパイル通るか? 三項演算子は左辺に置けないと思うんだけど。
664 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 11:11:47 ] ちと勘違いしてました。VC6でWinMainで試してました。 C++だと変数の参照を返すからコンパイル通るんだ…。 ここはC言語スレでしたかorz たしかにCだと b ? c = d : e = f; これは書けませんね。 ただ、演算子の優先順位というに点だけ着目すると、Cでは (b ? (c = d) : e) = f; こうなって左辺値に不適合でエラー C++だと b ? (c = d) : (e = f) このように実動作しているようです。直感的にはC++流の解釈の方が 素直な気がしますが、三項演算子の コロン以降だけを特別処理している 気がしてならない…。 スレ汚し失礼しました。C++スレに行って来ます。
665 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 11:13:34 ] 言語の優先順位に頼った可読性の悪いソース書くなよ。 括弧使え括弧。
666 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 11:24:20 ] >>665 ですので、最初に書いたとおりに、括弧をつけるのは別の話です。 コンパイラの式処理がどうなっているのか勉強しているので。
667 名前:初心者 [2006/07/06(木) 10:08:35 ] 初心者レスですよね?!心優しい皆さんよろしく!! 数列の長さを設定しました。 キーボードで文字を入力します。 入力した文字が設定した長さを超えるとごみが出て 次の入力を影響します。 設定した長さ以後のごみをメモリからとる方法は??
668 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 12:47:59 ] むり
669 名前:デフォルトの名無しさん [2006/07/06(木) 13:05:30 ] FreeBSDやMac OS Xならば、 fpurge(stdin) で入力バッファに入っている文字を落とせる。 これが無いとちょっと面倒だけど、とりあえず改行文字まで 落としたかったら while(getchar() != '¥n'); でいいんじゃない?
670 名前:初心者 [2006/07/06(木) 13:06:42 ] 何が無理?
671 名前:初心者 [2006/07/06(木) 13:13:37 ] >>669 御免初心者なんで、FreeBSD<<わからない。 例として: #include <stdio.h> int main(void) { char gg[22],*gu; char hh[33],*jj; printf("数列入れて>\n"); fgets(gg,22,gu); printf("数列いれ>\n"); fgets(hh,33,jj); getc(stdin); } 数列を多い目に入れると、次の入力ができない。
672 名前:もはもは [2006/07/06(木) 13:14:46 ] HELPです!!!!! 1次元配列に 34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、 これらの平均値を求めよ。 さらに int eval[3]という1次元配列を用意して eval[0] には0〜60の数の個数 eval[1]には61〜80の数の個数 eval[2]には81〜100の数の個数 を格納するようにし、それらを出力するプログラムを作成せよ。 よろしくお願いします。
673 名前:デフォルトの名無しさん [2006/07/06(木) 13:29:23 ] >>671 どうゆう入力を想定してるの?
674 名前:デフォルトの名無しさん [2006/07/06(木) 13:32:11 ] >>671 fgets(標準ライブラリのものと仮定)の使い方が間違ってる。 標準入力から入力して欲しいのなら、 fgets(gg, 22, stdin); fgets(hh, 33, stdin); のように書かなくては。
675 名前:初心者 [2006/07/06(木) 13:54:51 ] >>673 プログラムの一部なの。(全体は汚いプログラムなので見せない><) まぁ、かんたんに言えば、 キーボードから入れた文字を好きな所まで取り オーバーしたものは消す方法。 神様、私の願いを!!!
676 名前:デフォルトの名無しさん [2006/07/06(木) 14:09:56 ] 何が言いたいのかよくわからん。 Cより前に日本語をちゃんと勉強しろよ。
677 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 14:17:55 ] 留学生か?>初心者
678 名前:初心者 [2006/07/06(木) 14:22:39 ] 勉強中です><(怒らないで); (本当に外国人です!!!日本語下手で御免なさい><); 会社からcを無理やり勉強させました。 お願いします。
679 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 14:27:35 ] english ok
680 名前:デフォルトの名無しさん [2006/07/06(木) 14:29:31 ] ・・・変数宣言って何・・・?
681 名前:初心者 [2006/07/06(木) 14:29:39 ] むり!韓国語なら>>
682 名前:初心者 [2006/07/06(木) 14:36:10 ] #include <stdio.h> int main(void) { char gg[22],stdin; char hh[33],stdin; printf("数列入れて>\n");//ここに20文字以上入れるとおかしくなる fgets(gg,22,stdin); printf("数列いれ>\n"); fgets(hh,33,stdin); getc(stdin); }
683 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 14:51:10 ] >>682 おかしくなるのは仕様です。面倒ですが、次のように大きなバッファを用意して、 そこに一旦とりこむ必要があります。配列の大きさよりひとつ少なくしか使えないのは、 最後にヌル文字を入れる必要があるからです。 #include <stdio.h> #include <string.h> int main(void) { char buf[1024]; char gg[22]; char hh[33]; printf("数列入れて>\n"); fgets(buf, sizeof buf, stdin); buf[strlen(buf) - 1] = '\0'; memset(gg, '\0', sizeof gg); strncpy(gg, buf, sizeof gg - 1); printf("数列いれ>\n"); fgets(buf, sizeof buf, stdin); buf[strlen(buf) - 1] = '\0'; memset(hh, '\0', sizeof hh); strncpy(hh, buf, sizeof hh - 1); }
684 名前:初心者 [2006/07/06(木) 15:09:57 ] >>683 先に入れる所用意する事までは分かりました。 でもこれも限界がある(入力がbufの1024字超えれば)と思います。 (他にも使い所あるので><) butに無限入力できる方法ないかしら?? (どんな入力も対応できる方法) よろしくおねがいします。
685 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 15:13:22 ] ハードウェアのリソースが有限な以上 どんな入力にも対応するなんてのは無理。 そのために仕様が存在する。
686 名前:初心者 [2006/07/06(木) 15:20:06 ] >>685 そうなんですか!!!! 本当にありがとうございました。 はんぱな日本語で迷惑かけました>>礼>>
687 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 20:02:38 ] CとJavaで、初心者が学びやすいのはどちらでしょうか? 最初に学ぶのはどちらがいいのでしょう…? またCとJavaは数学的な要素(計算など)がどちらも必要になってくるのでしょうか。 返信お願い致します。
688 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 20:11:10 ] >>687 将来プログラミングで生計を立てたいのなら、まずCから。もちろんその後Javaもやる。 趣味でやるならどちらでも。Javaオンリーでもかまわない。
689 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 20:26:42 ] >>688 そうですか。 計算などが出てきてしまうと辛いのですが、両者とも計算式を 使ったりするのですか?
690 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 20:35:08 ] >>689 プログラミングでどのようなものをやるのかによる。 が、言語そのものの学習中にはほとんど出てこない。 数学的センスがあったほうが有利な場面があるかもしれないが。
691 名前:デフォルトの名無しさん [2006/07/06(木) 20:52:14 ] >>690 わかりました。ありがとうございます。
692 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 21:03:06 ] でも1 + 1やx + yもいわゆる計算式ではないだろうか。
693 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 21:05:18 ] >>692 ええ、計算式です。間違いなく計算をする数式です。
694 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 21:09:13 ] >>692 、>>693 それはCとJavaの両方とも使うのですか? Cは関数を計算し求めると聞いたのですが、Javaもなのでしょうか。
695 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 21:12:42 ] >>694 その書き込み、本気なのか? だったら、プログラミングなど勉強するだけ無駄だからやめとけ。
696 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 21:18:31 ] 数学がさっぱりでもいいが、算数は必須。
697 名前:デフォルトの名無しさん [2006/07/06(木) 21:27:52 ] >>695 私情でやらざるを得ない状況になりましたので、今回[入門]とあったこちらで 質問致しました。 レス参考にさせて頂きます。ありがとうございました。
698 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 21:31:17 ] まずやってみたら?プログラミングがどんなことするか分かってない気がする
699 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 21:49:20 ] ここにもチョンが湧いてるのか。 ミサイル発射の謝罪と補償を要求する!
700 名前:デフォルトの名無しさん [2006/07/06(木) 22:06:02 ] ここの回答者の人たちは参考書は何を読んで覚えたんですか? 0から始めた参考書と、それなりにわかってから読んだ参考書を教えてください
701 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 22:17:54 ] 言語としてのCに限るなら林のビギナー編だけしか読まなかったな。 もう後輩に売っちまった。
702 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 00:42:13 ] >>699 お前ひとりに直撃すりゃあ良かったのにな。
703 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 11:30:11 ] 在日は速く半島に帰れ! また有事の際に日本で儲けていたと半島のチョンに蔑まれ続けるぞ。
704 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 11:33:22 ] >>700 0からK&Rの第一版。 20年ぐらい前に覚えたのだが、それ以上にまともに書いてある本はなかった。 その後第二版も読んだ。
705 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 11:41:42 ] >>703 憂さ晴らしは妥当な板でどーぞ
706 名前:初心者 [2006/07/07(金) 12:01:46 ] >>699 話す事あるなら他のレスでどうぞ、 (ちゃんと見るから!!) このレスを汚くするな!!
707 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 16:37:53 ] PGの雇用が奪われてるのは、不法滞在し異常に安い賃金で働くチョンのせい。
708 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 18:55:02 ] >>706 いちいち反応するな。流せ オレモナー
709 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 23:24:53 ] >>706 の「レス」に反応
710 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 23:39:50 ] ごめんね、スレとレスの違いも分からなくて ごめんね
711 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 23:44:17 ] ごめんね、ごめんね、ごめんねごめんね、 ごめんねごめんね、ごめんね、ごめんね、 ごめんね、ごめんね、ごめんねごめんね、 ごめんねごめんしねごめんね、ごめんね、 ごめんね、ごめんね、ごめんね、ごめんね ごめんねごめんね、ごめんね、ごめんね、
712 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 10:29:13 ] チョン氏ね!
713 名前:デフォルトの名無しさん [2006/07/09(日) 00:22:08 ] エンターキーが押されたかどうかの判定の仕方と、 スペースキーが押されたときの判定の仕方を教えてください
714 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 00:29:35 ] 環境に依存するからもうちょっと情報だして
715 名前:713 [2006/07/09(日) 00:37:55 ] 標準c言語で、コマンドプロプト上で動かすコンソールアプリです。 OSはWindowsXPです。よろしくお願いします
716 名前:デフォルトの名無しさん [2006/07/09(日) 03:15:58 ] VC++4.0でXP用のソフトを組んでます。 操作ミスなどで警告音を鳴らしたいのですが、 MessageBeep()関数だと単純な音しか鳴らせず、おもしろくありません。 かといって、警告音のためにWAV作ったりするのも大変なので、 少しだけシャレた警告音を簡単に慣らす方法がありませんか?
717 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 03:24:07 ] Beep()を沢山つかって音楽でも奏でてはいかが? 10ミリ秒ごとにアルペジオさせれば和音っぽく聞こえて 周りをちょっと驚かすぐらいはできるよ。
718 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 03:36:44 ] 適当に答えてみる。 >>713 標準c言語だと、getchar()かな? でも、エンターが押されないと、stdinに入ってこない。 MS-Cだと、getch()が1文字ずつとれる。(エコーなし) エコーしたいなら、getche()。 <conio.h>に入っている。
719 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 04:20:51 ] CでGUIアプリ作る方法教えてください
720 名前:デフォルトの名無しさん [2006/07/09(日) 05:49:53 ] Cでかいたプログラムから命令(メッセージ?)送ると グラフィックだけ出力してくれるサーバっぽいアプリケーション ってないですか?
721 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 05:57:51 ] X?
722 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 05:58:37 ] あ、「Windows」の方が適切かな
723 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 06:12:09 ] 適当に答えてみる。 >>720 system("start C:\\temp\\test.gif"); なんてやれば、windowsならgif拡張子に関連付けしてるアプリを よんでくれるはず。(.bmpとか.jpgでもOK)
724 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 11:38:34 ] OpenGLとかActiveXの記述だけで描画してくれるアプリが欲しいってこと? 普通は鯖といちいち通信するのが面倒だから自前でライブラリ抱えます。 少しだけシャレた警告音はwavでも鳴らさないと無理な悪寒。 どんなのが少しだけシャレた警告音なのか録音してウpしてみてくれ。 常に入力を監視する。 スペースかリターンが押されたのを判定すればいい。 普通はキー入力があったらイベント飛んで来るから、入力に対応した処理を記述しておけばOSが実行してくれる。
725 名前:713 mailto:sage [2006/07/09(日) 11:39:33 ] 適当な回答ありがとうございます。参考になりました
726 名前:デフォルトの名無しさん [2006/07/09(日) 11:56:05 ] MS Visual C++ NET BorLand C++ Builder6 てどちらが使いやすい?
727 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 22:16:51 ] 両方使ってみてそれぞれにスレがあるから感想でもカキコしてみたら? ムカつくほうは使わないほうがいいと思う。ストレス感じるだけ。
728 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 23:29:29 ] >>726 単なる数値計算やら簡単なプログラム(アルゴリズムの勉強)程度なら Borland C++ 5.5が手軽で良いYO!
729 名前:716 [2006/07/10(月) 01:26:04 ] >>717 10mS毎に? うーん、他にいい方法がなかったら試してみます(汗
730 名前:デフォルトの名無しさん [2006/07/10(月) 01:36:13 ] 質問です。 「'」という文字を配列に格納したいのですが、エラーが出てうまくいきません。 エラーは以下の3つです。 文字列定数は1文字か2文字でなければならない。 ,が必要。 文字列または文字定数が閉じていない。 宜しくお願いします。
731 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 01:41:01 ] ¥’
732 名前:デフォルトの名無しさん [2006/07/10(月) 03:17:38 ] >>731 ありがとうございます!
733 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 12:36:59 ] >>730-731 せめて半角で書いて欲しいとオモタ
734 名前:デフォルトの名無しさん [2006/07/10(月) 20:38:16 ] CHAR PTCHAR TCHAR WCHAR型の違いを教えてください
735 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 21:49:40 ] typedef char CHAR; typedef wchar_t WCHAR; #ifdef UNICODE_ typedef WCHAR TCHAR; #else typedef CHAR TCHAR; #endif typedef TCHAR *PTCHAR;
736 名前:726 [2006/07/10(月) 21:50:19 ] >> 728 サンクス
737 名前:デフォルトの名無しさん [2006/07/10(月) 21:58:42 ] putchar だけで文字コード 112、117等 を出力するプログラムを教えてください。
738 名前:734 [2006/07/10(月) 22:08:03 ] >>735 アリガ10
739 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:28:49 ] >>737 putchar(112)
740 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:58:26 ] そのまんまですな。
741 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 02:29:38 ] ワロタ
742 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 02:33:22 ] CでGUI? WindowsならWin32 LinuxならGTK+ どっちもCライブラリ
743 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 09:08:17 ] >>728 BorlandC++と一緒にTurboDebugger落として使ってみたら、 このデバッガって、キャラクタ画面ベースのUIなのな。 あまりに懐かしいスタイルにめまいがしたyo!
744 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 16:09:48 ] GUIのデバッカってメモリ喰うしデバッカに落ちた時点で表示できないと思う。
745 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 22:50:17 ] DLL内でmallocした物をexeからfreeしてはいけないと聞いた事があるのですが malloc以外のHeapCreateやHeapAlloc(GetProcessHeapとかなら問題ないのでしょうか?
746 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 23:12:42 ] >>745 確保するときと解放するときとで、同じヒープハンドルを用いれば問題ない。 けれどDLLでメモリを確保して、そこへのポインタをEXEに返すのだったら、 DLLはそのメモリを解放する関数も公開するのが一般的だと思う。
747 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 23:19:17 ] >>745 ちなみに前者がいけない理由が、ことなるメモリマネジメントルーチンを使っている 可能性があるから。VCのDebug/Releaseモードとか。
748 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 23:45:52 ] >>746-747 そのルーチン覗いてみるのも勉強になるかもしれませんね。 とりあえず一般的な方法でしてみたいと思います。 ありがとうございました。
749 名前:デフォルトの名無しさん [2006/07/12(水) 01:01:46 ] VC++なんですが、以下のように配列を定義しています。 signed short foge[]={ 0x0001, 0x7fff, 0x8000, 0xffff }; コンパイルするとマイナス値(0x8000と0xffff)で warning C4305: 'initializing' : 'const int ' から 'short ' へ切り詰めます。 というワーニングがでます。 C言語ではsigned 16bitを表す接尾子が無いようなんで、 キャストで回避するしか無いんでしょうか?
750 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 01:04:40 ] 素朴な疑問。 何故const signed shortにしないのだろう。 それはさておき、-0x8000, -0x0001ではダメ?
751 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 01:11:56 ] >>749 よくわからないけど、キャスト以外の方法で、警告消したいだけなら 0x8000 → -32768 0xFFFF → -1 とか、#pragma とかがあるよ。
752 名前:デフォルトの名無しさん mailto:age [2006/07/12(水) 01:26:04 ] すみません ファイルからの読み込みなのですが 改行がCR(0D)のみで書かれているテキストファイルから テキストモードでデータを読み込みたいのです fscanf(fp,"%d",&data1); のように書くと、だいたいはCRのみの改行も改行として読んでくれるのですが たまに改行をすっ飛ばして変な値を読んでしまいます 改行がCRのみのテキストファイルをうまく読み込む方法はありませんでしょうか
753 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 01:27:43 ] fgets()
754 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 10:47:28 ] >>752 だいたいうまくいくけど、たまに変になるって、違うところでバグってるんじゃないの?
755 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:17:19 ] 3.4E-38って 0.00000000000000000000000000000000000000034?
756 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:49:45 ] >>755 0.000000000000000000000000000000000000034
757 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 14:13:29 ] >>756 あ、ごめん、3のところが38番目になればいいのね。 じゃあfloat型って3.4E-38〜3.4E+38って書いてあるから 34000000000000000000000000000000000000〜0.000000000000000000000000000000000000034? でも有効桁7桁ってどういうこと?
758 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 14:42:48 ] >>757 >でも有効桁7桁ってどういうこと? 数学の時間寝てたのか それともまだ習ってないのか まあとにかくググれ。
759 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:01:17 ] ぐぐってもわからん float fe; fe=5e2; って書くと 500.000000 って出力されるけど、どこが7桁?
760 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:21:00 ] >>759 俺のところで実行したらこうなるよ。 #include <stdio.h> main() { float f = 1.0 / 3; double d = 1.0 / 3; printf("%.30f\n", f); printf("%.30f\n", d); return 0; } 結果 0.333333343267440795898437500000 0.333333333333333314829616256247
761 名前:デフォルトの名無しさん [2006/07/12(水) 15:22:11 ] グローバル変数を多用してしまうのですが、 変数を各関数で共有する方法ってグローバル変数以外に何かありますか?
762 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:31:49 ] >>757 3.4E-38 は 3.4 * 10の-38乗 だ。 有効桁数は扱える桁数。7桁なら 1.234567 とか 1.234567E+100 とか、 とにかく 7 桁は扱えるが 1.2345678 と書いても最後の 8 が扱えない。 >>759 どう出力されるかということと内部的に何桁保持されているかという ことは別の話。
763 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:35:45 ] >>760 いやそうなるのはわかるけど、 float型が3.4E-38〜3.4E+38で有効桁7桁ってどういう意味? float f = 1.0/3 printf("%f") だと 0.333333 で7桁まで出力されるって意味? 3.4E-38〜3.4E+38ってどういうこと? 出そうと思えば50桁以上出せるけど…
764 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:39:15 ] >>761 必要な変数は構造体のメンバにして その構造体へのポインタを受け渡しする。
765 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:39:28 ] >>762 どうも じゃあfloat型が3.4E-38〜3.4E+38っていうのは?
766 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:50:21 ] 普通に3.4*10^-38〜3.4*10^38でしょ? 3.400000*10^38のほうが正しいかな?
767 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:53:15 ] >>764 ありがとうございます、さっそくチャレンジしてみます
768 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:53:27 ] >>766 はあ・・・ でも10の50乗でも100乗でも入力できるし出力も出来るよ?
769 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:56:39 ] なんかよくわかんないけど、まあこれでも読んでよ。 「浮動小数点型と誤差」 ttp://www.kyoto-su.ac.jp/~yamada/programming/float.html
770 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:04:31 ] >>769 ああ…それよんだんだけど 1.175494 10-38 < float の絶対値 < 3.402823 10+38 って書いてあるよね。 私の本は 3.4E-38〜3.4E+38 って書いてあるよ。 それで、例えば、 float f=1000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000001; printf("%40.40f",f); って書いても 1000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000001; って表示されるよ。38超えてるよ?
771 名前:770 mailto:sage [2006/07/12(水) 16:07:09 ] あ、ちょっとコピペミスしたけど、気にしないで
772 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:11:00 ] >>770 コンパイラ何使ってるの?
773 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:11:58 ] floatよりdoubleの方が速いってよ
774 名前:770 mailto:sage [2006/07/12(水) 16:12:42 ] >>772 cygwinのgccだけど・・・
775 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:16:17 ] >>774 >>770 のソースを「全部」コピペしてみて。動かしてみるから。
776 名前:770 mailto:sage [2006/07/12(水) 16:20:30 ] >>775 え・・・でも770そのまんまだよ? #include <stdio.h> main(){ float f=1000000000000000000000000000000000000000.0000000000000000000000000000000000000001; printf("%40.40f\n",f); } 終わり。
777 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:22:13 ] >>776 うちでは"Inf"って表示されるけど・・・ gccのバージョンはいくつ?
778 名前:770 mailto:sage [2006/07/12(水) 16:24:22 ] gcc version 3.4.4 (cygming special) です。
779 名前:770 mailto:sage [2006/07/12(水) 16:26:21 ] コンパイラの問題なの?
780 名前:777 mailto:sage [2006/07/12(水) 16:30:09 ] >>778 おかしいな・・・。うちとまったく一緒のコンパイラなのに。 ちなみに printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); ってやってみて。 8って表示されるはずだから。これはその数値がdouble型のリテラルだって コンパイラが判断してることを示してる。それをfloat型に代入するときに 暗黙の型変換が行われるはずなんだけど・・・。 ってことで、俺はお手上げ。
781 名前:777 mailto:sage [2006/07/12(水) 16:30:42 ] あ、ちなみに"Inf"ってのはInfinityね。正の無限大。
782 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:34:30 ] >>770 そのソースでそのgccだと、警告が表示されると思うのだがそれをコピペして見給え。
783 名前:770 mailto:sage [2006/07/12(水) 16:38:20 ] >>777 printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); ってしたら core dump しました。 うちの環境がおかしい?WinXP Cygwin最新のものだけど… 入れなおすか…? どうもありがとうございました。うちがおかしいってことが分かったのでうれしいです。
784 名前:777 mailto:sage [2006/07/12(水) 16:39:20 ] >>782 -Wallでも出ない。
785 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:39:53 ] 釣りか? 壮大な釣りだったのか?
786 名前:770 mailto:sage [2006/07/12(水) 16:41:12 ] >>783 あ、いや、間違ってた printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); でちゃんと8って表示されました。 >>782 警告も何にも出ませんよ。普通にa.exeすると結果表示されます。
787 名前:777 mailto:sage [2006/07/12(水) 16:42:35 ] >>786 んじゃ、最後にuname -aした結果をコピペしてくれ。
788 名前:782 mailto:sage [2006/07/12(水) 16:46:07 ] >>770 >>777 警告出ないか? main()の戻り値の型がないと。漏れの端末だとこうなるのだが。 -- $ gcc --version ; gcc foo.c gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. foo.c:3: warning: return type defaults to `int' foo.c: In function `main': foo.c:6: warning: control reaches end of non-void function
789 名前:770 mailto:sage [2006/07/12(水) 16:47:14 ] う〜Cygwinコピペできないからつらい uname -a は CYGWIN_NT-5.1 ****** 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin です。名前は伏せ。珍しくもないけど
790 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:48:04 ] >警告も何にも出ませんよ。普通にa.exeすると結果表示されます。 make使ってて更新されたと認識されていないとか、違うところのa.exeが起動されているとか。 make使わず直接gccを動かしてみるとか、明示的にパスを指定してみるとかしてみたら?
791 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:49:54 ] 普通にcygwinをインストールすると所謂dos窓で動くから、 マウスで範囲選択して右クリックでコピペされると思うけどなぁ。
792 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:50:08 ] sizeof(float) が 8 だったりしたら…
793 名前:777 mailto:sage [2006/07/12(水) 16:51:56 ] >>788 あ、すまん、そこは警告出る。警告でないといったのは、4,5行目に関して。 手間かけさせてスマンかった。
794 名前:777 mailto:sage [2006/07/12(水) 16:53:26 ] >>789 うちより一つ新しいバージョンだな。ちなみにうちは、 CYGWIN_NT-5.1 MARS 1.5.18(0.132/4/2) 2005-07-02 20:30 i686 unknown unknown Cygwin 最新の1.5.20も怪しいところがあるみたいだから、しばらく更新はしないでおこうw
795 名前:770 mailto:sage [2006/07/12(水) 16:53:38 ] >>782 あ、範囲指定できたんだCygwinて・・・ gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. しかでません。makeつかってません。フォルダの中にa.exeもソースも一個しかありません。
796 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:56:04 ] 実行するときに ./a または ./a.exe でやってる?
797 名前:770 mailto:sage [2006/07/12(水) 16:56:57 ] >>796 やってますよ〜 そこまでバカではない・・・w
798 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:58:25 ] じゃあ sizeof(float) はいくつ? printf("%d\n", sizeof(float)); で出してみて。
799 名前:770 mailto:sage [2006/07/12(水) 17:01:15 ] 8ですた。
800 名前:782 mailto:sage [2006/07/12(水) 17:03:02 ] 漏れの方は同じだな。Win2Kだけど。 CYGWIN_NT-5.0 whee 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin コンパイラよりも疑うべきはライブラリか?
801 名前:782 mailto:sage [2006/07/12(水) 17:04:57 ] >>799 それが原因か…… #じゃぁなんでfloatが8バイト? 64ビットLinuxでも4バイトなのに……
802 名前:770 mailto:sage [2006/07/12(水) 17:09:16 ] >>801 やっぱおかしいんすね。環境作り直します。 Cygwin入れなおします。ちゃんと正規のルートで(学校の先輩からもらわずに)。 どうも失礼しました。
803 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 17:13:31 ] いやまぁ先輩から貰っても全然OKなんだが、オチを知りたいんだよなぁオチを・・・
804 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 17:14:13 ] はっ、その先輩がスーパーハカーだったというオチ!?
805 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 13:27:50 ] 自分でコンパイルしたのかな? >>804 gcc を自分でコンパイルできるとスーパーハカーなの? じゃあ俺も10年ぐらい前からスーパーハカーだったんだね。
806 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 13:38:59 ] 猫でもわかるC言語プログラミングって本を読んで勉強はじめたんだけ この本の説明めちゃくちゃ解り辛い・・・ まぁ単に俺が知識0ってこともあるんだろうけど、どの入門書籍もこんなもん?
807 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:12:46 BE:224654459-#] 猫でもわかるの書籍版は読んだことないけど、プログラムそのものが まったく初めてなら、入門書一冊読んだだけじゃなかなか難しいと思う。
808 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:15:29 ] どの本でも同じだけど、HelloWorldが動いているのを見て喜べるピュアな心の持ち主なら どんな本読んでも上達出来ます。
809 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:15:50 ] 猫以下なんじゃね?
810 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:31:58 ] プログラムそのものが難しいって言うより、説明が言葉不足だったり 説明なしでいきなり「ここはこうなりますね、ここはこうなるので」 みたいなところが多くて・・・ Cからはじめるのがそもそも間違いなんだろうか
811 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 17:53:08 ] >>810 まずはAから段階を踏まないと
812 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:32:39 ] >説明なしでいきなり「ここはこうなりますね、ここはこうなるので」 そういうのに一々疑問を持ってストレスを貯めるやつはプログラム書けないよ すべてそういうもんなんだと素直に覚えないと。 そもそもプログラミングの入門書って根幹に触れないからみんな説明不足といわれれば説明不足になる罠
813 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:44:26 ] 英語だって、なんでアルファベットなんだろうとか思い始めたらダメだよ。 挨拶はハローとか決まりきった定型パターンがあるからそう言うのは理屈無しに覚えるしか無い。 日本語でも、10年以上話して使っていて未だに表現方法とかの新発見がある様に、覚えたてでその言語の全てを理解するのは無理。 とりあえず義務教育の英語の教科書の様に、入門書を最後まで一通りやってみて、分からない所は他の書籍や先輩に訊くとかセミナーや研修にでも出るとかで補完していかないと。 自分でそう言う学習法が出来ない香具師は、金出してスクールに通ったほうがいいよ。
814 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:49:56 ] 心配しなくてもあとで「そういうことだったのか!」って気づくことになるから安心してその本をまずは読破すれ。
815 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 19:04:24 ] 理系が文章力カスなのはわかりきったことだろ
816 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 22:45:20 ] とりあえずは鵜呑み丸暗記にしておいて 必要が出てきたり気になったら自分で調べたりこういう場所とかで聞けばいいよ 入門書の中には一部間違ったことが書いてあるものもあるから 完全に鵜呑みってのもちょっとまずいことはまずいんだけどね まあ気にするな
817 名前:デフォルトの名無しさん [2006/07/14(金) 01:46:26 ] C++で7桁×7桁の計算プログラム組んでるんですが float使ったら小数点以降が表示されてあまり美しくない。 小数点以降を表示しない方法、教えてください。
818 名前:デフォルトの名無しさん [2006/07/14(金) 01:52:24 ] main() { Card deck[40]; int *face[] = {1,2,3,4,5,6,7,8,9,10}; char *suit[] = {"hart","daiya","kurab","superd"}; srand(time(NULL)); fillDeck(deck, face, suit); shuffle(deck); printf("baeojunnbisimasu"); return 0; } プログラミングの一部なんですが コンパイルが通りません int faceのところがだめらしいのですが何処が悪いんでしょうか? どなたか解る方おしえてください
819 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:54:23 ] >>817 整数型にcastして表示しろ
820 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:55:12 ] >>818 int *faceではなく、int face
821 名前:デフォルトの名無しさん [2006/07/14(金) 02:02:38 ] ごめん、castって何? #include <stdio.h> int main(void) { float alfa, beta, ganm; printf("7桁の整数を入力して下さい(1回目):"); scanf("%f",&alfa); printf("7桁の整数を入力して下さい(2回目):"); scanf("%f",&beta); printf("\n%f * %f = %f\n", alfa, beta, alfa * beta); }
822 名前:デフォルトの名無しさん [2006/07/14(金) 02:11:56 ] >>820 さん マジでありがとう^^ 通りました
823 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 03:31:14 ] %fではなく%gを使う習慣をつけよう。 #って話か?
824 名前:デフォルトの名無しさん [2006/07/14(金) 08:34:11 ] #include<stdio.h> int main(void) { int n,temp,m=0; FILE*fp1=fopen("2バイト文字.txt","r"); FILE*fp2=fopen("改行テスト.txt","w"); while((n=fgetc(fp1))!=EOF){ if(n=='\n'){ m=0; } else if(m==40){ fputc('\n',fp2);/*ここが上手くいかない模様*/ m=0; } fputc(n,fp2); m++; } fclose(fp1); fclose(fp2); printf("end\n"); return 0; }
825 名前:824 [2006/07/14(金) 08:37:11 ] 2バイト文字、日本語のテキストを行の文字数20で改行するようなプログラムを作りたいです。 例えば、行の文字数40のやつを、原稿用紙の形式に変換したい。 しかし、>>824 のやつだと、改行後の一文字目が変になってしまいます。 文字コードの問題なのかどうかすら分かりません。 ここが変だ、という場所の指摘をお願いします。
826 名前:824 [2006/07/14(金) 08:44:11 ] 失礼。 tempとprintf("end\n")は気にしないで……。
827 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 10:15:49 ] 超基本問題です。 main(){ int i; float f; double d; long l; char st[80]; printf("文字1文字,%%c,int,%&i="); scanf("%c",&i); printf("%%c,int,i=%c\n",i); printf("文字列,%%s,char,st="); scanf("%s",st); printf("%%s,char,st=%s\n",st); printf("文字列入力の時には&は不要\n"); printf("8進数%%o,int,%&i="); scanf("%o",&i); printf("%%o,int,i=%o\n",i); printf("%%d,int,i=%d\n",i); printf("10進数%%d,int,%&i="); scanf("%d",&i); printf("%%d,int,i=%d\n",i);
828 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 10:17:35 ] printf("16進数%%x,int,%&i="); scanf("%x",&i); printf("%%x,int,i=%x\n",i); printf("%%d,int,i=%d\n",i); printf("long型%%ld,long,%&l="); scanf("%ld",&l); printf("%%ld,long,l=%ld\n",l); printf("%%d,int,l=%d\n",l); printf("実数float型%%f,float,%&f="); scanf("%f",&f); printf("%%f,float,f=%f\n",f); printf("%%d,int,f=%d\n",f); printf("実数double型%%lf,double,%&d="); scanf("%lf",&d); printf("%%lf,double,d=%lf\n",d); printf("%%d,int,d=%d\n",d); } これやると、例えば 8進数%o,int,&i=70 とか入れると、iに7しか入ってくれなくて、0が次の10進数の処理に自動的に入っちゃうんだけど、なぜ?
829 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:01:09 ] 親から習う日本語が方言訛りで一部怪しかったりしても、使ってるうちに標準語の表現に気づいて修正できるものだよ。 もちろん最初から標準語で覚えられるような環境を探すのも手。 gcc方言とか、IA方言とか、VC方言とかウィンドウズ方言とかいくらでも環境依存の癖はある。
830 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:39:34 ] >>829 その直前の文字列の入力をコメントにしたらどうなる?
831 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 13:17:59 ] すいませんこのプログラムのどこがわるいかおしえてもらえないでしょうか うるう年の判定プログラムで #include<stdio.h> int main(void){ int n; n=1; printf("年数を入力してください"); scanf("%d",&n); if(n%400=0)printf("うるう年である"); else if(n%4=0&&n%100!=0)printf("うるう年である"); else printf("うるう年ではない"); return(0);} 左辺の値がないとかエラーがでるんですけど
832 名前:デフォルトの名無しさん [2006/07/14(金) 13:30:41 ] 初心者乙
833 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 13:44:21 ] >>831 ==だよ。 >>830 今度は、 8進数%o,int,&i=179 と3桁にすると、iに17が入って、9が次の10進数の処理に自動的に入ります。 なぜ?
834 名前:824 mailto:824をたのむ…… [2006/07/14(金) 17:19:31 ] >>833 scanf("%c",&i);の時、1000とか入力すると、%cの分の1をscanf("%c",&i);で取り込み、残りの000は次のscanf("%s",st); に勝手に入力されてしまう。 8進数だから、7、8、9なんかは入力できない。 すると179は17まで8進数と見なされ、残りの9は型が違うものと認識される。 17dとか入力しても同様。 型が違うものと認識されたものは、次のscanfに勝手に入力されてしまう。 標準入力ストリームがバッファリングの構造を取るから。 型が違うもの、と認識されたものは、一度バッファに戻ってから、次のscanfに入力されてしまう。 環境によっては、scanf("%d",i);のところで、a、とか入力すると、 型が違うものだからバッファに戻す→バッファからaがscanfに入力される というルーチンを延々と繰り返してしまう。 この繰り返しが起こらない環境ならば、型が違うものでも強制的な変換が行われ、scanfに取り込まれるということ。
835 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 18:40:08 ] >>834 どうもありがとう なるほどね・・・
836 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 21:29:18 ] >>824 while((n=fgetc(fp1))!=EOF){ fputc(n,fp2); m++; if(n=='\n'){ m=0; } else if(m==40){ fputc('\n',fp2); m=0; } } 入力ファイルがすべて 1文字==2バイトと決まっているならこれで良いけど wchar_tを使うか、文字コードの判定をするかしたほうが良いかも。
837 名前:824 mailto:sage [2006/07/14(金) 21:55:49 ] >>836 なるほど。
838 名前:デフォルトの名無しさん [2006/07/15(土) 08:47:40 ] パチンコのシミュレーターを作ろうと思ってるんですが、 確変をひいた場合にループをさせる時どのようにすればいいのでしょうか? for(;;){ switch(GetRandom(1,2)){ case 1:b++; case 2:break; } } 乱数で1だったらループ2だったらfor文を抜けたいとおもうのですが、 これだと止まってしまいます。何故でしょうか。
839 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 09:19:20 ] >>838 直接の原因は、break は一つ外側の構文に対してしか作用しないこと。 switch 内で break しても、その switch の外側に抜けるだけ。 それで結局、for を抜け出せなくて無限ループになっている。 ネストされた構文から任意の場所に制御を渡したい場合は goto を使うか、 関数を書いてそれを呼ぶしかない。 あと、その case の書き方はやめておけ。 switch はフォールスルーと言って、break を書いておかないとその後の case にある処理に突入してしまう。 for(;;){ switch(GetRandom(1,2)){ case 1: b++; break; case 2: goto end_for; } } end_for: ;
840 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 09:27:03 ] >>838 なんか初めの方の文章がよくわからねいけど そのbreakでは、switch文しか抜けられない。 for文を抜けたければ、goto文とかflagをつかえばいい。 ◆goto文の場合 for(;;){ switch(GetRandom(1,2)){ case 1:b++; case 2:goto FOR_EXIT; } } FOR_EXIT:; ◆flag int flag = 1 ; for(;flag;){ switch(GetRandom(1,2)){ case 1:b++; case 2:flag=0; break; } }
841 名前:840 mailto:sage [2006/07/15(土) 09:28:39 ] かぶった。しかも劣化している。。。839のいうとおりだ。
842 名前:デフォルトの名無しさん [2006/07/15(土) 09:33:50 ] >>839 ,840 ありがとうございます。 gotoが便利そうなんでそっちを使いたいとおもいます。 これでやっと先に進めそうです。 ありがとうございました。
843 名前:デフォルトの名無しさん [2006/07/15(土) 09:39:09 ] 1と2しか判定しないなら素直に for(;;){ if(GetRandom(1,2)==2) break b++; } も頭の隅っこに置いとくといいかも
844 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 10:24:29 ] 質問です〜 char st[10]="text"; char *p; p=st; すると、st[10]の先頭アドレスがpに入るって書いてあるんですけど、 printf("%p,%p",p,&p); pの値と&pの値が違うのはどうしてですか?
845 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 10:32:48 ] いくらpにstを代入しても、あくまでpはpという1つの変数だから。
846 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 10:44:26 ] あーなるほど。どうも〜
847 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 17:31:59 ] pと&pの違いは重要 と言ってみる
848 名前:デフォルトの名無しさん [2006/07/15(土) 22:31:54 ] 念のため聞いておきたいんですが、参考書を見るとコマンドプロンプトで表示させるだけっぽいですけど ちゃんと画像のついたソフトやゲームなんかも作れるんですよね?
849 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 23:51:47 ] >>848 できるけど、標準Cと言われるものの範囲では、画像を表示するなどと言ったことができず、 また、コマンドプロンプトで文字を入出力するのとは、桁違いに面倒だから、入門レベルでは扱わないというだけ。
850 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:37:48 ] 質問させてください。 自分はVB8アカデミック(=SE)を使っているのですが。 #include <stdio.h> int main(void){ printf("HELLO"); return 0; } のようなDOS窓で動作するようなコードは正常にコンパイルできるのですが、 #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox(NULL, "Kitty on your lap","メッセージです。", MB_OK); return 0; }のようなウィンドウズアプリケーションをコンパイルしようとすると必ずエラーがでてしまいます。 ↑のコードは今思い出しながら書いたものなのでもしかすると間違っている箇所もあるかも しれませんが書籍を参考に10個ほどサンプルを丸写ししてコンパイルしても同じ結果だったので コードに問題はないと思います。 VB8を再インストールしてみたりもしたのですがまったく効果がなく、もしかして インストール後になにか他にもインストールしたり環境設定したりと別の作業が必要なのかとも思ったのですが・・・・ どなたか原因がわかる方がいらっしゃいましたら助言いただけないでしょうか。 BBSもプログラミングも初心者なもので失礼もあるかとは思いますがよろしくお願いします。長文ですみません^^;
851 名前:デフォルトの名無しさん [2006/07/16(日) 03:41:08 ] if(){}って()内が1なら{}が実行されるんですか? それとも0以外なら実行されるんですか?
852 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:50:05 ] 真なら実行され偽なら実行されない
853 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:50:16 ] >>850 書店に行って、自分に合う入門書を買ってくること。
854 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:51:47 ] >>851 ()内に=や<>なんかがない場合は ()の中に入る数字(変数でもいい)が0以外なら真と見なしループを続ける(=実行) 0以外なら偽と見なしループを抜け出します。
855 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:56:20 ] >>854 ありがとうございました >>853 入門書読んでるんですけど、そこがかいてなかったのです
856 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:59:06 ] ここは回答者の入門スレなのか? 堂々と間違った回答をされても困るんだが。
857 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 04:09:32 ] >>851 さんごめんなさい。。。 while文とごっちゃになってましたOrz 真ならループではなくただ実行されるだけでした 偽ならスルーします。 >>856 さんこれであってますでしょうか?
858 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:15:37 ] 1と2しか判定しないなら素直に for(; GetRandom(1, 2) != 2; b++) ;
859 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:49:25 ] そして結局 while(GetRandom(1, 2)!=2)b++;
860 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:58:25 ] >854 >0以外なら偽と見なし(略)
861 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 09:00:28 ] >>850 エラーメッセージを書け。 あと、CのコンパイルにVBは関係ないだろ。
862 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:04:57 ] あの〜 2進数表記する型ってないんですかね。 ライブラリさがしてるんですけど・・・
863 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:30:54 ] >>862 #include <stdio.h> /* 静的アサーション */ void SASSERT_(int(*p)[1]) { } #define SASSERT(b) SASSERT_((int(*)[(b) ? 1 : -1])0) /* 2進1バイトリテラル */ #define BYTE2(x) \ (SASSERT(1 < sizeof (#x) && sizeof (#x) <= 9), /* 1〜8 文字に制限 */ \ SASSERT((0x##x & ~0x11111111) == 0), /* 余計なビットがあるとエラー */ \ (0x##x >> 0) & 0x01 | \ (0x##x >> 3) & 0x02 | \ (0x##x >> 6) & 0x04 | \ (0x##x >> 9) & 0x08 | \ (0x##x >> 12) & 0x10 | \ (0x##x >> 15) & 0x20 | \ (0x##x >> 18) & 0x40 | \ (0x##x >> 21) & 0x80) /* 2進2バイトリテラル */ #define WORD2(x1, x0) ((BYTE2(x1) << 8) | BYTE2(x0)) /* 2進4バイトリテラル */ #define DWORD2(x3, x2, x1, x0) ((WORD2(x3, x2) << 16) | WORD2(x1, x0)) int main() { printf("%X\n", BYTE2(01011011)); printf("%X\n", WORD2(11001011, 10000011)); printf("%X\n", DWORD2(01011011, 11001011, 10000011, 00000000)); }
864 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:31:52 ] 型…? もしかしてBASICの&Bみたいに2進でリテラル書きたいってこと??
865 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:56:36 ] >>863 ちゃいまんねん >>864 そうそう。型指定文字のこと。
866 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:42:03 ] ない
867 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:43:17 ] ないからこその代案が>863なわけだな。
868 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:44:15 ] 2進でリテラル書きたいだけなら、 >>863 で何か不都合でもあるんだろうか。 文法的な事を知りたかっただけなの?
869 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:46:04 ] >>863 の(0x##x >> 0) & 0x01ってどういういみですか? すいませんが説明していただけるとたすかります
870 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:48:24 ] やっぱいちいち計算しなきゃ駄目なのか・・・
871 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:50:36 ] 256通りのテーブル作って、テーブル引きしたほうが早くないか?
872 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:52:09 ] 0x##x は、0x と x(マクロの引数)をくっつけるもの。 例えば、BYTE2(01011011) なら 0x##x は 0x01011011 になる。 この時、結局 (0x##x >> 0) & 0x01 は (0x01011011 >> 0) & 0x01 になる。 つまり、0 ビット目を抜き出す操作に相当する。 (0x##x >> 3) & 0x02 は 4 ビット目を 1 ビット目に持ってきて、 それ以外のビットを消す。 (0x##x >> 6) & 0x04 は 8 ビット目を 2 ビット目に持ってきて(ry こうやって、0x01011011 を2進数 01011011 にしている。 これらの計算は静的に行われるので、 コンパイル時に全部計算が行われて、 単なる定数に置き換わる。 速度は気にする必要ない。
873 名前:862 mailto:sage [2006/07/16(日) 14:52:11 ] あ!そういうことか! どうもトンクス>>863-868
874 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:57:22 ] >>872 へー、それ知らんかった。勉強になった。
875 名前:850 mailto:sage [2006/07/16(日) 19:52:59 ] >>861 訂正。 ×自分はVB8アカデミック(=SE)を使っているのですが。 ○自分はVS8アカデミック(=SE)を使っているのですが。 エラーメッセージは850で書いたコードをコンパイルした場合、 (9) : error C2664: 'MessageBox' : 2 番目の引数を 'const char [18]' から 'LPCTSTR' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 というメッセージがでます。
876 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 20:05:10 ] >>875 _T("Kitty on your lap") _T("メッセージです。") とするか プロジェクトのプロパティ→構成プロパティ→全般→文字セット→マルチバイト文字セットを使用する に設定。 LPCTSTRはUnicodeを使うかマルチバイト文字を使うかでLPCWSTRかLPCSTRになる。 MessageBoxもMessageBoxWとMessageBoxAで切り替わる。 単にダブルクォーテーションで囲んだだけだとcharの配列 → LPCSTRに変換→引数の型不一致。 文字列リテラルを_T()で囲むとUnicodeの時には頭にLを付けてくれるからLPCWSTRにできる。
877 名前:デフォルトの名無しさん [2006/07/16(日) 20:37:58 ] 質問です。 これの間違いを教えて頂きたいッス! 文字列を入力させる。その中に”ABC”という部分文字列(連続)が含まれていれば「OK」、そうでなければ「NO!」と出力される。 #include<stdio.h> main() { char moji[256]; int n=0,flag=0; scanf("%s", &moji[n]); while(moji[n]!='\0'){ if(moji[n]=='O' && moji[n+1]=='U' && moji[n+2]=='P')flag=1;n++;} if(flag=1){printf("OK\n");} else printf("NO!\n"); }
878 名前:875 mailto:sage [2006/07/16(日) 20:48:57 ] >>876 詳しい説明ありがとうございますっ しかし知識がなさすぎて理解できませんでしたOrzすみませんホント 林○比古の本でも買って勉強してきます。 ありがとうございました。
879 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 20:50:04 ] scanf("%255s", moji); printf("%s\n", strstr(moji, "ABC") ? "OK" : "NO!");
880 名前:デフォルトの名無しさん [2006/07/16(日) 20:56:51 ] DirectXで全画面で動いてるゲームとかの画面上に自分のアプリのウィンドウ出したいんだけど できるの? できるなら何かヒントちょうだい
881 名前:デフォルトの名無しさん [2006/07/16(日) 20:56:56 ] >>879 いただきましたーーーー!! ありがとうございました☆
882 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 21:04:59 ] >>880 全画面ゲームの場合排他モードで動作してるかもしれないので無理かも
883 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 21:11:11 ] なんかネトゲのボットを作りたいらしき質問をあちこちでみるな
884 名前:デフォルトの名無しさん [2006/07/16(日) 23:49:46 ] >>882 そうなんだ。排他モードなんてものがあるのか。どうも。
885 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 04:07:28 ] >>880 そういう場合はd3dx9のラッパーを書いて Presentメソッドに細工して自分が描画したいものを割り込ませる
886 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 04:40:50 ] 必死にチートしようとしてるとか? 鯖側でプログラムやってる香具師はちゃんとチェック機能付けて排除する対策してると思うよ。
887 名前:デフォルトの名無しさん [2006/07/17(月) 05:50:48 ] >>885 へー、なんか凄いヒントもらっちゃった。ありがと >>886 ボットも面白いかもね。でも後ろで動かしとけばいいんじゃないの?分かんないけど いいヒント貰ったのであとはDXスレ見てくる
888 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:07:25 ] ポインタがわからない・・・ main(){ char *c; *str='c'; int *i; *i=1; printf("*c=%c\n",*c); printf("*i=%d\n",*i); } これの何がわるいんだか教えてちょんだい・・・
889 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:09:25 ] あ、間違えた *str='c';->*c='c';
890 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:10:51 ] ポインタは虚構
891 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:12:54 ] >>888 cもiも、まだどこも実体を指していないうちに*で間接参照しているから。
892 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:19:11 ] >>888 >これの何がわるいんだか教えてちょんだい・・・ あんたの頭。 ・エラーがでた。 →エラーメッセージを張れ。 ・想定したとおりの動作をしない。 →想定した動作と実際の動作を書け。 ・間違いを指摘された。 →指摘した人間に聞くか、どう指摘されたか書け。
893 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:26:12 ] >>890-891 これならいい? main(){ char *c; char ch; ch='c'; c=&ch; int *i; int in; in=1; i=∈ printf("*c=%c\n",*c); printf("*i=%d\n",*i); } でもこんな書き方してるソースなんて見たことないぜ。
894 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:32:40 ] >>893 そんな書き方する意味がないからな
895 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:33:36 ] >>893 お前入門者以下だからよそ池
896 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:44:42 ] (´・ω・`)ショボン
897 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:46:06 ] >>893 まず、なにをしたいのか日本語で説明してもらえまいか?
898 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:01:11 ] fish...
899 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:09:10 ] (´・ω・`)エサだったのか
900 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:10:07 ] >>897 俺が持ってる林晴比古著新C言語入門シニア編のポインタの初期化てところに ex1 int d; int *p=&d; ex2 char s[80]; char *p=s; ex3 char s[80]; char *p=&s[3]; ex4 char *p = "ABCDE"; ex5 char *p=(char *)malloc(100); って書いてあったけど、あれ*pって配列ABCDEなら文字A(p[0])が入るよな〜と思って、 char *c; *c='c'; ってやってみたら*cの値に'c'が入るのかなと思ってやってみたらできなかったので なぜだか聞いてみた。 でも int *i; *i=1; はちゃんと1って出てきたよ?char型とint型って違う動きするの?
901 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:14:56 ] >>900 > int *i; > *i=1; > はちゃんと1って出てきたよ?char型とint型って違う動きするの? たまたま動いてるだけ。実際はメモリを破壊してる。 あと char *c = (char *)malloc(100); は char *c; c = (char *)malloc(100); と同義で、*c = とは別
902 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:28:03 ] 他の参考書を見てみたら?
903 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:41:06 ] 親父の本はこれとこれのビギナー編しかない 発行見てみたら1992年だった 古すぎ?
904 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 12:11:37 ] >>903 古いか新しいかじゃなくて、肝心な事がちゃんと書いてあるかどうか。 >>900 の疑問に答えてくれる本、っていう基準で探すのもテだぞ。
905 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 12:30:42 ] 本屋いってくるか・・・雨だけど・・・
906 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 15:49:17 ] void make_fare_table(int num, double *dist_list, COSTUNIT *cost_list, int **fare_table) { ていう関数を書いたとき、 引数のint **fare_tableはmainでどーやって指定すればいいんですか? ちなみにfare_tableは2次元配列です。fare_table[30][30]って感じ。
907 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:06:42 ] void foo(int t[30][30]){ } main(){ int f[30][30] ; foo(f) ; } でいいんじゃない?
908 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:37:58 ] >>907 引数の型が指定されてるんですわ これ基本情報技術者試験の過去問なんだけど
909 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:52:32 ] >>908 int **fare_tableが二次元配列なんてありえない。 移し間違えじゃないのか。
910 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:00:03 ] 全部写すよ #include typedef struct { int max_dist; /* 上限距離(km) */ int unit_dist; /* 単位距離(km) */ int unit_cost; /* 単位距離ごとの運賃(円) */ } COSTUNIT; void make_fare_table(int, double *, COSTUNIT *, int **); int calc_fare(double, COSTUNIT *); void make_fare_table(int num, double *dist_list, COSTUNIT *cost_list, int **fare_table) { int idx0, idx1; double dist; for (idx0 = 0; idx0 < num; idx0++) { fare_table[idx0][idx0] = 0; dist = 0.0; for (idx1 = idx0 + 1; idx1 < num; idx1++) { dist += dist_list[idx1-1]; fare_table[idx0][idx1]=fare_table[idx1][idx0] =calc_fare(dist, cost_list); } } }
911 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:01:17 ] int calc_fare(double dist, COSTUNIT *cost_list) { int fare = 0, idx = 0; int lower_limit; /* 区間の下限(直前の区間の上限距離) */ int upper_limit; /* 区間の上限(現在の区間の上限距離) */ lower_limit = 0; upper_limit = cost_list[0].max_dist; while (upper_limit!=0 && dist > (double)upper_limit) { fare += ceil((double)(upper_limit-lower_limit) / (double)cost_list[idx].unit_dist) * cost_list[idx].unit_cost; lower_limit = upper_limit; upper_limit = cost_list[++idx].max_dist; } fare += ceil((dist - (double)lower_limit) / (double)cost_list[idx].unit_dist) * cost_list[idx].unit_cost; return fare; }
912 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:09:20 ] 試しに入れたメインはこれ main(){ COSTUNIT cost_list[4]; cost_list[0].max_dist=20; cost_list[0].unit_dist=5; cost_list[0].unit_cost=100; cost_list[1].max_dist=100; cost_list[1].unit_dist=10; cost_list[1].unit_cost=180; cost_list[2].max_dist=500; cost_list[2].unit_dist=50; cost_list[2].unit_cost=850; cost_list[3].max_dist=0; cost_list[3].unit_dist=100; cost_list[3].unit_cost=1650; double dist_list[10]={3.0,5.5,10.0,3.8,8.2,7.6}; int **fare_table[30][30]; make_fare_table(4,dist_list,cost_list,fare_table); }
913 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:14:32 ] >>910 写し間違いじゃないのなら、問題が間違ってる。
914 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:17:41 ] つか、俺試験受けたこと無いけど、まさか「誤りを探せ」という問題じゃ ないだろうな。
915 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:21:02 ] うそーん。マジ?
916 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:23:22 ] >>914 ちがうよ。ここみてよ ttp://www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H17a2/pm10.html
917 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:33:29 ] >>916 問題が間違ってる。特にfare_table[m][n]のm != nだとありえない度うp。
918 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:33:34 ] for(i=0;i<30;i++)fare_table[i]=(int*)malloc(30*sizeof(int)); なヨカン
919 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:37:40 ] どうも・・・ でも普通間違ってる問題出すか!?仮にも国家試験だろう! 他の問題からベンキョします
920 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:49:23 ] >>918 fare_table[m][n]で、m != nダヨ。
921 名前:920 mailto:sage [2006/07/17(月) 17:51:32 ] いや、問題を読み違えてた。スマソ。 >>918 で正解な予感。 int *fare_table[30]で、実引数はfare_table。 動かしてないけど。
922 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:10:02 ] >>918 ,921 それで出てきました。アリガトン
923 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:32:06 ] 乗数演算子って無いの?
924 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:44:38 ] >>923 ない。 www.kouno.jp/home/c_faq/c14.html#7
925 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:45:01 ] fscanfで文字を読み込んだ場合、ファイル位置表示子は移動しますか?
926 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 19:50:26 ] >>925 「位置表示子」とはなんぞ? 読み出しオフセットが気になるならftell()でもして味噌。
927 名前:デフォルトの名無しさん [2006/07/17(月) 22:05:12 ] 問題1.キーボードから63以下の2つの整数を変数a,bに入力して、a+bの結果がアスキーコードの対応する文字・記号となって出力されるプログラムを作れ。 問題2キーボードから英字1つを入力し、その英字より2つ前の英字(または数字、記号)を出力するプログラムを作れ すみませんまったくの初心者です 宿題でまったくわかりません
928 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 22:05:56 ] >>927 C/C++の宿題を片付けます 66代目 pc8.2ch.net/test/read.cgi/tech/1151477344/l50
929 名前:デフォルトの名無しさん [2006/07/17(月) 23:17:58 ] すれ違いでしたか ありがとうございます。
930 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:26:53 ] typedef struct letter { char c; struct letter *follow; struct letter *other; char *trans; } LETTER; LETTER *p_root; void main(){ LETTER *p = p_root; って書いたら、 p には何が入ってるんですか?
931 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:30:31 ] >>930 *p_rootに入っていた内容。初期化してないから何が入ってるかわからない。
932 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:44:43 ] p_root->c='m'; p_root->follow->c='a'; p_root->other->c='n'; p_root->trans=NULL; だったら?
933 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 12:56:13 ] プログラムから別のプログラムを立ち上げる方法を教えてください。 ブラウザで例えるとmp3などのURLをクリックすると再生プレイヤーが立ち上がるような感じで、 そのmp3のURLを渡して起動させたいのですが よろしくお願いします。
934 名前:デフォルトの名無しさん [2006/07/18(火) 13:36:38 ] 野球チームがnチームあり,1日にm試合ずつ消化して,総当たり戦を行うものとする. 各チーム名はA, B, C,...Zのようにアルファベットの頭文字で表されるものとする. nは26以下,mは4以下とするとき,以下のような試合の日程表をつくりなさい. 全試合が終了するのに必要な日数と全試合数も表示すること. Number of Teams -> 4 Number of Games per Day -> 4 -------- Schedule ---------- Day 1 Game 1 : A vs B Game 2 : A vs C Game 3 : A vs D Game 4 : B vs C Day 2 Game 1 : B vs D Game 2 : C vs D --------------------------- Total Number of Days : 2 days Total Number of Games : 6 games --------------------------- 誰か作ってくれ・・・ わからん・・・
935 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 14:43:07 ] >>934 留年しろ。
936 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:01:43 ] >>932 pはポインタ。p_rootもポインタ。 その値は代入によって同じになっているはず。 つまり、p->c == p_root->c && p->follow->c == p_root->follow->c && p->other->c == p_root->other->c && p->trans == p_root->transということ。 >>933 環境依存でよければ、例えばWindowsならShellExecute()辺りが向いているかもしれない。 しかし、その程度のことも調べられないようなら手を出さない方が無難だとも思う。 >>934 宿題スレにでも逝ってみたら?
937 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:20:11 ] >>933 ありがとうございます。 これを足がかりにもう少し調べて見ます。
938 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:20:42 ] >>937 は>>936 あてです。すみません。
939 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:58:56 ] >>936 次にね while( p!=NULL ){ p=p->other; } って書いてあるんですよ。 このpって何を示してるの? pのメンバ全部のこと示してる? ちなみにこれも基本情報の過去問だけど… www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H18a2/pm10.html ↑ここ
940 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 17:17:26 ] >>939 LETTER型のオブジェクト
941 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 17:17:33 ] pは構造体先頭を指している。
942 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 18:03:43 ] p->cのことでええんかな? どうも〜
943 名前:デフォルトの名無しさん [2006/07/18(火) 18:17:53 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2392.txt Cでシェルを実装し、パイプラインをpipeシステムコールを使ってできる ようにしたいのですが、3つ以上のコマンドを繋ぐことができません。 どのようにすればよろしいでしょうか?
944 名前:936 mailto:sage [2006/07/18(火) 19:00:14 ] >>939 だからpはポインタなんだってばさ。ポイントしている先があるかないかのチェックをしているわけだね。 だから>942は間違い。>941もおかしいな、先頭のみを指しているわけではないのだから。 つーか、ポインタの勉強してきなさいよ。 >>943 コメントもろくにないソースをいきなり読まされる身になってくれ。 つーか、どこが入門レベルなんだか。
945 名前:943 mailto:sage [2006/07/18(火) 19:30:15 ] >>944 すいません、実行後に標準入力からコマンドを入力し、そのコマンドをgetcl関数で スペース毎にでargmv[0],argmv[1]...に格納し、exec_one_command関数で実行。 その中にパイプがあればパイプの処理をするという仕様です。 自分でやったところはexec_one_command内でgetclでできたコマンドからパイプを 見つけてそれをNULLに置き換え、パイプの数に応じてexecvpで実行していくという ところです。 なんとかして完成させたいのですが、ここじゃ不味いですか('A`) どこいけばいいでしょうか・・・
946 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:07:28 ] >>944 すいません どこでベンキョしてくればいいでしょう お勧めの本とかページとかあります?
947 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:08:56 ] void funcB() { return; } void funcA() { funcB(); printf(); } こういう場合ってprintf()って作動しますか?
948 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:11:12 ] するよ
949 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 23:20:14 ] >>947 funcA()を呼べばね。 >>946 書籍スレにでもどうぞ。 >>945 ここでもいいけど、みての通りここだとレスつかないねぇ。 pipeなんて非標準だし、環境依存OKスレかUnixプログラミングスレ辺りかね。
950 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:36:41 ] >>944 先頭指してなかったら、キャストもせずに、->演算子使えるわけないじゃん。
951 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:51:03 ] >>950 アホ?
952 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 01:02:50 ] p->otherはstruct letter* だから>>941 を間違いってのはアレだよな
953 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 07:50:03 ] for(;;)とwhile(1)はどっちがはやいんですかね?
954 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 08:03:07 ] >>953 大丈夫、お前よりもよっぽど賢いコンパイラにとって、それらはどちらも同じと解釈されるから気にするな。 #まぁ、前者を推奨するがな。
955 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:10:13 ] 大昔の頭の悪いコンパイラだと for(;;) の方が早いとか聞いた気もするが、 今のコンパイラならどっちでもいいな。
956 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:12:34 ] (;;)
957 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:52:47 ] (;o;)
958 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:03:37 ] (;A;)
959 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:14:25 ] ('A')
960 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:46:03 ] ("ω")
961 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 11:29:39 ] ( ; _ ; )
962 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 16:27:56 ] (T-T)
963 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 17:36:00 ] (:-D)
964 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 17:42:05 ] :-D~~
965 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:24:10 ] >>863 void SASSERT_(int(*p)[1]) { } #define SASSERT(b) SASSERT_((int(*)[(b) ? 1 : -1])0) は、単に #define SASSERT(b) ((void)(int(*)[(b) ? 1 : -1])0) でいいことに今頃気づいた。
966 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 00:37:15 ] K&R本の1.5.2 文字のカウント のプログラムをちゃんと打って、シグウィンでコンパイルしても 実行したら全くカウントしてくれないのですが、 どうしてでしょうか?誰か教えて下さい。
967 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 02:24:54 ] >>966 そのプログラムを貼れ。
968 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 07:27:35 ] #include <stdio.h> /* 入力される文字をカウント;第1版 */ main() { long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%ld\n", nc); }
969 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 08:29:16 ] 入力を終了しないからいつまで経っても表示されないだけに一票。
970 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 09:21:38 ] でもこっちはちゃんとできるんですよ。 #include <stdio.h> /* 入力された文字を複写;第2版 */ main() { int c; while((c = getchar()) != EOF) putchar(c); }
971 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 10:54:10 ] いやだから・・・。
972 名前:デフォルトの名無しさん [2006/07/21(金) 11:50:37 ] ST.c: 関数 `function2' 内: FLIST.c:75: 警告: 引数 2 個の `strcat' を渡しますにより、キャストなしで整数からポインタを作りました :wq! 上記の警告がでました。問題の75行目 strcatは以下です。 strcat(strLine,ctime( &buf.st_mtime ));/*警告箇所*/ st_mtimeはファイル情報を取得する処理【stat関数】のメンバでbufの変数定義は struct stat buf;、strLine変数はchar strLine[255];としております。 警告を回避するキャストの方法を教えてください。環境はLinux redhatです。
973 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 12:24:15 ] >>972 #include <time.h> してないってことはない?
974 名前:デフォルトの名無しさん [2006/07/21(金) 12:40:43 ] レスありがとうございました。インクルード記述はあります。 プラットホームをUnixからlinuxに移した際に リコンパイルで警告がでました。
975 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:04:56 ] >>974 その周辺ロジックだけのプログラム作っても再現する? こちらでは問題ないのだが。 以下、テストコード。 -- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> int main(int argc, char ** argv) { char strLine[255]; sprintf(strLine, "%s:", argv[1]); struct stat buf; stat(argv[1], & buf); strcat(strLine,ctime(&buf.st_mtime)); puts(strLine); return 0; }
976 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:32:38 ] >>968 それは何か入力後に EOF を渡す必要がある。 これは Cygwin だとどうなっているのか分からないが、 UNIX 系 OS だとデフォルトでは Ctrl+D でできるのが 普通だ。Windows のコマンドプロンプトや MS-DOS プロンプトでは Ctrl+Z だ。どちらかを入力してみれば できるんじゃないだろうか。
977 名前:968 mailto:sage [2006/07/21(金) 15:13:46 ] >>976 ありがとうございます。Ctrl+Zで出来ました。
978 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 15:18:18 ] 結局>969じゃん。
979 名前:968 mailto:sage [2006/07/21(金) 16:38:45 ] 間違えました。Ctrl+Dでした。 >>978 入力を終了しなくても出来そうだな、とか 馬鹿な考えを起こしていたもので...m(_ _)m
980 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 14:43:42 ] > 賢いコンパイラにとって、それらはどちらも同じと解釈されるから while(1) だと警告がでる for(;;) だとでない
981 名前:デフォルトの名無しさん [2006/07/23(日) 12:03:52 ] プロトタイプ宣言のない関数’printf'の呼び出し(関数main) という警告文が出るけどなに?
982 名前:デフォルトの名無しさん [2006/07/23(日) 12:07:13 ] >>981 #include <stdio.h>がないとか printfがpirntfになってたりとかじゃないかな?
983 名前:981 [2006/07/23(日) 12:10:28 ] >>982 その辺は確認しているのだけど そのへんが問題なのかな?
984 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:33:16 ] こういう場合、ソースを貼り付けたら一発で分かったりすることも多い。
985 名前:981 [2006/07/23(日) 12:46:51 ] #include <sudio.h> int main( ) { int n=500+ 150; printf("%d", n); return 0; } こんな感じなんだけど諸兄の 意見はいかがですかね?
986 名前:デフォルトの名無しさん [2006/07/23(日) 12:48:02 ] int a; char s[3] = "FF" ↓ a == 255 みたいなイメージで、文字データとして16進の形でcharの配列に入ってるものをint形の変数に代入する方法ってない?
987 名前:デフォルトの名無しさん [2006/07/23(日) 12:48:41 ] 1はツンデレ
988 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:52:46 ] >>985 1行目で既に破綻が
989 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:59:38 ] >>986 strtol
990 名前:981 [2006/07/23(日) 13:00:32 ] >>988 ありがと。いまきずいた(汗
991 名前:986 mailto:sage [2006/07/23(日) 13:04:15 ] >>989 さんくす、助かった
992 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 18:01:34 ] よくコンパイルまで行ったな。
993 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 10:40:46 ] おまいら日本語よりC言語のほうが意思疎通出来るんだな(w
994 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 10:55:00 ] 次スレは>>995 が立てるそうです。
995 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 18:38:56 ] 次スレはいらない。
996 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 09:49:42 ] 入らなかったら拡張しろ
997 名前:デフォルトの名無しさん [2006/07/25(火) 16:42:16 ] 1000
998 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:11:33 ] スマン…まさか携帯から立つとは思わなかったんだ… 次スレ C言語なら俺に聞け(入門篇) ぱぁと2〜 pc8.2ch.net/test/read.cgi/tech/1153818463/ スレタイについては反省していない
999 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:21:20 ] >>998 乙
1000 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:29:03 ] >>998 おまえというやつは・・・乙
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。