
- •Лабораторная работа №4 операторы
- •Арифметические операторы
- •Деление нацело
- •Типы данных и операторы
- •Выражения
- •Приоритет операторов и порядок вычислений
- •Используемые алгоритмы обработки данных
- •Счетчики
- •Операторы инкремента
- •Аккумуляторы
- •Операторы присваивания
- •Присваивание начального значения
- •Проектирование программы
- •Остерегайтесь логических ошибок
- •Ищите образцы
- •Диагностические проблемы
Аккумуляторы
Аккумулятор также увеличивает значение переменной. Но, в отличие от счетчика, который всегда увеличивает значение переменной на одну и ту же величину, аккумулятор может иметь произвольный шаг (и способ) изменения при каждой новой операции. В общем виде синтаксис аккумулятора таков:
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.
В Листинге 7 приведен текст программы, в которой вводятся три значения и вычисляется их среднее арифметическое. Для расчета среднего арифметического пользуются простым математическим выражением:
average = (A + B + C) / 3
В программе мы использовали аккумулятор, чтобы подсчитать сумму трех чисел, и счетчик для определения количества введенных значений (чтобы продемонстрировать работу счетчика).
Листинг 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 |
Каждый из них выполняет операции, используя в качестве общего элемента переменную, имеющую присвоенное начальное значение. Чтобы понять, как действуют эти операторы, посмотрите на рис.11. Оператор как бы копирует переменную и арифметический символ левой части уравнения в правую часть. Инструкция
total *= rate;
соответствует инструкции
total = total * rate;
Рис.11.
Оператор присваивания