как рисовать в консоли (c #) - PullRequest
0 голосов
/ 15 ноября 2018

недавно в классе IT нам предоставили простую консольную программу, которая использовала вложенный цикл для рисования прямоугольного треугольника. Я не очень понимаю, что происходит в этом фрагменте кода. Может кто-нибудь объяснить, как это работает и как создавать другие формы в консоли? вот код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Task_4
{
    class nestedLoop
    {
        static void Main(string [] args)
        {
            int i, j;
            i = j = 0;
            for (i = 1; i <= 5; i++)
            {
                for (j = 1; j <= i; j++)
                {
                    Console.Write('*');
                }
                Console.Write("\n");
            }
            Console.ReadLine();
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Внешний цикл для переменной i повторяется через 5 раз. В каждом цикле вложенный цикл с переменной j будет устанавливать столько «*», сколько количество циклов цикла i и разрыв строки в конце. Поэтому, если это первый цикл из i, то j-цикл будет устанавливать 1 '*' во втором цикле '**' и так далее. Что приведет к следующему выводу:

*
**
***
****
*****
0 голосов
/ 15 ноября 2018

замените i строкой, замените j столбцом, с которым вы сможете разобраться на

, но по сути программа может быть переведена как:

0a) инициализировать i на 1.

0b) инициализируйте j на 1.

1) В строке I нарисуйте звезду, если J меньше или равно I, а затем добавьте 1 к J.

2) Повторяйте 1), пока J не станет больше, чем I.

3) Если J больше, чем I, добавьте 1 к I, повторите с 0b), пока I не достигнет предела (5).

Sidenote: более чистый код будет выглядеть так:

using static System.Console;

namespace ExamPrep
{
    class Program
    {
        static void Main(string[] args)
        {
            const int maxHeight = 5;

            for (int height = 0; height < maxHeight; height++)
            {
                for (int width = 0; width <= height; width++)
                {
                    Write('*');
                }
                Write("\n");
            }
            ReadLine();
        }
    }
}

может потребоваться заменить 'height' на 'currentHeight', но намерение яснее, чем просто использование букв.

0 голосов
/ 15 ноября 2018

Существует два цикла for, каждому циклу назначена переменная i или j, которая будет увеличиваться на единицу, пока не достигнет своего верхнего предела (i <= 5) или (j <= i).Используя эту логику, первый цикл i равен 1, поэтому j будет просто 1, затем мы снова делаем циклы, на этот раз i равен 2, поэтому j будет выполняться дважды, и так далее, ниже приведен небольшой пример </p>

Петля 1, i = 1 j = 1 *

Петля 2, i = 2 j = 2 **

Петля 3, i = 3 j = 3 ***

Петля 4, i = 4 j = 4 ****

Петля 5, i = 5 j = 5 *****

Так что, как только мы нарисовали звезды, мы в конечном итогес этим.

Квадрат

For(int i = 0; i < 5; i++)
{
   For(int j = 0; j < 5; i++)
      Console.Write("*");
}

Высокий прямоугольник

For(int i = 0; i < 10; i++)
{
   For(int j = 0; j < 5; i++)
      Console.Write("*");
   Console.Write("\n");
}

Длинный прямоугольник

For(int i = 0; i < 5; i++)
{
   For(int j = 0; j < 10; i++)
      Console.Write("*");
   Console.Write("\n");
}
...