2016-10-07 7 views
0

バッチファイルに数値nとmの2つのソート済み配列を作成しました。バッチで配列のその他の問題が発生した場合

FOR /L %%a IN (0,1,!n!) DO ECHO !vector[%%a]! 
FOR /L %%a IN (0,1,!m!) DO ECHO !vector2[%%a]! 

これは私の配列の内容を正確に示しています。

今では、マージされたソートされた配列を出力するロジックを書きたいと思います。

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION 
set i=0 
set j=0 
set /A totalElements =!n!+!m! 
FOR /L %%A IN (1,1,!totalElements!) DO (
    if !vector[!i!]! LSS !vector2[!j!]! (
     echo "First list" 
     echo !%vector[!i!]%! 
    ) else (
     echo "Second List" 
     echo !%vector[!i!]%! 
    ) 
) 

したがって、このif elseロジックが機能していません。構文のどこで間違っていたのでしょうか?私は正しく配列から値を抽出していないと思いますか?

+1

'echo!%vector [!i!]%!'とは、 'echo!vector [!i!]!'のようなものですか?とにかく、このような変数の展開を入れ子にすることはできません。あなたの最初の2行のコードでは、 '!vector [%% a]!'のように、 'for'変数をインデックスとして使用して、どのように動作するかを回避することができます。 (例えば、 '!i!、1、!i!]!' for/L %% a in! 'の中の '!i!'の代わりに 'for'変数を使用する必要があります。 )do(echo!vector [%% a]!) 'が働くと、ループは'!i! 'の値で1回のみ繰り返します)... – aschipfl

+0

null値との比較を試みることはできますか?例えば、vectorは3 long、vector2 5です。ループは1から8になります(長さ3と5の配列では長くなります)。さらに、iとjの値を大きくしないでください。そうしないと、どの要素が比較されているのかわからないと、どこにエラーがあるのか​​がわかりません。より多くのコードや例がありますか(入力が可能、出力が正しくない、出力が期待されています)? – geisterfurz007

+1

@aschipfl: 'for %% a in(!i!)do ...' - no/L'が必要です。 – Stephan

答えて

1

不完全な分析:

  • set /A totalElements =!n!+!m!nm変数を定義していますか?
  • !vector[!i!]!に設定した場合、バッチパーサーはと!]!の変数を検索します(!vector[%i%]!のように)。
  • !%vector[!i!]%!は私にとっては完全に不明です。

あなたの質問は、よりポジティブで建設的なメモを与えるには広すぎるようです(少し不明瞭な目的)。

関連する問題