logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

124 Глава 2

// Суммирование с помощью for #include <iostream.h>

main () {

int sum = 0;

for (int number = 2; number <= 100; number += 2)

sum += number; cout « "Сумма равна " « sum « endl;

return 0; }

Сумма равна 2550

Рис. 2.20. Суммирование с помощью for

Отметим, что тело структуры for на рис. 2.20 в действительности может быть включено в правую часть заголовка for с помощью операции последо-вания (запятая):

for (int number = 2; number <= 100; sum += number, number += 2) ;

Задание начального значения sum = 0 также может быть включено в раздел задания начального значения структуры for.

Хороший стиль программирования 2.20

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

Хороший стиль профаммирования 2.21

Ограничивайте, если возможно, размер заголовка управляющей структуры так, чтобы он умещался на одной строке.

Следующий пример вычисляет с помощью структуры for сложный про­цент. Рассмотрим следующую постановку задачи:

Некто внес $1000.00 на депозитный счет под 5 процентов годовых. Предполагая, что доход оставляется на депозите, рассчитать и напеча­тать суммы денег на счете в конце каждого года на протяжении 10 лет. Использовать для расчета следующую формулу:

a=p(l+r)" где

p первоначальный (основной) вклад

r ставка годового дохода

n число лет

а сумма на депозите к концу п-го года.

Эта задача подразумевает использование цикла, в котором будут рассчи­тываться ежегодные суммы на депозите в течение 10-и лет. Решение при­ведено на рис. 2.21.

Управляющие структуры 125

Структура for выполняет операторы своего тела 10 раз, причем управ­ляющая переменная изменяется от 1 до 10 с шагом 1. Хотя С++ не имеет операции возведения в степень, но ее можно осуществить с помощью функции pow из стандартной библиотеки. Функция pow имеет два аргумента типа double и возвращает результат типа double. Тип double — это тип с пла­вающей точкой во многом похожий на float, но переменные типа double могут хранить значения, много большие, чем переменные типа float, и с большей точностью. Константы (такие, как 1000.0 и .05 на рис. 2.21) требуют в С++ использования типа double.

Эта программа не будет компилироваться без включения math.h. Функ­ция pow требует аргументов типа double. Заметьте, что year — целое. Файл math.h содержит информацию, которая дает указание компилятору преоб­разовать величину уеаг во временное представление double перед вызовом функции. Эта информация содержится в прототипе функции pow. Про­тотипы функций будут рассмотрены в главе 3. Мы дадим сведения о функ­ции pow и других функциях из библиотеки математических функций в главе 3.

// Расчет сложного процента

#include <iostream.h> #include <iomanip.h> #include <math.h>

main() {

double araount, principal = 1000.0, rate = .05;

cout « "Год" « setw(21) « "Сумма депозита" « endl;

for (int year = 1; year <= 10; year++) {

amount = principal * pow(1.0 + rate, year); cout « setw(3) « year

« setiosflags(ios::fixed | ios::showpoint)

« setw(21) « setprecision(2) « amount « endl;}

return 0;

Год

Сумма депозита

1

1050.00

2

1102.50

3

1157.62

4

1215.51

5

1276.28

6

1340.10

7

1407.10

8

1477.46

9

1551.33

10

1628.89

Рис. 2.21. Расчет сложного процента с помощью for