C言語でBASICの「For i = X To Y Step...
h_hiro: 【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」に相当することを、なるべくスマートに書く方法。具体的には、「Pが正負どちらでも対応できるコードを」なるべく短く書きたい。 [http://twitter.com/h_hiro/status/5501395344]
mswar777: for(i = X; i != Y; i += P) とか? RT @h_hiro: 【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」に相当することを、なるべくスマートに書く方法。具体的には、「Pが正負どちらでも対応できる… [http://twitter.com/mswar777/status/5501454172]
h_hiro: @mswar777 ありがとうございます。 for(i = X; i != Y+P; i += P) これでよかったですね。// floatに使えないという問題がありますが [http://twitter.com/h_hiro/status/5501479553]
mswar777: あ、だめだ。Pが大きい値だと飛び越す RT @mswar777: for(i = X; i != Y; i += P) とか? RT @h_hiro: 【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」に相… [http://twitter.com/mswar777/status/5501487544]
h_hiro: @mswar777 あ、そういえばorz [札幌忘年会http://is.gd/4MHdR] [http://twitter.com/h_hiro/status/5501492924]
whitedev: ん〜・・ん?? RT @h_hiro:【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」に相当することを、なるべくスマートに書く方法。具体的には、「Pが正負どちらでも対応できるコードを」なるべく短く書きたい。 [http://twitter.com/whitedev/status/5501543244]
dj_kusuha: @h_hiro for(i=X;i!=Y;i+=P) しか思いつかない [http://twitter.com/dj_kusuha/status/5501550077]
dj_kusuha: きちんとX,Y,Pを設定しないと止まらないっていう( [http://twitter.com/dj_kusuha/status/5501565053]
h_hiro: @dj_kusuha @mswar777 氏から指摘があったのですが、その方法だと「変数が整数型で」「Pが1か-1」でないと使えないのですよね… [札幌忘年会http://is.gd/4MHdR] [http://twitter.com/h_hiro/status/5501568628]
mswar777: とりあえず for( i = X; i >= Y; i += P ) と for( i = X; i <= Y; i += P ) をPの正負で場合分けがシンプルか。条件式に二項式使えばもうちょいシンプルにすむ気も RT @h_hiro: 【急募】C言語(C++でも)において… [http://twitter.com/mswar777/status/5501571683]
h_hiro: @mswar777 もしC言語でラムダ式が使えれば、スマートな書き方がいくらでも思いつくのですけどね…。 [札幌忘年会http://is.gd/4MHdR] [http://twitter.com/h_hiro/status/5501587861]
AquaCeleste: for ( i=X ;(Y-i)*(X-i)<=0 ; i+=P ) でおk? @mswar777 RT @h_hiro: 【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」に相当することを、なるべくスマートに書く方法。 [http://twitter.com/AquaCeleste/status/5501590687]
mswar777: iがfloatな場合でも一応いけるよね。これだと。とりあえず外出準備せんと。電車の中で考えようw [http://twitter.com/mswar777/status/5501592536]
mswar777: boost入れれば使えるおw RT @h_hiro: @mswar777 もしC言語でラムダ式が使えれば、スマートな書き方がいくらでも思いつくのですけどね…。 [札幌忘年会http://is.gd/4MHdR] [http://twitter.com/mswar777/status/5501608893]
mrkn: @h_hiro boost [http://twitter.com/mrkn/status/5501628874]
h_hiro: .@mswar777 @mrkn そういえば。ただboostのラムダ式って文法が気持ち悪くてw 使うかどうか検討します。 [札幌忘年会http://is.gd/4MHdR] [http://twitter.com/h_hiro/status/5501649514]
setoh2000: for(i=X;(P>0)?i<=Y:i>=Y;i+=P)かな RT @mswar777 for(i = X; i != Y; i += P) とか? RT @h_hiro: 【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」に相.. [http://twitter.com/setoh2000/status/5501651733]
mswar777: お〜 RT @AquaCeleste: for ( i=X ;(Y-i)*(X-i)<=0 ; i+=P ) でおk? @mswar777 RT @h_hiro: 【急募】C言語(C++でも)でBASICの「For i = X To Y Step P」(Pは正負&少数あり) [http://twitter.com/mswar777/status/5501659493]
openduck: @h_hiro for(i=x ; i < n ; i+=p) { h_hiro++ } ; [http://twitter.com/openduck/status/5501659741]
h_hiro: @openduck それだと、pが負のときに上手く動作しないのですよね(´・ω・`) [札幌忘年会http://is.gd/4MHdR] [http://twitter.com/h_hiro/status/5501674269]
whitedev: スマート重視だったら for (i=X; ; i+=P) としてループ内で分岐・breakするとか。 RT @h_hiro:【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」に相当することを、なるべくスマートに書く方法。 [http://twitter.com/whitedev/status/5501678931]
h_hiro: RT @mswar777: お〜 RT @AquaCeleste: for ( i=X ;(Y-i)*(X-i)<=0 ; i+=P ) でおk? @mswar777 RT @h_hiro: 【急募】C言語(C++でも)でBASICの「For i = X To Y Step P… [http://twitter.com/h_hiro/status/5501682522]
openduck: @h_hiro そっか、負の場合を考えてなかったわい。 [http://twitter.com/openduck/status/5501683259]
takaaki_abe: メンテナンスの際にバグの温床になりそうなループ評価式を書くのはお勧めしません(キリッ) [http://twitter.com/takaaki_abe/status/5501688829]
mswar777: それ、よく即座に思いつくな〜。数学力の違いを思い知る [http://twitter.com/mswar777/status/5501691518]
whitedev: でもさ、「そんなのできない」っていう方が優しさだと思うんだよね。絶対にどう書いてもメンテ面が最悪だから。 [http://twitter.com/whitedev/status/5501693149]
takaaki_abe: 可読性が高いこの方法を推奨。 RT @whitedev: スマート重視だったら for (i=X; ; i+=P) としてループ内で分岐・breakするとか。 RT @h_hiro:【急募】C言語(C++でも)において、BASICの「For i = X To Y Step P」 [http://twitter.com/takaaki_abe/status/5501702257]
hkato193: メモメモ。 RT @mswar777: お〜 RT @AquaCeleste: for ( i=X ;(Y-i)*(X-i)<=0 ; i+=P ) RT @h_hiro: 【急募】C言語(C++でも)でBASICの「For i = X To Y Step P」(Pは正負&少数) [http://twitter.com/hkato193/status/5501706612]
mswar777: ですね。物凄く把握しずらい式になるけどw RT @setoh2000: for(i=X;(P>0)?i<=Y:i>=Y;i+=P)かな [http://twitter.com/mswar777/status/5501710345]
h_hiro: .@AquaCeleste 氏の回答: for(i=X; (Y-i)*(X-i)<=0; i+=P){ ... } これは面白いやり方だ。> BASICの「For i = X To Y Step P」に相当するCのコード [http://twitter.com/h_hiro/status/5501712234]
dj_kusuha: @h_hiro すげえwww [http://twitter.com/dj_kusuha/status/5501716977]
mswar777: @whitedev うん。仕事で使うんだったら普通にif文で分けますww [http://twitter.com/mswar777/status/5501721171]
h_hiro: .@takaaki_abe @whitedev あー、長い条件文をループ内に押し込めてしまうということですね。ありがとうございます。 [札幌忘年会http://is.gd/4MHdR] [http://twitter.com/h_hiro/status/5501721249]
openduck: @h_hiro for(i=x ; ; i+=p) {......} というloopでいいのでは? 結局、終了判定はloop内でしなきゃならないけど。 [http://twitter.com/openduck/status/5501723470]
takaaki_abe: 一方ロシアはループ内でbreakした。 RT @mswar777: それ、よく即座に思いつくな〜。数学力の違いを思い知る [http://twitter.com/takaaki_abe/status/5501727160]
setoh2000: BASICを少しだけ見直したw RT @h_hiro .@AquaCeleste 氏の回答: for(i=X; (Y-i)*(X-i)<=0; i+=P){ ... } これは面白いやり方だ。> BASICの「For i = X To Y Step P」に相当するCのコード [http://twitter.com/setoh2000/status/5501732375]
dj_kusuha: 「スマートに」という表現に可読性は含まれないんだろうか、と思ったけど気にしない事にする( [http://twitter.com/dj_kusuha/status/5501732589]
mswar777: @takaaki_abe Cパズルとしてはおもろいけど。仕事ではつかえないですなw [http://twitter.com/mswar777/status/5501738828]
whitedev: 一票ありがとうございますw RT @takaaki_abe: 可読性が高いこの方法を推奨。 RT @whitedev: スマート重視だったら for (i=X; ; i+=P) としてループ内で分岐・breakするとか。 RT @h_hiro:【急募】C言語(C++でも)において [http://twitter.com/whitedev/status/5501770629]
setoh2000: しかし、BASICはどうやって実装しているんだろう。「For i = X To Y Step P」 [http://twitter.com/setoh2000/status/5501774259]
whitedev: @mswar777 自分だけで使う場合でも、過去の自分との戦いがありますしね(^^;; なるべく自分の範囲で理解できるコードにしたいです [http://twitter.com/whitedev/status/5501788319]
mswar777: なんていうかTLがC式だらけw ちとカオス [http://twitter.com/mswar777/status/5501793598]
urdcat: for( temp=x*p, i=x; temp<y*p; i += p, temp += p*p ) じゃ駄目?ちょっとだけ重いけど、今のCPUは乗算軽いしw RT @mswar777: iがfloatな場合でも一応いけるよね。これだと。とりあえず外出準備せんと。電車の中で考え [http://twitter.com/urdcat/status/5501845805]
urdcat: for( i=x; i*p<y*p; i += p )でもいいかぁw [http://twitter.com/urdcat/status/5501914328]
urdcat: 欠点は計算精度が半分の桁数になるってこと…。 RT @urdcat: for( i=x; i*p<y*p; i += p )でもいいかぁw [http://twitter.com/urdcat/status/5501942080]
urdcat: @h_hiro for( i = x; x*p < y*p; i += p ) { ~ } [http://twitter.com/urdcat/status/5502142406]
mswar777: @urdcat お〜、確かにそれでもよさげっす [http://twitter.com/mswar777/status/5502142687]
urdcat: 精度落とさない方法があればねぇ。pが0.000001なんて値だときっつい結果に(^^; [http://twitter.com/urdcat/status/5502171363]
Nov 6th