Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Аккумуляторы

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

variable = variable + other_variable;

Аккумулятор получил такое название оттого, что он накапливает значение переменной. Посмотрите на следующий пример:

int total, number; total = 0;

scanf("%d", &number); total = total + number;

Допустим, что переменной number присвоено значение 10. После выполнения инструкции

total=total+number;

переменная total приобретает значение 10, так как компьютер выполнил операцию сложения, используя следующие значения:

total=0+10;

Теперь предположим, что снова происходит ввод данных с помощью функции scanf() и выполняется новая операция суммирования, но на этот раз переменной number присвоено значение 15:

scanf("%d", &number); total = total + number;

теперь компьютер использует в вычислениях следующие значения:

total = 10 + 15;

Произошло накопление значений переменной number.

В Листинге 6.7 приведен текст программы, в которой вводятся три значения и вычисляется их среднее арифметическое. Для расчета среднего арифметического пользуются простым математическим выражени- ем:

average = (A + B + C) / 3

В программе мы использовали аккумулятор, чтобы подсчитать сумму трех чисел, и счетчик для определе- ния количества введенных значений (чтобы продемонстрировать работу счетчика). В главе 9 будет пока- зан более эффективный способ использования этих алгоритмов.

Листинг 6.7. Программа, использующая счетчик и аккумулятор для вычисления среднего арифметического трех чисел.

/*average1.c*/ main()

{

float number, total, count, average; total = 0.0;

count = 0.0; printf("Введите первое число: "); scanf("%f", &number); total += number;

++count;

printf("Введите второе число: "); scanf("%f", &number); total += number;

++count; printf("Введите третье число: "); scanf("%f", &number); total += number;

++count; average = total / count;

printf("Среднее арифметическое равно %f", average);

}

Операторы присваивания

Приводимые ниже операторы присваивания являются сокращенной записью различных типов аккумуля- торов.

Оператор Пример Эквивалент

+= total += amount total = total + amount

–= total –= discount total = total – discount

*= total *= tax_rate total = total * tax_rate

/= total /= count total = total / count

%= total %=count total = total % count

Каждый из них выполняет операции, используя в качестве общего элемента переменную, имеющую при- своенное начальное значение. Чтобы понять, как действуют эти операторы, посмотрите на рис.6.11. Опе- ратор как бы копирует переменную и арифметический символ левой части уравнения в правую часть. Ин- струкция

total *= rate;

соответствует инструкции

total = total * rate;

Рис. 6.11. Оператор присваивания