[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/11 11:58 / Filesize : 243 KB / Number-of Response : 1037
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 145



1 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 22:13:58.98 ID:9/te2eSJ0.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言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

116 名前:デフォルトの名無しさん [2018/02/25(日) 11:58:37.90 ID:XjF3qDop0.net]
俺も意味がわからん。

117 名前:デフォルトの名無しさん [2018/02/25(日) 12:17:48.32 ID:XjF3qDop0.net]
>>111
それはメモリ確保に失敗してるんだから解放したらダメだよね。
自分で malloc() 使って新規にメモリ確保しようとした場合でも NULL 返されたら元の方は free() しないだろう。

118 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 12:28:06.03 ID:vTPpNH4CM.net]
>>110
結果整合性って言葉が悪かったな
reallocの機能を重視するなら使えば良いと思うよって書けば良かった

冪等性の意味が分からないならググってくれとしか

119 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 12:33:20.87 ID:XjF3qDop0.net]
あ、もしや >>109 の言ってる冪等性がないって引数で渡したポインタとは違うポインタを返してくることがあるって意味?
あまりにも当たり前すぎて思い

120 名前:つかなかったが。

しかし malloc() の実装にもよるだろうがこれを許さないと効率は悪くなるのではないか?
[]
[ここ壊れてます]

121 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 13:13:10.59 ID:vTPpNH4CM.net]
>>115
そう
違うアドレスを返して初めて発現するバグをボケナスビがやらかしてから俺は戒律で禁じた
他にも初期化やアライメントの点もある

メモリ効率を重視するなら自分で管理構造作るべきだと思ってる

冪等性を最重視する俺はこのスレじゃ少数派みたいだからあまり気にせんでくれ

122 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 13:20:16.07 ID:L5EpKLxx0.net]
>>115
× 効率は悪くなる
○ まともな実装は無理(ほぼ全ての場合に失敗する)

>>116
気持ちは分からんでもないが、
reallocはそれが仕様で、いやならstd::stringみたいにラップするしかない。

123 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 13:22:50.04 ID:I4H7O+d10.net]
(流れが質問者を放置しているように感じる)

124 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 13:26:41.23 ID:qARxqxts0.net]
>>118
質問者の疑問を解決する事より自分の主張したいことに論点がシフトしちゃうのはよく見る光景だね。
質問スレでそれじゃダメだと思うが。



125 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 13:38:08.00 ID:vTPpNH4CM.net]
>>118>>119
確かにそうだな
俺は安価ついた分しかレスしないつもりだったけど、この話題についてはもう止めとく

スレ汚しすまんかった

126 名前: mailto:sage [2018/02/25(日) 13:44:15.14 ID:9iGYkY9C0.net]
>>103 >>104
c++ には realloc() は取り入れられなかった

ちょっと例が悪いが
concat3(char *a, char *b, cha *c) 文字列a と 文字列b と文字列c を連結して文字列a に返す関数を書こうとする
ここで 2 回の realloc() を行うとする
1 回目の realloc() は成功するが、2回目の realloc() は失敗したとする
このとき「関数 concat3() が失敗したときは状態は不変、成功したときだけ状態を変更する」という原則を満たせない

我ながらちょっと例が悪いとは思うが、
realloc() を暢気に使っていると、エラー処理が一手ばったりになってしまう。

127 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 13:49:23.19 ID:L5EpKLxx0.net]
>>120
俺はいいと思うぞ。
むしろ無理に「質問者様が神様だ」的にしたがるゆとりは死ねと思うが。

そもそも質問には回答つきまくってるし、質問者側が何らかの反応しないと話は進まないだろ。
流れも読めない癖に流れを主張するゆとりは殺すしかない。

128 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 14:39:52.01 ID:XjF3qDop0.net]
なるほど。まあ確かに使い方や使い所を間違えればハマるものではあるな。

そういや以前 realloc() で渡すポインターがNULLではなくサイズの指定が0だとfree()されるってのでハマったことがあった。w

129 名前:片山博文MZ mailto:sage [2018/02/25(日) 14:51:26.22 ID:nm5odapXd.net]
ANSI準拠のreallocは、mallocとfreeの代わりになる。

130 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 15:46:21.99 ID:s5td7qK+0.net]
未だにANSIの規格票を読んでる日本人いたのか

131 名前:デフォルトの名無しさん [2018/02/25(日) 15:51:12.25 ID:DMbXpP0c0.net]
俺も読んでる

132 名前:デフォルトの名無しさん [2018/02/25(日) 15:59:51.76 ID:NsuolzGja.net]
未だにANSI使う理由って何だろう?

133 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 16:00:08.18 ID:s5td7qK+0.net]
ISOではなくANSIか?

134 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 18:48:53.57 ID:bdk82RzyM.net]
>>121
それはプログラムの組み方が悪いだけでrealloc()のせいじゃないだろ



135 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 18:55:32.39 ID:I4H7O+d10.net]
>>121
最初から文字列3つ分の領域確保すれば良いんでないの?

136 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 19:23:06.76 ID:L5EpKLxx0.net]
>>121
reallocではなく、自前でmalloc+memcpy+freeでやればいいだけ。
ただその前に、指摘されているとおり、
3つの「同時に変更される」生ポインタを掴ませるのが問題。
その場合には普通は一つの構造体に入れてそれ経由で使い、
「同時に変更される」という条件が外部に見えないようにする。(隠蔽)
勘違いしている奴も多いが、OOPは文法の話ではない。

137 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 20:09:18.52 ID:fbPK05Px0.net]
reallocをmallocとmemcpyでやろうとするともとのメモリサイズわからずに詰まない?

138 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 20:41:49.10 ID:p0obWBJzd.net]
結果何をどうすればいいんですか?レベルが高すぎて何を言ってるのかさっぱりです

139 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 20:48:37.39 ID:Fc1MjilIa.net]
だからreallocはいまいちって話なのでは?

>>132
malloc_usable_size, _msize

140 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 20:58:36.53 ID:H8bVBKR7a.net]
>>133
reallocに関してはひとまず気にしなくて良いかと

141 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 21:15:09.00 ID:I4H7O+d10.net]
>>133
見つかった行の保持ってメモリー上でやりたいの?

142 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 21:58:18.03 ID:EC2T/8ze0.net]
>>136
別にこだわりがあるわけではないです。

明日やろうと思うので、調べるあたりこれ見とけとかあります?

143 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 22:15:41.07 ID:I4H7O+d10.net]
メモリ上に保持しなくても良いなら、検索して見つかった行をそのままファイルに書き出してしまう方が簡単だと思う。
あと、どういう環境で実行するか分からないんだが、もしも正規現が使えるなら、それを利用する方が簡単だと思う。
複数のキーワードで探したいときは一括で指定できるし。

144 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 22:23:36.04 ID:L5EpKLxx0.net]
>>137
1. grep/sedでおk
2. AWK/Perl/Ryby/Pythonでもおk
3. つかその用途でC使うとか正気じゃねえ。メモリ上でゴリゴリやるにしても普通はスクリプト言語。
4. それも分かっててC使う覚悟のある奴がここでこんなアホな質問する訳ねえ。>>138



145 名前: mailto:sage [2018/02/25(日) 22:51:32.71 ID:9iGYkY9C0.net]
>>139
>用途でC使うとか正気じゃねえ。メモリ上でゴリゴリやるにしても普通はスクリプト言語。
その判断をするのには、一定の C での経験が必要だと思います
python なんかでやったほうがいい仕事をあえて C で書く経験はあったほうがいいでしょう

146 名前:デフォルトの名無しさん mailto:sage [2018/02/25(日) 23:44:30.89 ID:EC2T/8ze0.net]
VBでは出来るんですがCの勉強をかねてトライしてます。
いろいろとありがとうございました!明日頑張ってみます!

147 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 11:24:56.97 ID:0MjsGOBH0.net]
>>132
メモリーサイズを知る必要はない
そもそも確保されてるサイズと strlen(a) が同じかどうかはわからんし

148 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 12:24:58.22 ID:4Dp3S/v30.net]
>>142
concat3とかいうQZのボケたろくでもない例のことは忘れろ

149 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 12:38:44.35 ID:lxlU26hn0.net]
>>132
メモリサイズは非公開というだけで、内部的には持っている
だからreallocの作者=mallocの作者が詰むことはない

それ言い出したらfreeも解放量わかんなくて詰むだろ

150 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 13:29:20.63 ID:zI4VKzz4M.net]
>>143
お前は何を言ってるんだ?

151 名前:デフォルトの名無しさん mailto:sage釣 [2018/02/26(月) 17:32:30.23 ID:e+KVEn7XM.net]
K&Rで説明されている筈なんだが

152 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 17:41:14.36 ID:vVA9DKIbd.net]
結果出来ませんでした...

153 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 20:20:31.75 ID:4PPe6ndQ0.net]
>>144
reallocの作者がmallocの作者と違う場合なんだが

154 名前:デフォルトの名無しさん [2018/02/26(月) 20:38:25.45 ID:9Qy36xi2a.net]
違うかなあ?まあ、ソース公開されてれば違う人が書くことは楽だが。



155 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 22:00:57.86 ID:Z8+ASG310.net]
>>147
どの辺がどうできなかったかを書いてみて

156 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 22:08:57.21 ID:lxlU26hn0.net]
>>148
俺は、それを空想論と断言してみる
おまえさん恥をかかせてくれることはできるかな?

157 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 23:37:18.28 ID:Il2cKkTC0.net]
>>150


158 名前:P純に自分でやってみようと思い一から書き始めたんですけど

CSVファイルのカンマ区切りで、行は日々増える形式で、13列の固定。それぞれ数字だったり文字だったり混合。
ファイルを開いて読み込んで一行ずつ検索文字列と比較して一致したら表示列を指定して表示させ、一致しなかったら次へを繰り返していこうと思って始めたんですけど。
配列に入らずうまいこといきませんでしたね。ネットの参考もいいのが見つからなくて...

前載せたコードを読みといた方が近道ですかね?
[]
[ここ壊れてます]

159 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 23:49:55.49 ID:KRl4xBEA0.net]
>>151
もともと標準mallocやfreeを使って自前realloc作るならという話の流れだっただろ

160 名前:デフォルトの名無しさん mailto:sage [2018/02/26(月) 23:57:50.74 ID:Z8+ASG310.net]
>>152
CSVファイルを読み込むプログラムは作った事ありますが
CSVの仕様をどの位受け入れるかで複雑さも変わると思います。
この辺は汎用的に作るか、自分が処理したいCSVの仕様の範囲にするかで違うとは思います。

scanf系の処理はとても癖が強く、
よっぽど仕様に精通していないと填まります
私ならその道を行くのはやめます

161 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 00:01:01.54 ID:uYnnRgds0.net]
>>152
grepでおk、マジで
そんなことをCでやる馬鹿はいないから、ろくな参考情報がないのも当たり前。

162 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 00:04:33.43 ID:vDZ6bRaj0.net]
"と , のエスケープと 1要素の中に改行を含む文字列周辺 RFCみて頭いたくなった

163 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 00:13:39.83 ID:euQ4hghrM.net]
>>152
俺なら間違いなくpythonつかうね
https://qiita.com/okadate/items/c36f4eb9506b358fb608

164 名前:デフォルトの名無しさん [2018/02/27(火) 07:16:02.83 ID:pdRg+OHax.net]
配列とかポインタとか難しいと聞いていたから心配していたけど
とりあえず基礎の解説書レベルなら分かった。やれやれ。



165 名前:デフォルトの名無しさん mailto:sage釣 [2018/02/27(火) 09:21:35.76 ID:uskldtVs0.net]
指定したサイズの2次元配列を確保する関数を設計してくれまいか?

166 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 10:07:05.72 ID:XfJ/ct090.net]
>>159
無理じゃね?
char (*dim_alloc(size_t width, size_t height))[width];
最後の[width]がエラーになる[*]にしてもあかん
[]にすると通るには通るが、今度は
char (*a)[3][4] = dim_alloc(3, 4); //型の不一致になる

167 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 10:08:23.25 ID:XfJ/ct090.net]
あ、失礼
char (*a)[4][3] = dim_alloc(3, 4);
結果は同じだけど

168 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 10:55:55.07 ID:XfJ/ct090.net]
できた
void dim_alloc(size_t, size_t, char (**b)[*]);
int main(void)
{
size_t width = 3, height = 4;
char (*a)[width];
dim_alloc(width, height, &a);
}
void dim_alloc(size_t width, size_t height, char (**b)[width])
{
*b = (char (*)[width])malloc(width * height);
}
これならおk

169 名前:デフォルトの名無しさん [2018/02/27(火) 11:45:45.08 ID:r7ed+pq5a.net]
ポインタの配列使っちゃえばいいじゃん。free()する時注意が必要だがアクセスがa[y][x]形式なのは同じだし。

170 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 11:48:09.27 ID:w9pRJ3lK0.net]
二次元配列とポインタの配列だと、使い方が違うでしょう

171 名前:デフォルトの名無しさん [2018/02/27(火) 12:21:42.40 .net]
mallocされたサイズが分からんとか何言ってるの?
gccもVCも確保サイズを返す関数を提供してるだろ

172 名前:デフォルトの名無しさん [2018/02/27(火) 12:27:42.17 ID:r7ed+pq5a.net]
>>164
確保時と解放時が違うが読み書きアクセスする時の表現は同じにできる。

173 名前: mailto:sage [2018/02/27(火) 12:30:04.09 ID:CvenUVT40.net]
>>159
gcc6 では一筋縄ではいかなくなっているね…

174 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 12:35:33.45 ID:XfJ/ct090.net]
>>165
非標準のね



175 名前: mailto:sage [2018/02/27(火) 17:51:59.04 ID:CvenUVT40.net]
>>159
できた!
https://mevius.5ch.net/test/read.cgi/tech/1434079972/36

176 名前: mailto:sage [2018/02/27(火) 18:02:32.91 ID:CvenUVT40.net]
>>162
>>159
>char (*a)[width];
これに値をいれないといけないし、そもそも、それも含めて malloc() してほしい、のでは

177 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 18:07:21.76 ID:BEzsaLeta.net]
ああ。先頭にポインタを詰め込んで一発で全部free()できるようにしたのか。

178 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 19:24:56.97 ID:LuvO3mbWM.net]
>>165
非標準だし、そもそもそんなものを使う必要は滅多にない

179 名前:デフォルトの名無しさん [2018/02/27(火) 19:27:39.38 .net]
>>168,172
上の方でmalloc作者じゃなきゃrealloc作れないっていう主張があったから、普通は処理系で専用関数を提供してるだろって話

180 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 19:47:16.45 ID:jvpYfXKk0.net]
>>159
わざわざ関数を設計しなくても、例えば3次元配列なら
int ary[dim_z][dim_y][dim_x];
int (*ptr)[dim_y][dim_x] = malloc(sizeof(int) * dim_z * dim_y * dim_x);
とやれば ary と ptr は同等に扱えないかな。

ptrはfree()する必要があること、sizeofの対象にしたとき同じ値を返さないことは
別関数を作っても同じだし。

181 名前:デフォルトの名無しさん [2018/02/27(火) 19:54:46.22 .net]
>>159は二次元配列を確保とは言っているがインタフェースは特に注文ないんだからxとyと型サイズを掛けて(必要ならアラインメント考慮も入れて)mallocしてvoidポインタを返せばいいよな

182 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 20:35:43.21 ID:XfJ/ct090.net]
>>174
別関数を作っても同じとは思わないな
void dim_alloc(size_t, size_t, char (**)[*]);
void dim_free(size_t width, char const volatile (*head)[width])
{
free((void *)head);
}
dim_allocが内部的に割り付けに使っている手段を
dim_freeに隠蔽する意味はあるんだから

183 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 20:42:39.05 ID:LuvO3mbWM.net]
>>173
> 上の方でmalloc作者じゃなきゃrealloc作れないっていう主張があった
そもそもその主張がおかしいだろ

184 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 21:38:07.83 ID:ejzPWrTva.net]
>>177
だから、その主張はおかしいって話の流れだったろ



185 名前:デフォルトの名無しさん [2018/02/27(火) 23:15:01.44 ID:7DMjjd1qx.net]
テトリスのプログラムって難しい方なの?

186 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 23:18:17.42 ID:w9pRJ3lK0.net]
そんなには難しくはないと思う
作る人がグラフィック処理を理解していて
キー入力のリアルタイム処理をこなせればね

187 名前: mailto:sage [2018/02/27(火) 23:20:17.44 ID:CvenUVT40.net]
>>179
自分で組むためにはいろいろと段取りが必要で結構難しい部類になるかと思います
一時間で組む、とかいうやつも下準備はしてあったと思います

188 名前:デフォルトの名無しさん [2018/02/27(火) 23:26:02.43 ID:7DMjjd1qx.net]
PetiteTech にあるテトリス
ブロックパズルの作り方 だと これはどうなの?

189 名前:デフォルトの名無しさん [2018/02/27(火) 23:31:30.01 ID:7DMjjd1qx.net]
高校生ぐらいが無理なく取り組めるゲームプログラムって
無いですかね?もちろん初心者。

190 名前:デフォルトの名無しさん mailto:sage [2018/02/27(火) 23:54:04.69 ID:8YslYmAQ0.net]
パズル系は楽そうに見えるけど、判定部分を作るのがキツいと思う

まずは固定画面でブロック崩し
次は横スクロール画面でスーパーマリオもどきぐらい

描画ライブラリを自作出来なかったら dxlib とかのフリーライブラリが使える
2Dに慣れたらUnityのフリー版で3Dゲーム作ってみるのもいい

191 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 00:04:51.75 ID:8c8qszi40.net]
ここに来て何でこんなに初心者が沸いているのか分からんが、
スレ分けた方がいいんじゃないか?
というか、上級者用のスレがあったら紹介してくれ。俺がそっち行くから。


>>183
高校生なら学校の勉強しとけ。特に数学。

俺はゲーム畑ではないが、今ですらエンジンは統合されつつあり、
フレームワーク化は今後ますます進む。というか、そうならない理由がない。
そのとき、中途半端にCが出来ても使い物にならない。
ゲームプログラミングは上位のフレームワーク上の部分と
下位のゲームエンジンの部分に分離され、Cが担当するのは後者で、
当たり前のように座標を使いこなし、ゴリゴリにチューニングすることが求められる。

つっても通じないだろうが、多分高校生の考えるゲームプログラミングなら、
C#でunity使うのが今風なんじゃね?そっちやっとけよ。

192 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 00:42:29.18 ID:QXjyWHPf0.net]
そもそも枯れた技術のC言語スレで上級者なんているのかな・・・?

193 名前: mailto:sage [2018/02/28(水) 00:49:49.08 ID:8h6/NeTB0.net]
>>186
>>159 をサクッと解ける人は上級者かもしれません、私は size(int)=sizeof(int *) を仮定していたために酷くはまりました

194 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 01:07:30.80 ID:8c8qszi40.net]
>>186
むしろお前含めて一通りも使えない馬鹿が沸きまくっていることが問題だ。
それでも初心者は初心者同士で好きにやればいいが、
元々居た連中は逃げるしかない。

大体、>>184も間違いだ。
そもそもプログラミングすら出来ない奴がCから始めることが間違っている。
今は昔みたいにCしかない状況ではない。他に適した言語がいくらでもある。
だから「C初心者」は許容するとして、「プログラミング初心者」はお帰りください、でいい。
というか、それが本人の為だ。

「判定部分」は言語に依らない。
だから「判定部分を作るのがキツい」のなら、まずその程度簡単に出来るまで他言語で鍛えろ、でしかない。
それで、速度的に問題がある場合はそこをCに切り替えていくわけでさ。
(俺は使ったこと無いから推測だが、)普通の当たり判定ならエンジン側で当然持ってるだろ。
落ちゲーもそれなりの歴史はあるし、判定ルーチンがエンジンにあってもおかしくない。
そもそもテトリスの判定(一列埋め)が難しいという時点で論外だし。
お前は>>184が本人の為になるとでも思ってるのか?

高校生なら学校のお勉強しとけ、がよっぽどマシだろ。
そもそも高校生が2chするのが間違っていると思うし。



195 名前:デフォルトの名無しさん [2018/02/28(水) 01:09:56.20 ID:3MQnmRRma.net]
>>188
そんなに不満ならスレ立てれば良いのでは?
上級者が集まったらどんな話題が出るのか興味あります

196 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 01:15:14.33 ID:m1ANm8An0.net]
上級者かそうで無いかは、どの辺で分けるの?
もしかして年齢?

197 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 01:20:42.25 ID:QXjyWHPf0.net]
ここにいる自称上級者の人達は、C++やC#なら標準で使える様な物を何で再発明しているんだろう?

ポインタ返すだけの関数だとメモリオーバーランが検知出来ないから業務では危なくて使えないし、
バッファへのポインタは別ソース内にstaticで隠蔽してintとかのハンドルだけ返して、
引数範囲チェック付きのget,setと、ハンドルでfreeする関数まで作らないと正解とは言えない

198 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 01:45:42.72 ID:8c8qszi40.net]
とりあえず他の人の反応見て週末にでも俺が立てるよ。
テンプレは>>1踏襲だが、以下に変える予定。


スレタイ:C言語相談室
C言語の話題のみ取り扱います C++の話題はC++スレへ
上級者専用です。
10,000行程度のソースを取り扱ったことがない人は以下スレへどうぞ。
(このスレ)


>>190
Cなら10k行で切っても人数集まるんじゃないかな?と思っている。
ゆずって5k行くらいにしとくか?
或いはC++も混ぜとくか?

199 名前:C++スレも「上級者専用にしていいんじゃないか」って話も出てたし。
ポシャったけど。

>>191
そもそもそういう思想ではないし、C++やC#がいいと思うのならそれらを使えばいいだけ。
個人的にはC使いは無駄に頑張りすぎていて、
もうちょっと上手く手抜きをすることも覚えるべきだとは思うが、
わざわざCスレで「何回目だよそれ?」をぶちかますお前も頭おかしいと思う。
[]
[ここ壊れてます]

200 名前: mailto:sage [2018/02/28(水) 01:53:16.04 ID:8h6/NeTB0.net]
>>192
1万行ですか…気が遠くなりますね…
こんなのなら書いたことがありますが…
https://code.hackerearth.com/431130T
https://code.hackerearth.com/7b7b82s

201 名前:デフォルトの名無しさん [2018/02/28(水) 01:54:28.86 ID:ifAjmiIg0.net]
作ったよ。

C言語上級者スレ
https://mevius.5ch.net/test/read.cgi/tech/1519750371/

202 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 01:57:04.78 ID:ifAjmiIg0.net]
あ、ごめん。リロードしてなかった。そういうテンプレは入れてないな。
じゃあ俺の作った方は放置でいいよ。新しいのできたら削除依頼しとこう。

203 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 02:06:17.61 ID:m1ANm8An0.net]
>>192
1CU1ソースって仕事を昔してた。
モジュール分割すら認めてないサイトだった
ソースはそれぞれ1万行越えてたな
最大2万行あったと思う

1日に600行書いたことはある
でも自分を上級者だとは思っていない
そんな自信はありません
書くソースは500行程度だな
どんなに詰め込んでも2000行が限界だわ

204 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 02:13:49.37 ID:8c8qszi40.net]
>>193
これ何故コードに展開したんだ?何かの実験か?
それにしても意味があるとは思えないが。

さすがに手打ちとは思えないから、当然自動コード生成として、
その場合は入力は木データなのだから、歩くのが普通だろ。
100行程度で済む内容だと思うが。



205 名前: mailto:sage [2018/02/28(水) 02:19:55.16 ID:8h6/NeTB0.net]
>>197
同じ課題についた別解答は次のとおりです
https://ideone.com/vNZWaH
まあこの程度の内容ではあるのです

206 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 02:38:51.42 ID:8c8qszi40.net]
>>198
どういう課題かは知らんが、
データとして処理するべき案件をcase文にしてしまうという発想が間違っていると思うけどな。
普通は bool flags[6] でありなしを管理し、10行程度で書ける内容だぞこれは。

207 名前: mailto:sage [2018/02/28(水) 02:47:13.06 ID:8h6/NeTB0.net]
>>199
ああ、それは説明が必要でしたね
確かにこの課題内容の「縛り」は理解不能でしたが、当時、それに知恵を絞った者も複数いたようです、宿題スレ、粘着の嵐でもう見る影もなく廃墟になってしまったんですが

課題内容
C言語で、
#include <stdio.h>

int main(void){
char n;
/*
ここを埋める。変数の新たな定義
や,printf,scanf以外の関数の呼び出しは禁止
*/

}
な場合で、
1から6までの数字をキーボードから最小で5回受ける
(同じ文字の入力や範囲外の文字の入力は
「無視しました」と出力)
残り一つの数字がわかる場合はキーボード入力
を待たずに決めてよい
最終的に、入力された順番とは逆順に入力
された文字を出力

208 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 03:11:31.80 ID:8c8qszi40.net]
>>200
クソ問題はやるだけ無駄だぞ。
大体そういうのを考えた奴は実際はプログラマではないことが多い。
だからどういう事が実際に必要なのか分かってないのさ。
K&Rにしても禿本にしても、演習課題付けてくれてるだろ。あれをやる方が1万倍マシ。
或いはテトリスなりを実際に自分で作った方がいい。
少なくともそこでは「実際に必要なこと」しか要求されない

209 名前:わけでさ。

スタックを1バイトも使ってはいけない状態で、
展開したコードならどれだけ大きくてもいいとか、あり得ないよ。
スタックは128バイトまでな、とかならまだ分かるが。
[]
[ここ壊れてます]

210 名前: mailto:sage [2018/02/28(水) 03:20:22.48 ID:8h6/NeTB0.net]
>>201
あはは…そのとおりですね
非常識・無常識でウケを狙ったりもして楽しかったんですが
今残っているスレとしては、ここが雰囲気が似ていますね
https://mevius.5ch.net/test/read.cgi/tech/1514772904/

C 言語の宿題に対して執拗に prolog で書いていた人もいました、いつも凄いとおもっていました

211 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 04:52:04.37 ID:u7A4CcwO0.net]
>>199 bool ?

212 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 05:21:30.33 ID:sJxURYwy0.net]
普通の有限オートマトンやんな

213 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 08:56:58.23 ID:57y2KSxK0.net]
無限オートマトン ってどんななの?

214 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 09:12:27.49 ID:MJOJ5lH0M.net]
状態数が有限じゃないってことだけど、解析できないし分類上も有用じゃないので、現実には扱わないよ



215 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 09:52:53.28 ID:eOQjYTv40.net]
>>183
市販品=プロの作品を真似しようったってそんなの無理だ

必要なのはアイディアの発想力、つまり遊びのセンスだ
たとえばキーボードを壁に吊して射的ゲームとかなら
プログラム的には簡単だろ

216 名前:デフォルトの名無しさん mailto:sage [2018/02/28(水) 11:17:44.41 ID:A9USqIB/0.net]
>>183
「ヒット・アンド・ブロウ」や「ハングマン」あたりかな。
乱数ベースの当て物に飽きたらテキストアドベンチャーに移行。
自然言語処理に至る。

…真に受けないでくれよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef