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