Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Множественный выбор else if






Жизнь нередко ставит нас перед выбором из более чем двух вариантов. Чтобы учесть этот факт, структуру if else можно расширить посредством конструкции else if. Давайте рассмотрим конкретный пример. Коммунальные предприятия часто выстав­ляют счета за электроэнергию в зависимости от потребленного объема. Ниже приве­дены тарифы на потребленную электроэнергию в одной из таких компаний, основан­ные на киловатт-часах (кВт/ч).

Первые 360 кВт/ч: $0.13230 за 1 кВт/ч

Следующие 108 кВт/ч $0.15040 за 1 кВт/ч

Следующие 252 кВт/ч $0.30025 за 1 кВт/ч

Свыше 720 кВт/ч $0.34025 за 1 кВт/ч

Если вы намерены вести учет расхода электроэнергии, то имеет смысл написать программу для вычисления стоимости потребленной электроэнергии. Программа в листинге 7.4 является первым шагом в этом направлении.

Листинг 7.4. Программа electric.с

// electric.c -- подсчитывает сумму для счета за электроэнергию

#include < stdio.h>

#define RATE1 0.13230 // тариф за первые 360 кВт/ч

#define RATE2 0.15040 // тариф за следующие 108 кВт/ч

#define RATE3 0.30025 // тариф за следующие 252 кВт/ч

#define RATE4 0.34025 // тариф, когда расход превышает 720 кВт/ч

#define BREAK1 360.0 // первая точка разрыва тарифов

#define BREAK2 468.0 // вторая точка разрыва тарифов

#define BREAK3 720.0 // третья точка разрыва тарифов

#define BASE1 (RATE1 * BREAK1)

// стоимость 360 кВт/ч

#define BASE2 (BASE1 + (RATE2 * (BREAK2 - BREAK1)))

// стоимость 468 кВт/ч

#define BASE3 (BASE1 + BASE2 + (RATE3 *(BREAK3 - BREAK2)))

// стоимость 720 кВт/ч

int main(void)

{

double kwh; // израсходованные киловатт-часы

double bill; // сумма к оплате

 

printf(" Введите объем израсходованной электроэнергии в кВт/ч.\n");

scanf(" %lf", & kwh); // %lf для типа double

if (kwh < = BREAK1)

bill = RATE1 * kwh;

else if (kwh < = BREAK2) // в промежутке от 360 до 468

bill = BASE1 + (RATE2 * (kwh - BREAK1));

else if (kwh < = BREAK3) // в промежутке от 468 до 720

bill = BASE2 + (RATE3 * (kwh - BREAK2));

else // превышает 720

bill = BASE3 + (RATE4 * (kwh - BREAK3));

printf(" Сумма к оплате за %.1f kwh составляет $%1.2f.\n", kwh, bill);

return 0;

}

Вот пример вывода:

Введите объем израсходованной электроэнергии в кВт/ч.

Сумма к оплате за 580.0 кВт/ч составляет $97.50.

В программе из листинга 7.4 для представления тарифов применяются символи­ческие константы, которые для удобства собраны в одном месте. Если компания-про­изводитель электроэнергии меняет свои тарифы (это возможно), наличие их в одном месте упрощает модификацию. В листинге также используются символические конс­танты для точек разрыва. Они тоже могут изменяться. Константы BASE1 и BASE2 вы­ражены через тарифы и точки разрыва. Таким образом, если тарифы и точки разрыва меняются, значения BASE1 и BASE2 обновляются автоматически. Вы можете вспом­нить, что препроцессор не выполняет вычислений. Там, где в программе появляется константа BASE1, она заменяется выражением 0.13230 * 360. 0. Компилятор вычис­лит числовое значение этого выражения (47.628) и в окончательном коде программы будет присутствовать число 47.628, а не выражение.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал