Заполнение массива змейкой - C# (180832)
Формулировка задачи:
пример
43210
56789
для заполнения обязательно использовать вектор
class Program
{
static void arr_input ( int[] vector)
{
for (int i = 0; i < vector.Length; i++)
vector[i] = i + 1;
}
static void arr_output(int[,] array)
{
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write(array[i, j]);
}
Console.WriteLine();
}
}
static void Main(string[] args)
{
int[] vector=new int [80];
int[,] array=new int[8,8];
arr_input( vector);
filling(vector, array);
arr_output(array);
}
static void filling (int [] vector,int [,]mas)
{
int k = 0;
for (int i = 0; i < mas.GetLength(0); i++)
{
if (i % 2 == 0)
{
for (int j = 0; j < mas.GetLength(1)-1; j++)
{
mas[i, j] = vector[k];
k++;
}
}
for (int j = mas.GetLength(1); j > 0; j--)
{
mas[i, j] = vector[k];
k++;
}
}
}
}Решение задачи: «Заполнение массива змейкой»
textual
Листинг программы
using System;
using System.Linq;
class Program
{
static void Fill(int[,] matrix, int[] vector)
{
int begin = 0;
int end = matrix.GetLength(1);
int step = 1;
int idx = -1;
for (int i = 0; i < matrix.GetLength(0); i++)
{
begin = matrix.GetLength(1) - 1 - begin;
end = matrix.GetLength(1) - 1 - end;
step = -step;
for (int j = begin; j != end; j += step)
{
idx = (idx + 1) % vector.Length;
matrix[i, j] = vector[idx];
}
}
}
static void Main()
{
int[] arr = Enumerable.Repeat(new Random(), 20).Select(r => r.Next(100)).ToArray();
Console.WriteLine(String.Join(", ", arr));
int[,] matrix = new int[5, 5];
Fill(matrix, arr);
Console.WriteLine();
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
Console.Write(matrix[i, j]);
Console.Write("\t");
}
Console.WriteLine();
}
}
}