Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
182
Добавлен:
02.05.2014
Размер:
3.75 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. Оператор присваивания

Присваивание начального значения

Очень важно, чтобы все счетчики и аккумуляторы имели присвоенное начальное значение. Вы помните, что оба алгоритма увеличивают (или уменьшают) текущее значение переменной на определенную величину. Если не присвоить начальное значение, то эта величина будет прибавлена к случайному содержимому области памяти, зарезервированной для переменной. Инициализация переменной очищает содержимое памяти, так же как нажатие клавиши Clear на калькуляторе.

В качестве примера обратимся к Листингу 6.7, содержащему программу расчета среднего арифметического значения трех чисел. Допустим, в области памяти, отведенной для переменной total, содержится случайное значение 1827. Если переменной не было присвоено начальное значение

total = 0;

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

total = 1827 + 75

Присваивание начального значения 0 дает уверенность в том, что математические расчеты будут выполнены правильно:

total = 0 + 75