4

配列をセットアップし、要素を逆にした配列を返すメソッドを作成したいと思います。たとえば、10 個のスロットがある場合は、array1[9] = 6そうしarray2[0] = 6ます。
配列を返す必要があると思います-どうすればいいですか?
そして、逆にして別の配列に追加する方法がわかりません。
ありがとうございました!

        int[] arr = {43, 22, 1, 44, 90, 38, 55, 32, 31, 9};
        Console.WriteLine("Before");
        PrintArray(arr);
        Console.WriteLine("After");
        Reverse(arr);

         Console.ReadKey(true);

    }

    static int[] Reverse(int[] array)
    {
        for (int i = array.Length; i < 1; i--)
        {
            int x = 0;

            array[i] = array[x++];
            Console.WriteLine(array[i]);
        }

       }


         static void PrintArray(int[] array)
    {
        for (int j = 0; j < array.Length; j++)
        {
            Console.Write(array[j] + " ");

        }
        Console.WriteLine("");
4

6 に答える 6

9

Array.Reverseを使用できます

上記の行の例

public static void Main()  {

  // Creates and initializes a new Array.
  Array myArray=Array.CreateInstance( typeof(String), 9 );
  myArray.SetValue( "The", 0 );
  myArray.SetValue( "quick", 1 );
  myArray.SetValue( "brown", 2 );
  myArray.SetValue( "fox", 3 );
  myArray.SetValue( "jumps", 4 );
  myArray.SetValue( "over", 5 );
  myArray.SetValue( "the", 6 );
  myArray.SetValue( "lazy", 7 );
  myArray.SetValue( "dog", 8 );

  // Displays the values of the Array.
  Console.WriteLine( "The Array initially contains the following values:" );
  PrintIndexAndValues( myArray );

  // Reverses the sort of the values of the Array.
  Array.Reverse( myArray );

  // Displays the values of the Array.
  Console.WriteLine( "After reversing:" );
  PrintIndexAndValues( myArray );
}


public static void PrintIndexAndValues( Array myArray )  {
  for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
     Console.WriteLine( "\t[{0}]:\t{1}", i, myArray.GetValue( i ) );
}
于 2013-08-23T05:00:16.213 に答える
7

拡張メソッドを使用できるはずですReverse

int[] arr = { 43, 22, 1, 44, 90, 38, 55, 32, 31, 9 };
Console.WriteLine("Before");
PrintArray(arr);
Console.WriteLine("After");
PrintArray(arr.Reverse().ToArray());

または、元のシーケンスを変更してもかまわない場合は、使用できますArray.Reverse

int[] arr = { 43, 22, 1, 44, 90, 38, 55, 32, 31, 9 };
Console.WriteLine("Before");
PrintArray(arr);
Array.Reverse(arr);
Console.WriteLine("After");
PrintArray(arr);
于 2013-08-23T04:55:31.353 に答える
1

配列の両端から中央に到達するまで要素を交換することで、配列を逆にすることができます。

for(int start = 0, end = arr.Length - 1; start < arr.Length/2; start++, end--)
{
     swap(arr[start], arr[end]);
}
于 2013-08-23T04:53:32.203 に答える
0
 public class MyList<T> : IEnumerable<T>
{
    private T[] arr;

    public int Count
    {
        get { return arr.Length; }
    }            
public void Reverse()
    {
        T[] newArr = arr;
        arr = new T[Count];
        int number = Count - 1;
        for (int i = 0; i < Count; i++)
        {
            arr[i] = newArr[number];
            number--;
        }
    }
}
于 2017-02-07T12:50:40.250 に答える
0

Create a new array that has the same length as the old array and reverse is done like this

index -> new index  
  0   -> length - 1  
  1   -> length - 1 - 1  
  2   -> length - 1 - 2  
..  
  i   -> length - 1 - i

so this translates to this code

int[] myVariable = new int[] { 1, 2, 3, 4, 5 };
int[] reversedVariable =  new int[myVariable.Length]();
for (int i = 0; i < myVariable.Length ; i++)
{
    reversedVariable[myVariable.Length - 1 - i] = myVariable[i];
}
return reversedVariable;
于 2016-09-20T00:37:34.290 に答える