Заполнить матрицу по спирали - C#
Формулировка задачи:
Помогите переписать код на C#, пожалуйста
Условие: Улитка. Матрицу М(m, n) заполнить
натуральными числами от 1 до m×n по спирали,
начинающейся в левом верхнем углу и закрученной по
часовой стрелке.
var
a:array[1..100,1..100]of integer;
i,imax,imin,j,jmax,jmin,k,m,n:integer;
begin
write('Vvedite 4islo strok: ');
readln(m);
write('Vvedite 4islo stolbcov: ');
readln(n);
jmin:=1;
jmax:=n;
imin:=2;
imax:=m;
k:=0;
repeat
for j:=jmin to jmax do
begin
inc(k);
a[imin-1,j]:=k;
end;
for i:=imin to imax do
begin
inc(k);
a[i,jmax]:=k;
end;
dec(jmax);
for j:=jmax downto jmin do
begin
inc(k);
a[imax,j]:=k;
end;
dec(imax);
for i:=imax downto imin do
begin
inc(k);
a[i,jmin]:=k;
end;
inc(imin);
inc(jmin);
until k>=m*n;
for i:=1 to m do
begin
writeln;
for j:=1 to n do write(a[i,j]:3);
end;
readln;
end.
Не получается закрутить числа в спираль
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication35
{
class Program
{
static void Main(string[] args)
{
int x;
int y;
Console.Write("Строк:");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("Столбцов:");
y = Convert.ToInt32(Console.ReadLine());
int p = 1;
int[,] a;
a = new int[x, y];
for (int i = 0; i < x; i++)
for (int j = 0; j < y; j++)
a[i, j] = p++;
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
Console.Write(a[i, j] + "\t");
Console.WriteLine();
}
Console.ReadLine();
}
}
}
Числа закручиваются в спираль, но при введении 10 строк и 5 столбцов после значения 44 теряются значения и строчка наоборот, помогите пожалуйста исправить
Console.WriteLine("Введите количество элементов в строке");
int n = int.Parse(Console.ReadLine());
Console.WriteLine("Введите количество элементов в cтолбце");
int m = int.Parse(Console.ReadLine());
int[,] mas = new int[m, n];
int k = 1;
int t = 0;
int i, j = 0;
int n1 = n;
int m1 = m;
while (k <= n1 * m1)
{
for (i = t; i < n; i++)
mas[j, i] = k++;
j = n - 1;
for (i = t + 1; i < m; i++)
mas[i, j] = k++;
j = m - 1;
for (i = n - 2; i >= t; i--)
mas[j, i] = k++;
j = t;
for (i = m - 2; i > t; i--)
mas[i, j] = k++;
n--;
m--;
t++;
j = t;
}
for (i = 0; i < mas.GetLength(0); i++)
{
for (j = 0; j < mas.GetLength(1); j++)
Console.Write("{0,2} ", mas[i, j]);
Console.WriteLine();
}
Console.ReadKey();Решение задачи: «Заполнить матрицу по спирали»
textual
Листинг программы
if (k < mas.Length)