Выполнить циклический сдвиг массива вниз или вверх на количество шагов - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д