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
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции