Пример в C++ надо перевести на C#. Циклический сдвиг элементов массива вправо
Формулировка задачи:
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на одну позицию (при этом A1 перейдет в A2, A2 — в A3, …, AN — в A1). Вот пример в C++ надо перевести на C#
int main()
{
srand(time(0));
const int size = 20;
int arr[size];
for (int i = 0; i < size; i++)
{
arr[i] = rand() % 20;
std::cout << arr[i] << " ";
}
int tmp = arr[size - 1];
for (int i = size - 1; i >= 0; i--)
arr[i + 1] = arr[i];
arr[0] = tmp;
std::cout << std::endl;
for (int i = 0; i < size; i++) // выводим получившийся массив
std::cout << arr[i] << " ";
return 0;
}Решение задачи: «Пример в C++ надо перевести на C#. Циклический сдвиг элементов массива вправо»
textual
Листинг программы
using System;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
const int size = 10;
int[] arr = new int[size];
Random rnd = new Random();
for (int i = 0; i < size; i++)
arr[i] = rnd.Next(1, 45);
Console.WriteLine(string.Join(" ",arr) + "\r\n");
//right shift 2
Console.WriteLine(string.Join(" ", RightShift(arr, 2)) + "\r\n");
// left shift 4
Console.WriteLine(string.Join(" ",LeftShift(arr,4)));
Console.ReadKey();
}
static int[] LeftShift(int[] arr, int count)
{
count = count%arr.Length;
int[] tmp = new int[arr.Length];
for (int i = 0; i < arr.Length; i++)
tmp[i] = arr[(i + count)%arr.Length];
return tmp;
}
static int[] RightShift(int[] arr, int count)
{
count = count % arr.Length;
int[] tmp = new int[arr.Length];
for (int i = arr.Length - 1; i >= 0; i--)
tmp[i] = arr[(i - count + arr.Length) % arr.Length];
return tmp;
}
}
}