Основи програмування на С ++ для початківців

Задача: двохтарифний електролічильник

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

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

18 думки про "Задача: двохтарифний електролічильник

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

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

    Разом 96,45.

    1. згоден. уже на 94 рядку коду з'являється якийсь сумнів у використанні формули, що це…

  2. #include

    const double ZONEONE = 0.456; // 600 кВт
    const int MINKWT = 100;
    const int MAXKWT = 600;

    struct ClientValue
    {
    int oldDate = 0;
    int newDate = 0;
    int resultDate = 0;
    подвійна загальна ціна = 0;
    };
    struct DayOrNight
    {
    День ClientValue;
    ClientValue ніч;
    };

    void kWtPerMounth(const int& newDate, const int& oldDate, int& result);
    void CinOldValue(int& oldValue);
    void CinNewValue(int& нове значення, const int& oldValue);
    недійсний CalculateDay(const int& результат за місяць, double& Загальна сума);
    void CalculateNight(const int& результат за місяць, double& Загальна сума);
    void Show(const DayOrNight& clientDate);

    int main()
    {
    std::cout << "Enter value of multi-tariff (багатозонний) засоби обліку.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& нове значення, const int& oldValue)
    {
    std::cin >> нове значення;
    while (нове значення <= старе значення)
    {
    std::cout << "New value cant be > нове значення;
    }
    }
    недійсний CalculateDay(const int& результат за місяць, double& Загальна сума)
    {
    if (результат за місяць MINKWT && результат за місяць < MAXKWHT)
    totalPrice = resultPerMounth * ZONETWO;
    else
    totalPrice = resultPerMounth * ЗОНА ТРЕТЯ;
    }
    void CalculateNight(const int& результат за місяць, double& Загальна сума)
    {
    if (результат за місяць MINKWT && результат за місяць < MAXKWHT)
    totalPrice = resultPerMounth * ZONETWO / 2;
    else
    totalPrice = resultPerMounth * ЗОНА ТРЕТЯ / 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";
    }

  3. Я подивився рішення після того, як написав свій код і жахнувся. Автор сам то розбереться у логіці своєї програми через рік? Навіщо стільки умов та змінних?
    Ось мій код(вибачте, що без пояснювальних коментарів)

    #include
    using namespace std;
    подвійний тарзон1(int wattday, int wattnight)
    {
    подвійна ніч = (0.456 / 2)* wattnight;
    подвійний день = ватдень * 0.456;
    подвійна сума = ніч + день;
    сума повернення;
    }
    подвійний тарзон2(int wattday, int wattnight)
    {
    подвійна ніч = (0.789 / 2) * wattnight;
    подвійний день = ватдень * 0.789;
    подвійна сума = ніч + день;
    сума повернення;
    }
    подвійний тарзон3(int wattday, int wattnight)
    {
    подвійна ніч = (1.479 / 2) * wattnight;
    подвійний день = ватдень * 1.479;
    подвійна сума = ніч + день;
    сума повернення;
    }
    int main()
    {
    setlocale(LC_ALL, “RU”);
    int wattday;
    int wattnight;
    cout <> ватний день;
    cout <> wattnight;
    double summ;
    if ((ватний день + wattnight) < 100)
    {
    summ = tarzone1(ватний день, wattnight);
    }
    if ((ватний день + wattnight) || (ватний день + wattnight) 600)
    summ = tarzone3(ватний день, wattnight);
    cout << "К оплате " << summ << endl;
    cout << "До свидания" << endl;
    return 0;
    }

  4. #include
    using namespace std;

    void logic(int chose, int chose2, int chose3, float t1, float t2, float t3) {
    if (chose == 1) {
    if (chose2 == 1)
    cout << chose3*t1 << endl;
    if (chose2 == 2)
    cout << chose3*t2 << endl;
    if (chose2 == 3)
    cout << chose3*t3 << endl;
    if (chose2 != 1 || chose3 != 2 || chose3 != 3)
    cout << "Не верная тарифная зона, попробуйте ещё раз" << endl;
    }
    if (chose == 2) {
    if (chose2 == 1)
    cout << chose3*(t1/2) << endl;
    if (chose2 == 2)
    cout << chose3*(t2/2) << endl;
    if (chose2 == 3)
    cout << chose3*(t3/2) << endl;
    if (chose2 != 1 || chose3 != 2 || chose3 != 3)
    cout << "Не верная тарифная зона, попробуйте ещё раз" << endl;
    }
    }

    void main() {
    int chose, chose2, chose3;
    float t1 = 0.456, t2 = 0.789, t3 = 1.479;

    do {
    do {
    cout << "тариф дневной или ночной? 1 – дневной 2 – ночной" <> chose;

    if (chose != 1 || chose != 2) {
    cout << "ошибка, выберите только 1 или 2" << endl;
    }
    }while(chose != 1 || chose != 2);
    cout << "Какая тарифная зона? выберите от 1-3" << endl << endl;
    cout << "1. Первая тарифная зона до 100 кВт*ч = 0.456 грн" << endl;
    cout << "2. Вторая тарифная зона от 100 до 600 кВт*ч = 0.789 грн" << endl;
    cout << "3. Третья тарифная зона от 600 кВт*ч = 1.479 грн" <> chose2;

    cout << "На сколько киловат эннергии вы хотите рассчитать?" <> chose3;

    logic(chose, chose2, chose3, t1, t2, t3);

    }while(chose != 3);

    }

    1. Вот переделал на нормальный, но всё равно код так себе, недоделка, делал быстро. Например нету выхода из программы.

      #include
      using namespace std;

      void logic(int chose, int chose2, int chose3, float t1, float t2, float t3) {
      if (chose == 1) {
      if (chose2 == 1 || chose2 == 2 || chose2 == 3)
      if (chose2 == 1)
      cout << chose3*t1 << endl;
      if (chose2 == 2)
      cout << chose3*t2 << endl;
      if (chose2 == 3)
      cout << chose3*t3 << endl;
      }
      if (chose == 2) {
      if (chose2 == 1 || chose2 == 2 || chose2 == 3)
      if (chose2 == 1)
      cout << chose3*(t1/2) << endl;
      if (chose2 == 2)
      cout << chose3*(t2/2) << endl;
      if (chose2 == 3)
      cout << chose3*(t3/2) << endl;
      }
      }

      int main() {
      int chose, chose2, chose3;
      float t1 = 0.456, t2 = 0.789, t3 = 1.479;

      do {
      do {
      cout << "тариф дневной или ночной? 1 – дневной 2 – ночной" <> chose;

      if (chose 2) {
      cout << "ошибка, выберите только 1 или 2" << endl;
      }
      }while(chose 2);
      do {
      cout << "Какая тарифная зона? выберите от 1-3" << endl << endl;
      cout << "1. Первая тарифная зона до 100 кВт*ч = 0.456 грн" << endl;
      cout << "2. Вторая тарифная зона от 100 до 600 кВт*ч = 0.789 грн" << endl;
      cout << "3. Третья тарифная зона от 600 кВт*ч = 1.479 грн" <> chose2;
      }while(chose2 3);
      cout << "На сколько киловат эннергии вы хотите рассчитать?" <> chose3;
      if (chose3 chose3)
      return 0;
      else
      logic(chose, chose2, chose3, t1, t2, t3);
      cout << endl;

      }while(chose != 3);

      return 0;
      }

Залишити коментар до beginer Скасувати відповідь

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *