2

これはおそらく非常に単純ですが、私はそれを理解できないようです:)

私はintの2つの配列を持っています。何らかの形式のコードコントラクトを使用して、1つの値が両方の配列にあることを確認したいと思います。値が両方の配列でない場合は続行したくない

これはできますか?私はこのようなことを考えていましたが、それを機能させることができないようです

Contract.Requires(g[variable ] == y[variable]) 

値は、両方の配列で同じ位置にある必要があります

これは私が今持っているものです

 private static int FirstCut(int[] g, int[] h)
        {
            int x = 0;

            Contract.Requires(g.Length > 0);            
            Contract.Requires(g.Length == h.Length); //skal være lige lange

            while (g[x] != h[x])
            {
                x++;
            } 
            return x;
        }

よろしく

バーガー

4

4 に答える 4

1
Contract.Requires(g[variable ] == g[variable]) 

それはたった1つの配列であり、たとえ2つだったとしても、同じインデックスでそれらを見つける必要がありますが、これは要件ではありませんでした. 条件は次のようであるように私には思えます:

x.Contains(variable) && y.Contains(variable)

xyが のタイプであると仮定しますint[]

また、C# のコード コントラクトについても、メソッドの先頭で 2 つの O(n) 操作を実行することによるパフォーマンスへの影響についても何も知りません。

于 2012-04-11T17:58:29.730 に答える
0

私の4年生の間にコード契約でかなり遊んだので、これはidがあなたの問題を解決することを検討する方法です。投稿されたソリューションのいくつかよりも少しきれいに見えます。

public static int FirstCut(int[] g, int[] h)
{
    Contract.Requires(h.Length == g.Length);
    Contract.Requires(Contract.Exists(0, g.Length, x => g[x] == h[x]));

    //Do whatever knowing that 2 values at index x in the arrays are the same
}
于 2012-04-11T18:50:22.630 に答える
0

値が同じインデックスにある必要がある場合、gyint[]variableありint、 であると仮定すると、次のようになります。

Contract.Requires(g.Contains(variable) && g.IndexOf(variable) == y.IndexOf(variable))

免責事項:完全にテストされていないため、質問を理解していない可能性があります

于 2012-04-11T18:13:09.797 に答える
0
for(int i = 0; i < firstArray.Length && i < secondArray.Length; i++)
{
  if(firstArray[i] == mySearchValue &&  secondArray[i] == mySearchValue)
  {
    //whatever you want to do

    break; //you can remove this if you don't want to stop the loop.
  }
}
于 2012-04-11T18:13:45.623 に答える