Заполнить матрицу по спирали - 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)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5