Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
36
Добавлен:
09.04.2015
Размер:
5.6 Mб
Скачать

148 Глава 3

грамма. Если вы введете еще большие входные значения, это приведет к потере стар- ших десятичных разрядов в переменной factorial, и можно даже получить отрица- тельные значения факториала, как это произошло при вводе числа 22.

В этой ситуации не выдается никаких сообщений об ошибке, поэтому чрезвычайно важно при разработке программы быть уверенным в том, что значения, с которыми будет иметь дело программа, не выйдут за пределы допустимого диапазона для типа данных используе- мых переменных. Вы должны также предусмотреть обработку некорректных входных зна- чений. Ошибки такого рода, происходящие "молча чрезвычайно трудно найти.

Внешний из двух циклов, цикл do-while, управляет завершением программы. До тех пор, пока вы вводите ' у1 или ' Y1 в ответ на запрос о продолжении, програм- ма продолжает вычислять значения факториала. Факториал целых чисел вычис- ляется во вложенном цикле for. Он выполняется, value раз умножая переменную factorial (чье начальное значение равно 1), на последовательные целые числа — от 2 до value.

Вложенные циклы могут выглядеть немного запутанными, поэтому давайте рас- смотрим другой пример. Эта программа генерирует таблицу умножения заданного размера.

Ниже показан вывод этого примера.

Решения и циклы 149

Описание полученных результатов

Заголовок таблицы выдается первым оператором вывода программы. Следующий оператор вывода, вставленный в следующий за ним цикл, генерирует заголовки столб- цов. Каждый столбец имеет ширину в пять символов, поэтому значения заголовков отображаются в поле шириной три символа, что указано манипулятором setw (3), за которым идет два пробела. Оператор вывода, предшествующий циклу, выводит четыре пробела и вертикальную линию перед заголовком первого столбца. Затем ниже идет серия символов подчеркивания, отделяющих заголовки от содержимого столбцов.

Вложенный цикл генерирует основное содержимое таблицы. Внешний цикл повто- ряется по разу для каждой строки, поэтому здесь i — номер столбца. Оператор вывода

переходит на новую строку и затем выводит ее заголовок в виде значения i в поле шириной три символа, за которым идет пробел и вертикальная линия. Строка значений генерируется вложенным циклом:

Этот цикл выводит значения i*j, соответствующие произведению текущего значе- ния строки i на номер столбца j, изменяя j от 1 до size. Таким образом, при каждой итерации внешнего цикла внутренний цикл проходит size итераций. Полученные значения размещаются таким же образом, как заголовки столбцов.

Когда завершается внешний цикл, выполняется return для завершения программы.

Программирование на C++/CLI

Все, о чем я говорил в этой главе, в равной мере относится к программам C++/CLI. Для того чтобы просто проиллюстрировать это, мы можем рассмотреть некоторые примеры консольных программ CLR, которые демонстрируют кое-что из того, что вы изучили до сих пор в этой главе. Ниже представлена программа CLR, представля- ющая собой вариацию на тему ЕхЗ_01.