1 名前:デフォルトの名無しさん [2018/09/19(水) 17:56:50.83 ID:XSTNMnDwa.net] C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ ※前スレ C言語なら俺に聞け 147 mevius.5ch.net/test/read.cgi/tech/1534430162/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
39 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 01:42:06.64 ID:16ZpsTnK0.net] >>36 マジでIDE使え。 そして貼るときはlanguageをCにしとけ。シンタックスハイライトが変わるから。 で、どれが分からんの? > enter > find > delete > show_all > delete_all mainはこの際分からなくていい。 最初に理解しないといけないのは show_all だ。 ただし細かいことを言ってもキリがないが、 > void show_all(void) なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。 普通は void show_all(tag_address* ta) だよ。 そうじゃないと複数のリストがあったときに使い物にならないだろ。 マジな話、このソースのレベルの本なら捨てた方がいい。 俺は大学の教材がいいと思うぞ。 (読んでないが)リストならググったら東工大とか出てきた。 www.is.titech.ac.jp/compview/clang/chap11.html
40 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 01:44:45.64 ID:WyfQotM3a.net] voidはアリだぞ。 仕事だとなぜかvoidを書けと言われるわ
41 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 01:50:27.24 ID:6j6Aecxq0.net] >>37-38 void show_all() が引数無しの意味になるのはC++。 Cだと show_all(...) と同じ意味になって何渡してもコンパイル通っちゃうからあぶない。
42 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 01:54:37.82 ID:16ZpsTnK0.net] >>38 マジかーと思って linux kernel のコード見たが、書いてるな。 そして K&R 見てみたら、なんとこれも書いてた。 旧来の記法なら書くのが正しくて、物によってはコンパイル通らないとかか? とにかく、 void がクソだというのは取り下げる。 >>39 > Cだと show_all(...) と同じ意味になって何渡してもコンパイル通っちゃうからあぶない。 マジ?今まで聞いたこと無かったわ。 しかし ( ... ) と同じ意味なら例の va_list を使う糞コードになるから、 コンパイラのチェックが甘くなるとはいえ、間違って使うって事はなさそうだが。 まあとにかくありがとう。
43 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 02:29:56.24 ID:16ZpsTnK0.net] >>36 何度も言ってるがマジでIDE使え。 次にマジでこの本はソースがおかしいから捨てた方がいい。処理のフローがクレイジーだ。 何かおかしな規約に沿って書いているように思える。 178-205行目は、普通なら以下。 while(ptr_now != NULL && no >= ptr_now->no) { if (no == ptr_now->no) { if (address == ptr_now) address = ptr_now->next; else ptr_before->next = ptr_now->next; free(ptr_now); return 0; } ptr_before = ptr_now; ptr_now = ptr_now->next; } return -1;
44 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 02:55:23.92 ID:16ZpsTnK0.net] >>36 ちなみに一応ちゃんとポインタで書いておくと、以下な。 whileの条件は分けた方が分かりやすいか? 書き込みターゲットは一つに纏める。 int delete(int no, tag_address* ptr_now) { tag_address** ptr_tgt = &ptr_now; while(ptr_now != NULL) { if (no == ptr_now->no) { *ptr_tgt = ptr_now->next; free(ptr_now); return 0; } if (no < ptr_now->no) return -1; ptr_tgt = &ptr_now->next; ptr_now = ptr_now->next; } return -1; }
45 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 02:56:59.96 ID:16ZpsTnK0.net] すまん、42は間違い。 引数を&で受けても意味無いな。書き直す。
46 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 03:03:32.99 ID:16ZpsTnK0.net] >>36 、42の訂正版 int delete(int no, tag_address** ptr_head) { tag_address** ptr_tgt = ptr_head; tag_address* ptr_now = *ptr_head; while(ptr_now != NULL) { if (no == ptr_now->no) { *ptr_tgt = ptr_now->next; free(ptr_now); return 0; } if (no < ptr_now->no) return -1; ptr_tgt = &ptr_now->next; ptr_now = ptr_now->next; } return -1; } 君には余計に分かりにくくなったかもしれないけど、こんな感じ。 まあ頑張れ。
47 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 03:13:04.00 ID:16ZpsTnK0.net] >>36 enter関数も作りがおかしい。 25で言ったとおり、 > (挿入するのは『nowとnext』の間であって、『beforeとnow』の間ではない) このソースは before と now の間に挿入しており、明らかに間違ってる。 マジでこの本はゴミだから捨てろ。
48 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 03:44:08.18 ID:wyOkhzEz0.net] まあいいんじゃね? 処理内容毎に塊を分けて上から順番に並べているのは他人にわかりやすく説明するために都合がいいのだと思う。 きっと書籍では、N行目からM行目まではこんなことをしてます、とか、塊毎に処理内容のコメントが記述されてるのではないかと思う。
49 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 04:34:50.74 ID:16ZpsTnK0.net] >>46 いやこれはさすがにアウトだろ。 実際部下にこのコード出されたら絶句するだろ。 178行目と194行目のヌルチェックなんてダブってるし、マジで意味無い。 頭が悪い奴が一生懸命書いたコードだぞこれは。手本にするには酷すぎる。 delete関数は筆者には難しすぎて、異常系を一つずつ外して行ってるから無駄にダブってる。 だけどこの規模でこれだと絶望的だろ。 マジでこの本は捨てた方がいい。 18が読めないのは18の技量の問題だけど、 読みやすいコードと読みにくいコードというのは実際にあって、 要するに腕前がいい奴が書いたコードは一般的に読みやすく、下手くそが書いたコードは読みにくい。 (勿論高速化等かけた場合は若干読みにくくなるが) 頭が悪いのなら、関数を分けて分割すべきであって、 breakして下に無理矢理繋げているから意味不明なコードになる。 なお高速コードは以下。 int delete(int no, tag_address** ptr_head) { tag_address** ptr_tgt = ptr_head; tag_address* ptr_now = *ptr_head; while(ptr_now != NULL && no >= ptr_now->no) { ptr_tgt = &ptr_now->next; ptr_now = ptr_now->next; } if (ptr_now != NULL && no == ptr_now->no) { *ptr_tgt = ptr_now->next; free(ptr_now); return 0; } else return -1; }
50 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 06:34:42.89 ID:Ot5g8EvkM.net] もともこもないこというけど カーネルの list.h 使え
51 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 08:07:18.41 ID:MIXlgiXZd.net] C言語で A,B,C,D,E,F,G,H,I,J,K,Lの12個のペアを、3個ずつの4つのグループに分ける場合 例えばA,BとA,CとD,Eは同じグループに入れないとして、実行時には(ADF,BCE,GHI,JKL)みたいな感じで返すプログラミングの書き方の例を教えてください
52 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 08:20:30.08 ID:QxjPpR9VM.net] >>39 が言ってることすら知らないID:16ZpsTnK0が偉そうに講釈たれてて笑うわ
53 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 08:21:44.04 ID:d4QseA9MM.net] >>49 その例だと目的が分からないから、 それを何に使いたいのか具体例で書いてくれ。
54 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 08:32:14.74 ID:Yqnou5lg0.net] >>45 このソースでは「beforeとnowの間にnewを挿入」するenter()で正しく動作するね。 リストの定常状態で、各要素はメンバnoの値で昇順整列している。 ポインタnextのつなぎ換えをする時点で、 beforeのnoは新要素のnoより小さい、nowのnoは新要素のnoより大きい、 よって new->next = now, before->next = new と格納すれば before->no < new->no < now->no の順序が維持される。 ただし境界条件(リストの端っこの処理)はここでは考えていない。 変数やメンバの命名をもう少し工夫すれば…と思うけど。 この投稿を書いててnewとnow、メンバnoで混乱してきた。
55 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 08:58:29.84 ID:bcuOiC7Q0.net] リスト操作に特化した関数を作ればいいのに リスト操作といろんな処理を混ぜ込むから見通しが悪くなってる 教育目的ならなおのこと美しく書かないといけないのに
56 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 09:02:41.93 ID:l48TeZqd0.net] >>37 >> void show_all(void) > >なんだこれ?引数 void って初めて見たぞ。文>法的にありなのかこれ? この程度の知識でも偉そうに講釈垂れる事が出来るのがこのスレです
57 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 09:35:47.75 ID:7nPJqZuh0.net] ワロタ
58 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 09:48:51.25 ID:16ZpsTnK0.net] >>52 そりゃ糞コードでも動くだろうさ。 しかし教科書でこれはない。マジであり得ないくらい酷い。 必要のない変数を作って保持してるだろ。 走査は25に書いたとおり、(書き落とした点を修正するが) while (now->next && value <= now->next->value) now = now->next; でやるんだよ。そうすれば now と next だけの世界で済む。 enter()も頂けない。これは>>53 の指摘通り、 int insert(tag_address* ta) と tag_address* make_new_element(int no, char* name, char* addr) に分けないと駄目だ。 マジでここまで酷いのはなかなか見かけないくらい酷い。 部下がこんなコード書いたら当然突き返す会社が大半だと思うぞ。 例も酷い。これは List ではなく SortedList だし、 そもそもこれをやりたいのならCではなくC++でやるべきだし。
59 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 09:49:43.97 ID:16ZpsTnK0.net] >>54 そこで俺叩きに転じてるのが逆に、お前が馬鹿である証拠だ。 このコードは擁護のしようがないくらい酷い。ど素人でもここまで酷いコードは書かない。 お前にはそれが分からないから俺を叩こうとしてる。 お前みたいな初心者は文法のことばかり気にするが、文法の細かいところは本当に関係ないんだよ。 俺はC++コンパイラを使っているから>>39 は関係なかったし、 >>38 はそうじゃないから void を書くルールになってるんだろ。 そういうもんなんだよ。 文法的に問題があるケースはルールで禁止されてるか、環境で対策されてる。 まあ俺に文法知識が欠けているのは事実としても、この本がゴミなのは揺るがない。 理由は筆者が馬鹿だから、だから、マジですぐに捨てて他の本/サイトを参考にした方がいい。 嘘だと思うのなら、この事を覚えておいて、 数年後、お前らが上達してからもう一度このコードを見直して見ろ。絶句するから。
60 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 09:56:21.04 ID:16ZpsTnK0.net] ちなみに余談だが K&R の良い点は、糞コードがないこと、余分な表現がないこと、なんだよ。 無駄を限界まで削ぎ落とした、極めて上質なコードが掲載されている。 筆者が頭が良く、一流のプログラマだからだ。 実際の所、入門書は総じてゴミだ。 これは入門書を書く奴は一般的に一流のプログラマではないからだ。 だから入門書のコードはマジで参考にしない方がいい。 今回のは特に。 お前らが上達すれば、このコードの酷さが分かるようになるだろうさ。 今回の顛末を覚えておいて、数年後に見直して見ろ。マジで。
61 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:10:07.07 ID:l48TeZqd0.net] >>57 うんそだね〜 でもどんな言い訳してもここはC言語スレだしCプラプラコンパイラと言えどCの文法書けるわけだし 初心者に偉そうに講釈垂れるならCの最 低 限の文法くらい知ってた方がいいよ
62 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:24:01.19 ID:16ZpsTnK0.net] >>59 ならお前も18に対して何か為になるレスをしてから言えよ。 お前が俺に粘着する理由が分からん。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
63 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:24:32.03 ID:7nPJqZuh0.net] たった2レスで粘着 w
64 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:35:54.62 ID:a9vdXzW90.net] >>56 これをやりたいならC++でやるべき、って C言語の入門書のコード例なのに何を言ってるんだ?
65 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:42:23.12 ID:AEsgMTAW0.net] かまってちゃんなんだろう、相手してもらって嬉しそうだ
66 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:42:23.23 ID:16ZpsTnK0.net] >>61 そりゃそうだろ。 俺が文法を知らなかったことは本筋とは関係ないし、 実際、お前ら以外気にしてないだろ。 お前らは役に立つレスを全くしてないし、ただの粘着荒らしでしかない。 なお>>39 、知ってるかもしれんが以下だそうな。 > C99にて廃止予定機能となった。C11でどうなったかは不明 d.hatena.ne.jp/eel3/20141005/1412521223 仕様に詳しい人よろしく。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
67 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:45:11.54 ID:16ZpsTnK0.net] >>62 その点は既にC++で対策されてるから。 書けば分かるが、その例のSortedListなら、C++で書いた方が綺麗に書ける。 C++はその点を対策した言語なのだから、当たり前だが。
68 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:54:19.57 ID:BuG7Fz7K0.net] 連投ウザ。
69 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 10:56:24.32 ID:rjQGIIPhM.net] >> void show_all(void) > >なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? 以下のコード見たことありまちゅか〜?wwww #inlcude <stdio.h> int main(void) { printf("Hello World!"); return 0; }
70 名前:デフォルトの名無しさん [2018/09/22(土) 11:02:28.11 ID:PGp2AKzL0.net] こういう簡単なコードの書き方なら 喜々として低学歴知恵遅れのシロウトが喜々として一杯よってくる
71 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:09:05.39 ID:16ZpsTnK0.net] つか、粘着馬鹿共は誰も役に立つことを言えてない件。 お前らが俺に粘着する意味は何なんだ? なお>>18 、一番近いのは std:forward_list でソース例は以下だが、 https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/forward_list.h 毎回思うがGNUは別の意味で読みづらいから(マクロまぶしすぎ) 今の君には無理だが、可能ならこれを読んだ方がいい。最終的な目標にしとけ。 >>37 で既に示した東工大、斜め読みしたが、 1. before 関数 を使って list_add 関数を修正して p の「直後」に挿入 2. before 関数 だから明らかにこっちの方が筋がいい。 2の意味は分からないだろうが、これはコンパレーターであり、関数ポインタに繋がる。 こちらはそもそも教育の現場、やはりちゃんとしている。 こっち使った方がいいと思うぞ。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
72 名前:デフォルトの名無しさん [2018/09/22(土) 11:10:50.53 ID:PGp2AKzL0.net] 低学歴知恵遅れはこの程度のコードしか 理解できないのがよくわかるわ
73 名前:デフォルトの名無しさん [2018/09/22(土) 11:13:00.76 ID:PGp2AKzL0.net] まず質問と関係ない内容で喜々として得意になってレスしてる こういう簡単な内容ならめっちゃ元気
74 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:25:44.82 ID:16ZpsTnK0.net] ああ、そういえば一応>>18 には直球で返した方がいいか?なら、 *ptr_now:今エレメント *ptr_before:前エレメント *ptr_new:新エレメント であり、まんまそのままだ。 ただ、単方向リストで before は履歴が必要だから、このコードは筋が悪い。 単方向リストなら、出来る限り、 *ptr_now:今エレメント *ptr_next:次エレメント で構成されるべきで、この場合には履歴が要らないからより単純なコードになる。 そして東工大はそうだからそっちを参考にしろ、というわけ。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
75 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:39:44.40 ID:i0ViPFTS0.net] やっと気づいた w
76 名前:デフォルトの名無しさん [2018/09/22(土) 11:41:41.67 ID:PGp2AKzL0.net] コードがどういう書かかたされてるとか 質問してるヤツは一切してないからな コレは低学歴知恵遅れの自分が理解できてる範囲のことを コレは低学歴知恵遅れがひたすら連騰してるだけだからな つまりこの質問ではどうでもいいただのコードの書き方 質問してるヤツはどういう動作をして どうデータが格納されてるかを質問してる 低学歴知恵遅れはなんでまともに日本語が読めないわけ まともな教育とは思えないわ。。。
77 名前:デフォルトの名無しさん [2018/09/22(土) 11:45:02.82 ID:PGp2AKzL0.net] (正)まともな教育を受けてるとは思えないわ。。。 (誤)まともな教育とは思えないわ。。。 つまり まともな教育を受けてない低学歴知恵遅れが このスレにきた初心者にえらそうにしてるわけ わかる?
78 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:47:39.15 ID:16ZpsTnK0.net] >>73 てかマジでこれが助けになると思ってるのか? お前もしかして18なの? なら絶望的に頭悪いし、プログラミングなんて止めた方がいい。 そしてもしこの回答を得る為にひたすら単発で煽っていたのなら、マジでウザイから止めろ。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。 >>74 ならお前が回答してやれよw お前も回答出来ただろうし、お前はそれが役に立つと思ってたんだろ。
79 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:51:25.42 ID:N6pdG9BDM.net] よくわからんけどその本の後の方の章でそのコードを改良して双方向リストの説明でもしてるんじゃないの? 入門書とかだとよく前の章のコードの説明を元に段階的に説明していく場合があるけど
80 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:51:52.67 ID:rjQGIIPhM.net] ファイッwww
81 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:57:35.70 ID:AEsgMTAW0.net] ID:16ZpsTnK0 はNGでええやろ
82 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 11:57:50.23 ID:16ZpsTnK0.net] >>77 双方向リストでもこの意味分からん処理フローにはならないし、 関数ポインタを見据えている東工大の方が数段筋がいいよ。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
83 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 12:19:33.32 ID:ZMLQwSgJM.net] 入門書だぞ? 汎用性や高速性なんて二の次どころか入門書では不要かもしれない。 ポインタの理解も危うい段階でダブルポインタとかlist.hを提示するとか狂気の沙汰だわ。 もしもID:16ZpsTnK0が入門書を書いたらいきなりハードモードでそれこそ役に立たないから即捨て間違いないわ
84 名前:デフォルトの名無しさん [2018/09/22(土) 12:30:11.20 ID:PGp2AKzL0.net] こんな簡単な質問の回答能力があるヤツはいないか まずenter()関数をみなさい まず一回目のenter()で動く箇所はココになる while (ptr_now != NULL) { ・・・ ← ココ } if (address == NULL){ ・・・ ← ココ } それ以外は 一回目と一回目以外、enter()では同じ
85 名前:デフォルトの名無しさん [2018/09/22(土) 12:31:13.43 ID:PGp2AKzL0.net] 次にココをみなさい if (no < ptr_now->no) { break; } if (address->no > ptr_new->no){ address = ptr_new; printf("address(enter)=%p\n", address); } ココでなにやってるか 次に考えなさい
86 名前:デフォルトの名無しさん [2018/09/22(土) 12:40:05.82 ID:PGp2AKzL0.net] https://ideone.com/F3xZFe >>36 のコードをCのコードの設定にしてやったから まずenter()とshow_all()の結果をみなさい
87 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 12:53:15.25 ID:16ZpsTnK0.net] >>81 ならお前がまず何か役に立つ回答をしてから言えよ。 お前だって > *ptr_now:今エレメント > *ptr_before:前エレメント > *ptr_new:新エレメント は回答出来ただろうに。(何故か>>73 には感謝されてるようだし) 半角君は少なくとも自分で説明しようとしている分、お前ら粘着単発馬鹿共より数段ましだぜ。 ダブルポインタ云々ではなく、18はまず、 1. リスト構造自体を理解出来ていない 2. 多分ポインタも怪しい 3. そもそも全くプログラムが追えてない だから、IDEで全関数の頭にブレークポイントで気が済むまでステップ実行させるべきだろ。 printfデバッグなんて何でこいつがやる必要があるんだ? このレベルの入門書ならIDEの使い方から教えるべきだろ。 そして教科書のコードはそれとなしに汎用性があるコードであるべきなのさ。 東工大はこれを満たしてる。この本は全然駄目だ。その違いだよ。 勿論東工大は最初からEcilpse + CDTだ。 www.is.titech.ac.jp/compview/clang/chap1.html 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。 ただマジな話、18はプログラミングは全く駄目なタイプだと思うぞ。 数学の素養/素質がない奴は、努力しても上達しない。 プログラミングは暗記で対応出来るものではないから。 プログラミング自体を止めた方がいいと思うよ。マジで。
88 名前:デフォルトの名無しさん [2018/09/22(土) 12:59:10.11 ID:PGp2AKzL0.net] printfで十分わかるからな IDEは低学歴知恵遅れに必要
89 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 12:59:52.28 ID:rjQGIIPhM.net] >なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? >なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? >なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? 👀 Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
90 名前:デフォルトの名無しさん [2018/09/22(土) 13:02:56.96 ID:PGp2AKzL0.net] むしろ ID:16ZpsTnK0 ← コイツ が一番プログラミングに向いてない その自覚がない しかも相当自分の頭の悪さの自覚がない 致命的
91 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:09:23.43 ID:ymnIe1Eqa.net] 説明が下手なのは無能の証というね
92 名前:デフォルトの名無しさん [2018/09/22(土) 13:10:24.37 ID:PGp2AKzL0.net] そもそもデバッグライトは プロのプログラミングの世界では重要な技術要件だからな 問題が発生したとき 速やかに問題点の発見ができるようにする助けになるのが デバッグライト 問題が発生したとき まずデバッグモードでコンパイルしてデバッグライトの出力して なぜ問題が発生しているか原因をすみやかに発見する 幾重にも重なった巨大なシステムになるほどデバッグライトの出力は重要になる 役に立つわかりやすい適切なデバッグライトを書けるか書けないかで だいたいそいつのオツムの程度が分かる
93 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:12:16.17 ID:Yqnou5lg0.net] 今日はいつもの「低学歴知恵遅れ」の人 ID:PGp2AKzL0 と 新たに登場した ID:16ZpsTnK0 の東工大ファンの人がいるのか。
94 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:12:58.27 ID:UXUgdVRN0.net] 捨てろ連呼ウゼエw
95 名前:デフォルトの名無しさん [2018/09/22(土) 13:16:47.33 ID:PGp2AKzL0.net] さらにいえば低学歴知恵遅れに作らせると 一切ログが出力されない知恵遅れなシステムになる エラーとしか出力されない もしくはエラーが発生してハズなのに正常終了して 停止せずに次の処理にいってしまう
96 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:21:17.50 ID:sYLo1So00.net] voidとIDE…… Java上がりか?
97 名前:デフォルトの名無しさん [2018/09/22(土) 13:24:22.34 ID:PGp2AKzL0.net] オレの説明はカンペキだからな
98 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:28:52.60 ID:16ZpsTnK0.net] 一応東工大の全部読んだぞ。 俺は東工大の教材の方がずいぶんましだと思うが。 概ね初心者向けによく書けてる。(当たり前だが) > int main() { > struct schedule* list = NULL; > list = list_add(list, 2009, 1, 1, 0, "元旦"); 毎回書き戻すこのインタフェースについては若干検討の余地ありだけども、 ダブルポインタも難しいというのならこれでも致し方無しか。 ただこれだとインミュータブルの言語では複数ヶ所から使用出来なくなる
99 名前:ゥら、 やはりオブジェクト指向で list->add() と書く癖を付けた方がいいし、 リストなんて使いたければ素直にC++使えってことだと思うけどね。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。 まあ>>36 のコードのゴミっぷりが分からないうちは大口叩くのは止めとけ。 そしてこれを覚えておいて、数年後に見直してみろ。 俺が何言ってたか分かるから。 >>91 ファンではないぞ。偶々ググったらヒットしただけ。 ただ、概ね大学の講義資料は良く出来てるよ。 これまでも、他大学を含めて何度もURL貼ったことがある。 (良く出来ているのが検索上位に来るだけかもしれないが、 それでもそれを有り難く利用させてもらえばいい) [] [ここ壊れてます]
100 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:29:39.28 ID:c//Edh7FM.net] >>85 えー、あなたより先にそれ答えたけど。 単発idはnvno業者のせいなんで文句言われても困る。 ちょっとポインタで躓いたくらいでやめたほうがいいとかどんだけハードル高いんだよ。 あなたは下っ端が向いてそうだから間違っても後輩の教育係にはならんようにな。
101 名前:デフォルトの名無しさん [2018/09/22(土) 13:30:53.14 ID:PGp2AKzL0.net] まずオマエの場合、 自分がゴミでクズの低知能の低学歴知恵遅れの自覚がない そこが問題 講義用のプリント読んでもその程度だからな
102 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:31:56.76 ID:a9vdXzW90.net] とりあえず、人に説明するのにやたらと攻撃的だったり高圧的だったりする奴は向いてないな。
103 名前:デフォルトの名無しさん [2018/09/22(土) 13:33:54.35 ID:PGp2AKzL0.net] 低学歴知恵遅れがなにも理解できてないのに 分かったつもりになれる そういう意味で東工大のプリントは優秀
104 名前:デフォルトの名無しさん [2018/09/22(土) 13:40:00.87 ID:PGp2AKzL0.net] 最近話題の池上と似ている 頭悪い池上のいってるどうでもいいことや池上の本を読んで なんか分かった気になれるのととても似ている
105 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:42:35.36 ID:16ZpsTnK0.net] >>97 お?お前のレスってどれ? とりあえず本日分全部言って。(IDと同じ条件になるように) 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
106 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:43:22.87 ID:WyfQotM3a.net] まあこういうのは結局かけた時間だから。 同じこと繰り返しててもあかんけどね
107 名前:デフォルトの名無しさん [2018/09/22(土) 13:47:10.22 ID:PGp2AKzL0.net] まずオマエはな 本格的なプログラミングより 自分の本格的な頭の悪さを自覚したしたほうがいい
108 名前:デフォルトの名無しさん [2018/09/22(土) 13:49:03.34 ID:QTHsDkPYM.net] やっぱC++は糞だな 信仰してるやつ含め
109 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:49:39.33 ID:16ZpsTnK0.net] >>97 > ちょっとポインタで躓いたくらい ではないぞこれは。 そして俺の経験上、プログラミングは A. 勝手に上手くなる B. 徐々に上手くなる C. 全く上手くならない(本人が努力してても) のタイプがいる。以前は不思議だったのだが、最近だんだんとこの理由も分かってきた。 で、悪いが、18はCタイプだ。 というかそもそも昨今の「全国民がプログラミングを」みたいなのが間違ってて、18はそれの被害者だ。 と見てるからの助言だが、君が18を正しく導けるならどうぞやってみてくれ。 それについて俺が反対する理由もないし。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
110 名前:デフォルトの名無しさん [2018/09/22(土) 13:52:47.31 ID:PGp2AKzL0.net] デバッグライトすら書けないヤツが 自分が十分なプログラミングができると思い込んでるわけ 典型的なダメな使えないヤツの典型だからな オマエ自身が向いてないまず自覚をもつが先だ とてつもない低学歴知恵遅れで底辺である自覚ももつべき
111 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 13:58:31.83 ID:16ZpsTnK0.net] >>105 C++は最近は迷走中だが、少なくとも改善版Cであることは事実なんだよ。 SortedList ならクラスを使えば綺麗に実装出来る。 文法についても問題があった>>39 について対策済みだろ。 いまいち最近のお前らが言語間で争う意味が分からない。 俺はbetterC派だから、生粋のCerからも生粋のC++erからも叩かれる存在ではあるのだが、 昔はこんな事なかったと思うんだけどね。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
112 名前:デフォルトの名無しさん [2018/09/22(土) 14:02:20.79 ID:PGp2AKzL0.net] まず頭が悪いヤツに言語の特性なんかわかるハズがない それぞれの言語すら分かってないヤツに その特性の差なんか分かるはずがない ↓こんなことを自信満々で書いてる低学歴知恵遅れだからな 37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018年09月22日(土) 01時42分06秒64 [深夜] ID:16ZpsTnK0 [2/24] (PC) > void show_all(void) なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。 普通は void show_all(tag_address* ta) だよ。 そうじゃないと複数のリストがあったときに使い物にならないだろ。
113 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 14:03:39.37 ID:16ZpsTnK0.net] >>97 結局明示無しか? まあ>>72-73 の流れなら、 少なくとも73は「未回答、または回答不十分」だと見なしていたわけだよ。 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
114 名前:デフォルトの名無しさん [2018/09/22(土) 14:09:51.43 ID:PGp2AKzL0.net] たとえば夜間バッチが動いて エラーが発生する ID:16ZpsTnK0 ← こういうヤツに 好きに作らせるとなんでエラーが発生したわからない様な テロコードを書く しかも無意識、そんなコード書いてもなにが悪いかもわからない こんなヤツにコードを書かせる場合、強力な監視が必要になる その労力に半端ないぐらいのムダが発生する
115 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 14:21:45.13 ID:bcuOiC7Q0.net] ポインタは入門書読んだときは簡単と思ったけど規格書読んでみたら難しいと思ったな 例えばC++でtype punningを規格に沿った形で実現できるのか memcpy使っても規格を見ると怪しいと聞いてもうね どうすりゃいいのよ
116 名前:デフォルトの名無しさん [2018/09/22(土) 14:31:58.80 ID:PGp2AKzL0.net] むしろポインタなんかどんなアホでもすぐに理解できる そっから先で道を誤るヤツのほうが多い 低学歴知恵遅ればっかりのこのスレみればわかるとおり
117 名前:デフォルトの名無しさん [2018/09/22(土) 14:37:01.37 ID:PGp2AKzL0.net] だいたいアホはシステムというもんが分かってないからな シンタックスをしってて、動きさえすれば それでなんでもできるもんだと勘違いしてる低学歴知恵遅れのスクツがココだからな 低学歴知恵遅れの万能感は半端ない 低学歴知恵遅れはどんだけゴミクズでどんだけ自分が致命的に頭悪いか その自覚がない
118 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 14:44:01.16 ID:16ZpsTnK0.net] >>112 unionのことならC++では「絶対に書け、でないと動きを保証しない」なんだろ。 俺はそれは糞で、C流の「つべこべ言わず書いたように動かせ」の方がいいと思ってる。 C++は「書いたように動く」事よりも、「自動的に速くなる」方を選んでる。 それでいい分野も多いが、不味い分野もある。 だから結果的に棲み分けされてしまう。 以前C++スレで出たはずだが、 俺はあの仕様の問題は、関数ごとに最適化条件を変えられないことにあると思うよ。 unionなんて触るのはごく一部の関数だし、そこだけ最適化を解ければ済むこと。 C++は「ソースはこう書くべき」なんてやってるからそういうのを認めない。 これが良くない。
119 名前:デフォルトの名無しさん [2018/09/22(土) 14:56:37.58 ID:PGp2AKzL0.net] 普通にunionなんか使いまくられてる if (::setsockopt(m_i_server_socket, SOL_SOCKET, SO_REUSEADDR, (const char *)&i_on, sizeof(int)) < 0) { ::perror("setsockopt(SO_REUSEADDR) failed"); return -1; } struct sockaddr_in t_sockaddr_in; ::memset(&t_sockaddr_in, 0, sizeof(struct sockaddr_in)); t_sockaddr_in.sin_family = AF_INET; t_sockaddr_in.sin_port = ::htons(u_port_); t_sockaddr_in.sin_addr.s_addr = ::htonl(INADDR_ANY); if (::bind(m_i_server_socket, (struct sockaddr *)&t_sockaddr_in, sizeof(struct sockaddr_in)) < 0) { ::perror("bind() failed"); finalize(); return -1; } なんで低学歴知恵遅れは自分の極端に狭い了見で すぐにしったかすんの?
120 名前:デフォルトの名無しさん [2018/09/22(土) 15:00:47.10 ID:PGp2AKzL0.net] 低学歴知恵遅れは低学歴知恵遅れの自覚は一切なく 自信満々でテキトーなことをいうからな
121 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 15:08:28.87 ID:7nPJqZuh0.net] いいぞ もっとやれ
122 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 15:19:40.54 ID:bcuOiC7Q0.net] >>115 C++はunionでもだめらしい なので memcpy でもそれも怪しいと どこだっけ C++ カンファレンスなんかで出ていた話題 テストをたくさん作って開き直るしかない面がある C99とgcc拡張ではokなんだけど
123 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 15:39:17.37 ID:16ZpsTnK0.net] >>119 見ての通り、俺は規格に詳しいわけではないので、 申し訳ないがそれ以上は分からん。 ただ、C++もバリバリの実用言語だから、 何らかの手段は提供しているとは思うけど。
124 名前:デフォルトの名無しさん [2018/09/22(土) 15:42:51.93 ID:PGp2AKzL0.net] 要するになにも知らないわけか で、オマエはなにをしっててこのスレに書きこんでるわけ?
125 名前:デフォルトの名無しさん [2018/09/22(土) 15:44:50.26 ID:PGp2AKzL0.net] つまり低学歴知恵遅れが とりあえず行き当たりばったりのコードをとりあえず書いて IDEでトレースデバッグならできますと そう自己紹介してたワケか
126 名前:デフォルトの名無しさん [2018/09/22(土) 15:52:07.27 ID:PGp2AKzL0.net] まさに 結果としてとりあえず動きさえすればいいという低学歴知恵遅れの思考回路といっていい まさに地雷
127 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 16:15:07.77 ID:rjQGIIPhM.net] お、決着付いたかw
128 名前:デフォルトの名無しさん [2018/09/22(土) 16:22:40.01 ID:PGp2AKzL0.net] 決着なんかついてない 低学歴知恵遅れのレスなんか情報価値ゼロだからな ココまでのレスは低学歴知恵遅れの落書き ただの低学歴知恵遅れのノイズ オレのエレガントな回答(>>82-83 )に質問したヤツが このあとどう考えることができるかがココでは重要なワケだからな
129 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 16:48:54.50 ID:OhNgC4130.net] 低学歴知恵遅れ君が見事にスルーされててワロタ お前ら流石だなw
130 名前:デフォルトの名無しさん [2018/09/22(土) 16:53:47.18 ID:PGp2AKzL0.net] スルーじゃない オレのレスは一切のスキがないほどカンペキなレスだからな オレのレスにレスすらできない
131 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 18:32:31.91 ID:7nPJqZuh0.net] よくやった
132 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 20:07:04.73 ID:sYLo1So00.net] ミスを取り繕おうとして必死に足掻く人間の尊い姿が見れました 今日はこれでおなかいっぱいです
133 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 20:24:37.68 ID:16ZpsTnK0.net] >>119 こんな感じ? https://stackoverflow.com/questions/25664848/unions-and-type-punning https://adriann.github.io/undefined_behavior.html Cならunionでよし、C++ならさらに one active を守れ、というところか。
134 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 20:28:37.33 ID:IQP82yEia.net] ここCだからC++の話は他所でやれ
135 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 20:44:12.64 ID:16ZpsTnK0.net] strict aliasing はCもだけどな d.hatena.ne.jp/yohhoy/20120220/p1
136 名前:デフォルトの名無しさん mailto:sage [2018/09/22(土) 21:03:12.63 ID:1VdbYLFX0.net] >>40 > とにかく、 void がクソだというのは取り下げる。 いや、voidはクソだぜ K&R Cでは「引数が0個でなければならない」とか 「返却値は使用禁止」といった概念がなかったので (void) のようなシュールな構文を後付けせざるを得なかったが () で引数0個にならないというクソルールを上塗りする形で登場したものだ クソルールの延長はずっとクソだ
137 名前:デフォルトの名無しさん [2018/09/22(土) 21:04:50.64 ID:PGp2AKzL0.net] ぜんぜん違う プロトタイプ宣言を厳密にできるようにしてるだけだからな
138 名前:デフォルトの名無しさん [2018/09/22(土) 21:08:08.86 ID:PGp2AKzL0.net] 昔のCはプロトタイプ宣言すらなかった 引数の数や順序の誤りがかなりのバグの温床になってたからな
139 名前:デフォルトの名無しさん [2018/09/22(土) 21:13:19.69 ID:PGp2AKzL0.net] やっぱりな低学歴知恵遅れは なにも知らないくせにテキトーなことばっかりいうのがよくわかる 低学歴知恵遅れが二匹以上あつまると ものすごい頭悪いレスに対してでものすごい頭悪いレスで スレが成立することになる