C言語でBASICの「For i = X To Y Step P」
2 days ago- 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]






