Перевести с Паскаль в C#
Формулировка задачи:
Написать данную программу на си шарп
с файлами,можно без
Program Lab2; //Вывод матрицы а размера NxN procedure PrintMatrix(n:integer;a:matrix); begin for i:=0 to n-1 do begin for j:=0 to n-1 do write(a[i,j]:4); writeln; end; end; {Фунция вычисляет для элемента k из змейки чисел его координаты в матрице размера NxN : a[i,j]=k} procedure GetCoordinates(k,n:integer;var i,j:integer); begin if (n mod 2=1) then begin k1:=sqr(n)-k; //Симметричный элемент k с другого конца - Обратная спираль(ОСп) d:=(1+sqrt(k1))/2+0.999; q:=trunc(d); //Номер витка ОСп, считая изнутри(начиная с 1) max:=sqr(2*q-1); //Максим. элемент на витке ОСп - левый верхинй угол L:=n div 2-q+1; //Левый столбец витка R:=n div 2+q-1; //Правый столбец витка T:=n div 2-q+1; //Верхняя столбец витка B:=n div 2+q-1; //Нижняя столбец витка Len:=2*q-1; //Длина стороны витка (кол-во элемнтов на ней) If k1>max-(Len-1) then //Верхняя сторона витка begin i:=T; j:=L+max-k1; end else if k1>max-2*(Len-1) then //Правая сторона витка begin i:=T+(max-(Len-1)-k1); j:=R; end else if k1>max-3*(Len-1) then //Нижняя сторона витка begin i:=B; j:=R-(max-2*(Len-1)-k1); end else //Левая сторона витка begin i:=B-(max-3*(Len-1)-k1); j:=L; end end end; {Заполнение матрицы а размера NxN числами от 0 до N^2-1 по спирали с помощью функции вычисления координат} procedure FillMatrix(n:integer;var a:Matrix); begin for k:=0 to N*N-1 do begin GetCoordinates(k,n,i,j); a[i,j]:=k; end; end; Begin writeln('Enter size of matrix n='); readln(n); FillMatrix(n,a); PrintMatrix(n,a); End.
Решение задачи: «Перевести с Паскаль в C#»
textual
Листинг программы
using System; class Matrix { double[,] a; int len; public Matrix(int n) { a = new double[n,n]; len = n; } public void Print() { for(int i = 0; i < len; i++) { for (int j = 0; j < len; j++) Console.Write(a[i, j] + " "); Console.WriteLine(); } } public void Fill() { int k = 0; int count = len; int value = -len; int sum = -1; do { value = -1 * value / len; for (int i = 0; i < count; i++) { sum += value; a[sum / len, sum % len] = k++; } value *= len; count--; for (int i = 0; i < count; i++) { sum += value; a[sum / len, sum % len] = k++; } } while (count > 0); } } public class Lab2 { public static void Main() { Console.WriteLine("Введите размер матрицы: "); Matrix a = new Matrix(int.Parse(Console.ReadLine())); a.Fill(); a.Print(); Console.ReadKey(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д