Нарисовать блок схему к программе и расставить комментарии - C#
Формулировка задачи:
помогите составить блок-схему по программе....
и с коментариями в программе о действиях
static void Main(string[] args)
{
do
{
int x, n = 0;
do Console.Write("Введите число: ");
while (!Int32.TryParse(Console.ReadLine(), out x));
do
{
char[] a = x.ToString().ToCharArray();
int s = 0;
for (int i = 0; i < a.Length; i++) s += a[i] - 48;
Console.WriteLine("{0,4} {1}-{2}={3}", "("+ ++n + ")", x, s, x -= s);
} while (x > 0);
Console.WriteLine("Ещё?(Enter)");
} while (Console.ReadKey().Key == ConsoleKey.Enter);
}Решение задачи: «Нарисовать блок схему к программе и расставить комментарии»
textual
Листинг программы
static void Main()
{
// Начало внешнего цикла с постусловием.
do
{
// Инициализация целочисленных переменных.
int x, n = 0;
// Начало внутреннего цикла 1 с постусловием.
do
{
// Вывод на консоль с переводом строки.
Console.Write("Введите число: ");
// Внтуренний цикл 1 продолжается пока не будет считана строка,
// которая корректно преобразуется в значение типа Int32.
} while (!Int32.TryParse(Console.ReadLine(), out x));
// Начало внутреннего цикла 2 с постусловием.
do
{
// Преобразование значения типа Int32 в массива типа char. Инициализация массива типа char.
// В массиве получим посимвольное представление числа, которое, по умолчанию, в десятичном
// формате без всяких разделителей, для отрицательных чисел первым элементом будет '-'.
char[] a = x.ToString().ToCharArray();
// Инициализация целочисленной переменной.
int s = 0;
// Цикл со счетчиком. Счетчик инициализируется 0, на каждом шаге увеличивается на 1.
// Повторяется столько раз, сколько элементов в массиве a.
// Т.е. в этом цикле будут перебираться все элементы массива a.
for (int i = 0; i < a.Length; i++)
{
// 1) Из элемента массива вычитается 48 (в таблице ASCII это код символа 0 (ноль)).
// Т.е. получим само значение цифры, например, если в a[i] хранился символ '1',
// то отняв из этого значения 48 получим число 1.
// 2) Результат вычитания прибавляется к переменной s. Т.е. s суммирует результаты.
s += a[i] - 48;
}
// Здесь выполняется форматированный вывод на консоль.
// Строка форматирования "{0,4} {1}-{2}={3}". Вместо выражений в скобках подставляются параметры.
// Первое значение в фигурных скобках - индекс параметра, второе (необязательное) - желательная
// ширина поля форматирования.
// Далее я наверное не совсем корректно объясню, но суть такая. Пусть, например: n = 0; x = 12; s = 3.
// Вычисляется ++n, результат сохраняется в этой же переменной (теперь n == 1).
// Формируется строка "(1)". Эта строка будет подставлена вместо {0,4}.
// Значение x преобразуется в строку "12". Эта строка будет подставлена вместо {1}.
// Значение s преобразуется в строку "3". Эта строка будет подставлена вместо {2}.
// Вычисляется x -= s, результат сохраняется в x (теперь x == 9).
// Значение x преобразуется в строку "9". Эта строка будет подставлена вместо {3}.
// В соответсвии с форматной строкой WriteLine выводит "(1) 12-3=9", добавляя в конце перевод строки.
Console.WriteLine("{0,4} {1}-{2}={3}", "(" + ++n + ")", x, s, x -= s);
// Внутренний цикл 2 продолжается, если x не равно 0.
} while (x > 0);
// Вывод на консоль с переводом строки.
Console.WriteLine("Ещё?(Enter)");
// Внешний цикл продолжается пока пользователь нажимает Enter.
} while (Console.ReadKey().Key == ConsoleKey.Enter);
}