Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лб инф передел / C++ / Алиса / Информатика / ПерваяПрограммаС.doc
Скачиваний:
47
Добавлен:
15.04.2015
Размер:
3.17 Mб
Скачать

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

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

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. Оператор присваивания

Соседние файлы в папке Информатика