- ベストアンサー
変数
変数nで検索してなければn+1でさがす。更に無ければn-1で探すの繰り返しをプラスマイナス4まで検索したいときの書き方がわかりません。
- chunyan
- お礼率33% (1/3)
- Visual Basic
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私が思う美しいコードはVBAだとこんな感じです。 (整形用に行頭スペースは全角にしています) Sub INSPCTNRNG() Const StrtNum As Long = 4 '検査を開始する要素番号(=n) Const InsRng As Long = 4 '検査をする範囲(=+/-いくつまで検索するか) Const TrgtVl As Variant = -4 '目的の値 Dim i As Long 'ループカウンタ Dim flgFnd '目的の値が見つかったかどうか flgFnd = False i = 0 TrgtArry = Array(-4, -3, -2, -1, 0, 1, 2, 3, 4) 'テスト用変数の作成 Do While Abs(i) <= InsRng ' MsgBox "変数(" & StrtNum & ADDPSGN(i) & ") = " & TrgtArry(StrtNum + i) 'デバッグ用 If TrgtArry(StrtNum + i) = TrgtVl Then flgFnd = True Exit Do End If If Sgn(i) > 0 Then i = i * (-1) Else i = Abs(i) + 1 End If Loop If flgFnd Then ' MsgBox "変数(" & StrtNum & ADDPSGN(i) & ")で目的の値" & TrgtVl & "が見つかりました" 'デバッグ用 MsgBox "目的の値が見つかりました" Else MsgBox "目的の値が見つかりませんでした" End If End Sub 'デバッグ用関数 'Function ADDPSGN(TV) ' If Sgn(TV) >= 0 Then ' ADDPSGN = "+" & TV ' Else ' ADDPSGN = TV ' End If 'End Function
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17068)
変数って文字列変数もあるのでは。だから、質問の変数は数値変数か。 プラスマイナス4までの合計9の数のうち、湯銭順位があるような質問の書き方なので x=Array(0,1,-1,2,-2,3,-3,4,-4) を定義して、 For i=0 To Ubound(x) n+x(i)で検索 見つかれば検索打ち切り、見つかった処理 なければ next i 見つからないと決定、その処理 ーー のように検索すればよいのでは。 質問の意味がもうひとつ良くわからないが。
- PPancho
- ベストアンサー率27% (26/96)
検索方法が書いていないので、それは分かっている前提で考えて 見ました。 Private Sub Find_Logic_Sample() Dim intLoopCnt As Integer 'ループカウンタ Dim strFindFlag As Integer '見つかった時のフラグ Dim intN As Integer '変数の型は任意 Dim intSerchNo As Integer '変数の型は任意 '変数を初期化 strFindFlag = "" 'ループ処理 For intLoopCnt = 0 To 4 'N+intLoopCntの場合 intSerchNo = intN + intLoopCnt intSerchNoで検索 If 見つかったら Then strFindFlag = "Y" Exit For 'ループを抜ける End If If intLoopCnt = 0 Then 'intSerchNo = intN - 0 のケースは上と同じ無視 Else intSerchNo = intN - intLoopCnt intSerchNoで検索 If 見つかったら Then strFindFlag = "Y" Exit For 'ループを抜ける End If End If Next intLoopCnt If strFindFlag <> "Y" Then 'N-4 -> N -> N+4に該当なし エラー処理 End If End Sub =============== 注) If intLoopCnt = 0 Then elseは if intLoopCnt <> 0 Thenでもかまいません。 注2) 検索するものの値範囲により変数の型をIntegerから 変更してください。
関連するQ&A
- 確率変数Xnで定義されるYnはやはり確率変数でしょうか?
確率変数Xnで定義されるYnはやはり確率変数でしょうか? お手数を掛けてすみませんが、教えてください。 以下が問題です、最後の部分で確率変数の定義が引っ掛かります。 「独立な確率変数の列{Xn}において、Xnの平均値をμ、分散をσ^2,(n=1,2,…) とした場合、 Yn = 1/n ?[k=1 n]Xk-μが恒等的に0に確率収束すると示せ」 1/n?[k=1 n]Xk の平均値、E(1/n ?[k=1 n]Xk)=μ 1/n?[k=1 n]Xk の分散が、σ^2(1/n ?[k=1 n]Xk)=σ^2/n となりますので、1/n?[k=1 n]Xkに関するチェビシェフの不等式に代入しますと、 p(|1/n ?[k=1 n]Xk-μ|<ε)>=1-(1/ε・σ^2/n) つまり、p(|Yn|<ε)>=1-(1/ε・σ^2/n) ※0<ε lim[n→∞]p(|Yn|<ε)>=1-(1/ε・σ^2/n) lim[n→∞]p(|Yn|<ε)>=1 確率の性質より lim[n→∞]p(|Yn|<ε)=1 ∴Ynは常に0以下であって、”Ynが確率変数であるならば”、恒等的に0に確率収束すると 示せるのですが… どうなのでしょう?
- ベストアンサー
- 数学・算数
- バッチプログラムで変数の参照について
Windowsバッチでの話ですが、 set file1=aaa set file2=bbb set n=1 としておき、"file1"にセットした変数の値を、"1"の部分を変数nを使用して参照したいのですがどうすればいいのでしょうか? echo %file%n%% のような感じでできると思ったのですができなかったもので。。 for文の中でnを増やしていきセットした全ての変数を参照したいと思っています。 以上よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- shellで$入り変数に値を代入する方法
shellで、変数への代入処理で困っています。 下記サンプルソースのように代入する変数自体にfor文で使用している変数が含められるようにしたいのですが、下記の通りだと実行できません。 うまく意図通りに動かす方法はございませんでしょうか? ---------------------------------------------------------------- #!/bin/sh #変数初期化 n00=0 n01=1 n02=2 n03=3 n04=4 #メインルーチン for i in 00 01 02 03 04 ; do temp=`eval echo '$'"n"${i}` #変数値をtempに格納 n${i}=`expr ${temp}+1` #各変数の値を+1する。 n${i}の部分をどのようにすればよいか不明 done ---------------------------------------------------------------- # 望ましい結果 echo ${n00} -> 1 echo ${n01} -> 2 : ※制約事項 ・ shのみ使用可能で、ksh,csh.bashは使用不可 ・ n[0]=0,n[1]=1・・・というように配列の使用は無し
- ベストアンサー
- その他(プログラミング・開発)
- ACCESSの変数で
超初心者です。お世話になります。 VBAの変数について教えて下さい。 例えば変数1~変数10まであるとします。 そこに氏名1~氏名20までを代入します。 そのとき、一つずつしていると、効率が悪いので、 For Next を使いたいと思います。 For 繰り返し = 1 to 10 で、変数の数字の部分を繰り返しで増やしていこうと思ったのですが、 "変数"と"繰り返し"のくっつけ方がどうも上手くできません。 どのようにしたらよいのでしょうか? あと、このように、Me.○○の部分も変数と変数をくっつけたいのですが、無謀でしょうか? わかりにくい説明で申し訳ありませんが、よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- VBAのコントロールを変数に
TextBox1~10というのをFor n=1 to 10 TextBox(n)="OK WEB" Next としても動きませんよね。TextBox1やComboBox8など数字のところを変数にするにはどのように記述すれば良いのでしょうか
- 締切済み
- その他(プログラミング・開発)
- クラス変数について質問
Javaのオブジェクト指向を解説した参考書で現在勉強しているのですが、その参考書のある問題の答えの解説として「クラス変数は参照変数なので参照以外を代入できません」と書いてありました。 でも、例えば、static int n=0と書けば、0をnに代入できます。 因みに、「クラス型の変数」は参照しか代入できないのはわかっています。 よって「クラス変数」は誤植で、正しくは「クラス型変数」なのでしょうか?
- ベストアンサー
- Java
- 変数のデータに改行コードのみを削除したい
変数のデータに改行コードのみを削除したい 変数のデータに改行コードのみを削除したいと思っておりますがうまくできません。 $samのデータに以下の内容でデータがはいってます。 (ここから) これはテストです。<br>\n <br>\n これはテストです。<br>\n <br>\n <br>\n これはテストです。<br>\n これはテストです。<br>\n (ここまで) $sam=~ s/<br>\n//g; だと本来改行コードがほしい内容まで削除してしまいます。 以下の内容もおかしいと思いますが、うまく出来ませんでした。 $sam=~ s/.*?<br>\n//g; この内容の場合改行コードが欲しい。それ以外は削除したい。 タグの除去は以下のサイトを検索で見つけたのですが、ちょっと違うかなと思い質問させていただきました。 HTMLタグを取り除く http://www.nishishi.com/perltips/string4.html 以上、よろしくご指導賜りたく思います。
- ベストアンサー
- Perl
お礼
ありがとうございます。参考になりました。若干違いますが、うまく組むことが出来ました!