Программирование >>  Дополнительные возможности наследования 

1 ... 52 53 54 [ 55 ] 56 57 58 ... 265


How many rows? 4

How many columns? 12

What character? x

xxxxxxxxxxxx

xxxxxxxxxxxx

xxxxxxxxxxxx

xxxxxxxxxxxx

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

В первой строке тела внешнего цикла (строка 18) инициализируется еще один цикл. Переменной j присваивается значение О и начинается выполнение тела внутреннего цикла. В строке 19 символ, введенный при начале работы программы, выводится на экран. На этом первая итерация внутреннего цикла заканчивается. Вывод одной строки матрицы продолжается до тех пор, пока выполняется условие внутреннего цикла (j<columns). Как только значение переменной j становится равным значению columns, выполнение внутреннего цикла прекращается.

После вывода на экран строки матрицы (12 символов х ) управление передается в строку 20 и выводится символ новой строки. После этого проверяется условие внешнего цикла (Knows) и, если оно справедливо, выполняется следующая итерация.

Обратите внимание: во второй итерации внешнего цикла внутренний цикл начинает выполняться с начала. Переменной j присваивается нулевое значение, что позволяет повторно выполнить все итерации внутреннего цикла.

Основная идея вложенных циклов состоит в том, что на каждой итерации внешнего цикла внутренний цикл выполняется полностью. Таким образом, результат выполнения данной профаммы будет следующим: заданный символ выводится для каждой сфоки столько раз, сколько указано в переменной columns, а количество выводимых сфок определяется переменной rows.

ООласть видимости пврвмвоных-счвтчикпв циклив for

До недавнего времени область видимости переменных, описанных в цикле for, распространялась на весь текущий блок. Согласно новому стандарту, установленному ANSI, область видимости переменных, описанных в таком цикле, должна распросфа-няться только на тело цикла. Следует заметить, что, несмофя на внесенные изменения, многие компиляторы продолжают поддерживать только старый стандарт. Набрав приведенный ниже фрагмент профаммного кода, можно проверить свой компилятор на соответствие новому стандарту.

ftinclude <iostream.h>

int main()

Проверка области видимости переменной i for (int i = 0; К5; i++) {

cout i: i endl;



1=7; i находится за пределами области йидимости return 0;

Если такая программа будет компилироваться без ошибок, значит, ваш компилятор еще не поддерживает нового стандарта ANSI.

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

#include <iostream,h>

int mainO

int i; объявление переменной за пределами цикла

for (int i = 0; i<5; i++)

cout i; << i << endl;

i = 7; теперь переменная i будет корректно восприниматься всеми компиляторами return 0;

ПОоОщвнив сввдвний о циклах

На занятии 5 рассматривался пример построения ряда чисел Фибоначчи с использованием рекурсивного алгоритма. Напомним, что этот ряд начинается числами 1, 1, 2, 3, а все последующие его члены являются суммой двух предыдущих.

1,1,2,3,5,8,13,21,34...

Таким образом, п-й член ряда Фибоначчи вычисляется сложением (n-l)-ro и (п-2)-го членов. Рассмотрим вариант рещения этой задачи с помощью циклов (листинг 7.15).

Аисшииг 7.1S. Нахождение л-га члена ряда ФнОоноччн с помощью цикла

2 3 4 5 6 8 9

10 11 12 13 14 15 16 17

Листинг 7.15.

Нахождение п-го члена ряда Фибоначчи с помощью цикла

ftinclude <iostream.h>

int fibdnt position); int mainO {

int answer, position; cout Which position? ; cin position; cout < \ n ;

answer = fib(position);



18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

cout << answer << is the ;

cout << position Fibonacci number.\ n

return 0;

int fib(int n) {

int minusTwo=1, minus0ne=1, answer=2;

if (n < 3)

return 1;

for (n -= 3; n; n--) {

minusTwo = minusOne;

minusOne = answer;

answer = minusOne + minusTwo;

return answer;

lif YJt Which position? 4

3 is the 4th Fibonacci number, Which position? 5 5 is the 5th Fibonacci number. Which position? 20 6765 is the 20th Fibonacci number. Which position? 100 3314859971 is the 100th Fibonacci number.

Программа, представленная в листинге 7.15, позволяет найти значение любого члена ряда Фибоначчи. Использование рекурсии заменено циклом, организованным с помощью конструкции for. Кроме того, применение цикла уменьшает объем используемой памяти и время выполнения программы.

В строке 13 пользователю предлагается ввести порядковый номер искомого члена ряда Фибоначчи. Для нахождения этого значения используется функция fib(), в качестве параметра которой передается введенный порядковый номер. Если он меньше трех, функция возвращает значение 1. Для вычисления значений, порядковый номер которых превышает 2, используется приведенный ниже алгоритм.

1. Присваиваются начальные значения переменным: minusTwo=i, minusOne=l, answer=2. Значение переменной, содержащей номер искомой позиции, уменьшается на 3, поскольку две первые позиции обрабатываются выше.

2. Для каждого значения п вычисляем значение очередного члена последовательности. Делается это следующим образом:

переменной minusTwo присваивается значение переменной minusOne;

переменной minusOne присваивается значение переменной answer;



1 ... 52 53 54 [ 55 ] 56 57 58 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика