Выполнить циклический сдвиг массива вниз или вверх на количество шагов - C#
Формулировка задачи:
3 Данный рваный (зубчатый) массив, заполненный случайными действительными числами. Выполнить циклический сдвиг массива вниз или вверх на количество шагов
Решение задачи: «Выполнить циклический сдвиг массива вниз или вверх на количество шагов»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication
{
internal static class Program
{
private static void Main()
{
var randomizer = new Random();
var array = new double[5][];
for (int i = 0; i < array.Length; i++)
{
array[i] = new double[randomizer.Next(5) + 1];
for (int j = 0; j < array[i].Length; j++)
{
array[i][j] = randomizer.NextDouble() * 10;
}
}
Print(array);
Print(MoveDown(array, 2));
Print(MoveDown(array, -2));
}
private static IEnumerable<double[]> MoveDown(IList<double[]> array, int shift)
{
var result = new double[array.Count][];
for (int i = 0; i < array.Count; i++)
{
int newIndex = (i - shift + array.Count) % array.Count;
result[i] = new double[array[newIndex].Length];
Array.Copy(array[newIndex], result[i], array[newIndex].Length);
}
return result;
}
private static void Print(IEnumerable<double[]> array)
{
Console.WriteLine("Array:");
foreach (double[] row in array)
{
foreach (double item in row)
{
Console.Write("{0:0.00} ", item);
}
Console.WriteLine();
}
Console.WriteLine();
}
}
}