Хочу заполнить массив символами по спирали , но не понимаю , вроде бы все параметры методов передаются правильно , но массив выдfет не то что планировал. Подскажите пожалуйста что делаю не так?
class ArrayClass2D { const int MAX = 100; static void Print2DArray(int m, int n, char [] arr,int [,] a) { int count = 0; int k = 0, l = 0; while (k < m && l < n) { for (int i = l; i < n; ++i) { a[k,i] = arr [count++]; } k++; for (int i = k; i < m; ++i) { a[i,n - 1] = arr [count++]; } n--; if (k < m) { for (int i = n - 1; i >= l; --i) { a[m - 1,i] = arr [count++]; } m--; } if (l < n) { for (int i = m - 1; i >= k; --i) { a[i,l] = arr [count++]; } l++; } } } static void Main() { int m = 4, n = 5; string s = Console.ReadLine(); string trimed = String.Concat(s.Where (c=> !Char.IsWhiteSpace(c))); char [] arr = trimed.ToCharArray(); int [,] a = new int [MAX,MAX]; Print2DArray(5,4, arr,a ); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { Console.Write( "{0,3}",a[i,j]); } Console.Write("\n"); } } } INPUT :To see how we remove whit OUTPUT : 84111115101 0 111118101101 0 109116119104 0 101105104111 0
1 сам по себе алгоритм построения спирали прост. 2 ты с этим не справился. 3 Подскажите пожалуйста что делаю не так? Ты не умеешь мыслить логично. 4 займись чем-нибудь другим.
Подскажите пожалуйста что делаю не так?
class ArrayClass2D
{
const int MAX = 100;
static void Print2DArray(int m, int n, char [] arr,int [,] a)
{
int count = 0;
int k = 0, l = 0;
while (k < m && l < n) {
for (int i = l; i < n; ++i) {
a[k,i] = arr [count++];
}
k++;
for (int i = k; i < m; ++i) {
a[i,n - 1] = arr [count++];
}
n--;
if (k < m) {
for (int i = n - 1; i >= l; --i) {
a[m - 1,i] = arr [count++];
}
m--;
}
if (l < n) {
for (int i = m - 1; i >= k; --i) {
a[i,l] = arr [count++];
}
l++;
}
}
}
static void Main()
{
int m = 4, n = 5;
string s = Console.ReadLine();
string trimed = String.Concat(s.Where (c=> !Char.IsWhiteSpace(c)));
char [] arr = trimed.ToCharArray();
int [,] a = new int [MAX,MAX];
Print2DArray(5,4, arr,a );
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
Console.Write( "{0,3}",a[i,j]);
}
Console.Write("\n");
}
}
}
INPUT :To see how we remove whit
OUTPUT :
84111115101 0
111118101101 0
109116119104 0
101105104111 0