Форма печати C#

#c#

Вопрос:

Я новичок в кодировании, и я сталкиваюсь с проблемой, пытаясь решить эту проблему.

в этом и заключается проблема изображения

Я попытался выполнить метод, в котором он принимает 1 значение, но я не могу понять, как принимать 2 значения. Это решение, которое я устал от 1 значения

         int y = input;

        while (input > 0)
        {
            for (int z = 1; z <= input;   z)
            {
                Console.Write("-");
            }
            Console.WriteLine();
            for (int i = 1; i <= input - 1;   i)
            {
                for (int z = 1; z <= y;   z)
                {
                    if (z != y)
                    {
                        Console.Write(" ");
                    }
                    else
                    {
                        Console.WriteLine("|");
                    }
                }
            }
            for (int j = 1; j < y; j  )
            {
                Console.Write(" ");
            }
            input = input - 2;
            y = y   input - 1;
        }
 

Комментарии:

1. Пожалуйста, старайтесь избегать использования изображений, на которых можно использовать текст, в случае, если ссылка когда-либо будет нарушена. Кроме того, вы не предоставляете код, в котором запрашиваете ввод.

2. Ваш код кажется правильным. В чем именно ваша проблема? Что вы имеете в виду , но я не могу понять, как принять 2 значения ?

3. Вы имеете в виду 2 входа, когда говорите 2 значения ? Если это так, я думаю, вам просто нужно вставить этот код в каждый цикл. Для каждого ввода вы запускаете этот код ?

Ответ №1:

Вы можете реализовать что-то вроде этого:

   int spaces = 0;         // spaces we need to add before the line
  bool horizontal = true; // if we should draw horizontal line

  // we should draw lines of size input, input - 1, ... 2, 1
  // while alternating horizontal and vertical lines
  for (int size = input; size >= 1; --size, horizontal = !horizontal) {
    if (horizontal) { 
      Console.WriteLine(new string(' ', spaces)   new string('-', size));

      spaces  = size - 1;
    }
    else 
      for (int i = 0; i < size;   i)
        Console.WriteLine(new string(' ', spaces)   "|");
  }
 

Комментарии:

1. Хорошо и относительно легко читается. Если по какой-то причине кому-то не нравится иметь и --size то, и horizontal = !horizontal другое в операторе for «итератор», вы можете удалить int horizontal = true из перед циклом , а затем просто внутри (внешнего) for цикла вычислить horizontal как что-то вроде bool horizontal = size % 2 == input % 2; или bool horizontal = (input - size) % 2 == 0; , в зависимости от предпочтений. (Конечно, вы также можете попытаться вычислить spaces с нуля на каждой итерации, но это явно усложнит код!)