Основы программирования на С++ для начинающих

Задача: двухтарифный электросчетчик

Задача: составить программу для расчета стоимости электроэнергии по показаниям двухтарифного электросчетчика. Имеется двухтарифный электросчетчик. Показания снимаются в конце месяца. Данные для расчета – разница между показаниями за предыдущий месяц и за текущий (дневного и ночного тарифа.) Исходные данные:

  • Дневной тариф (с 7-00 утра до 23-00);
  • Ночной тариф (с 23-00 до 7-00 утра );
  • Первая тарифная зона – до 100 кВт*час: 0.456 грн
  • Вторая тарифная зона – от 100 до 600 кВт*час: 0.789 грн
  • Третья тарифная зона – свыше 600 кВт*час: 1.479 грн
  • Ночной тариф – 50% от стоимости каждой дневной тарифной зоны

15 thoughts on “Задача: двухтарифный электросчетчик

  1. Ну да, комментарии не для кода, а “образец” сверху эталон на который должны равняться все …
    Угу, куча переменных нафиг не нужных. В условии задачи не было отдельного вывода по тарифам. Если нужно было сделать квитанцию – это одно, а получить итоговую сумму это совсем другое.
    Но это все не важно.
    Вы, извините, код проверяете, перед тем как залить ? Итоговые цифры на скриншоте – явный бред. Проверяется элементарно калькулятором.

    До 100
    День 45,6 + ночь 11,4 = 57
    После 100
    День 39,45

    Итого 96,45.

    1. Согласен. Уже на 94 строке кода появляется какое-то сомнение в использовании формулы, что это…

  2. #include

    const double ZONEONE = 0.456; // 600 kWt
    const int MINKWT = 100;
    const int MAXKWT = 600;

    struct ClientValue
    {
    int oldDate = 0;
    int newDate = 0;
    int resultDate = 0;
    double totalPrice = 0;
    };
    struct DayOrNight
    {
    ClientValue day;
    ClientValue night;
    };

    void kWtPerMounth(const int& newDate, const int& oldDate, int& result);
    void CinOldValue(int& oldValue);
    void CinNewValue(int& newValue, const int& oldValue);
    void CalculateDay(const int& resultPerMounth, double& totalPrice);
    void CalculateNight(const int& resultPerMounth, double& totalPrice);
    void Show(const DayOrNight& clientDate);

    int main()
    {
    std::cout << "Enter value of multi-tariff (multi-zone) means of accounting.\n" << "Please enter a old day value: \n";
    DayOrNight clientDate;

    CinOldValue(clientDate.day.oldDate);
    std::cout << "Please enter a new day value: \n";
    CinNewValue(clientDate.day.newDate, clientDate.day.oldDate);
    std::cout << "Please enter a old night value: \n";
    CinOldValue(clientDate.night.oldDate);
    std::cout <> oldValue;
    while (oldValue <= 0)
    {
    std::cout << "Value < 0.\n" <> oldValue;
    }
    }
    void CinNewValue(int& newValue, const int& oldValue)
    {
    std::cin >> newValue;
    while (newValue <= oldValue)
    {
    std::cout << "New value cant be > newValue;
    }
    }
    void CalculateDay(const int& resultPerMounth, double& totalPrice)
    {
    if (resultPerMounth MINKWT && resultPerMounth < MAXKWT)
    totalPrice = resultPerMounth * ZONETWO;
    else
    totalPrice = resultPerMounth * ZONETHREE;
    }
    void CalculateNight(const int& resultPerMounth, double& totalPrice)
    {
    if (resultPerMounth MINKWT && resultPerMounth < MAXKWT)
    totalPrice = resultPerMounth * ZONETWO / 2;
    else
    totalPrice = resultPerMounth * ZONETHREE / 2;
    }
    void Show(const DayOrNight& clientDate)
    {
    std::cout << "Your old date for day is: " << clientDate.day.oldDate << " kWt/month.\n";
    std::cout << "Your new date for day is: " << clientDate.day.newDate << " kWt/month.\n";
    std::cout << "Your old date for nigth is: " << clientDate.night.oldDate << " kWt/month.\n";
    std::cout << "Your new date for nigth is: " << clientDate.night.newDate << " kWt/month.\n";
    std::cout << "Your month result for day is: " << clientDate.day.resultDate << " kWt/month.\n";
    std::cout << "Your month result for nigth is: " << clientDate.night.resultDate << " kWt/month.\n";
    std::cout << "Your may pay for day is: " << clientDate.day.totalPrice << " UAH.\n";
    std::cout << "Your may pay for nigth is: " << clientDate.night.totalPrice << " UAH.\n";
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *