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

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

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

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

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

  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;

    порожня логіка(внутр. вибрав, int chose2, int chose3, float t1, float t2, float t3) {
    if (вибрав == 1) {
    if (вибрав2 == 1)
    cout << вибрав3*t1 << endl;
    if (вибрав2 == 2)
    cout << вибрав3*t2 << endl;
    if (вибрав2 == 3)
    cout << вибрав3*t3 << endl;
    if (вибрав2 != 1 || вибрав3 != 2 || вибрав3 != 3)
    cout << "Не верная тарифная зона, спробуйте ще раз" << endl;
    }
    if (вибрав == 2) {
    if (вибрав2 == 1)
    cout << вибрав3*(t1/2) << endl;
    if (вибрав2 == 2)
    cout << вибрав3*(t2/2) << endl;
    if (вибрав2 == 3)
    cout << вибрав3*(t3/2) << endl;
    if (вибрав2 != 1 || вибрав3 != 2 || вибрав3 != 3)
    cout << "Не верная тарифная зона, спробуйте ще раз" << endl;
    }
    }

    void main() {
    внутр. вибрав, вибрав2, вибрав3;
    float t1 = 0.456, t2 = 0.789, t3 = 1.479;

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

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

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

    логіка(вибрав, вибрав2, вибрав3, t1, t2, t3);

    }while(вибрав != 3);

    }

    1. Ось переробив на нормальний, але все одно код так собі, недоробка, робив швидко. Наприклад, немає виходу з програми.

      #include
      using namespace std;

      порожня логіка(внутр. вибрав, int chose2, int chose3, float t1, float t2, float t3) {
      if (вибрав == 1) {
      if (вибрав2 == 1 || вибрав2 == 2 || вибрав2 == 3)
      if (вибрав2 == 1)
      cout << вибрав3*t1 << endl;
      if (вибрав2 == 2)
      cout << вибрав3*t2 << endl;
      if (вибрав2 == 3)
      cout << вибрав3*t3 << endl;
      }
      if (вибрав == 2) {
      if (вибрав2 == 1 || вибрав2 == 2 || вибрав2 == 3)
      if (вибрав2 == 1)
      cout << вибрав3*(t1/2) << endl;
      if (вибрав2 == 2)
      cout << вибрав3*(t2/2) << endl;
      if (вибрав2 == 3)
      cout << вибрав3*(t3/2) << endl;
      }
      }

      int main() {
      внутр. вибрав, вибрав2, вибрав3;
      float t1 = 0.456, t2 = 0.789, t3 = 1.479;

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

      if (вибрав 2) {
      cout << "ошибка, виберіть тільки 1 або 2" << endl;
      }
      }while(вибрав 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 грн" <> вибрав2;
      }while(вибрав2 3);
      cout << "На сколько киловат эннергии вы хотите рассчитать?" <> вибрав3;
      if (вибрав3 вибрав3)
      return 0;
      else
      логіка(вибрав, вибрав2, вибрав3, t1, t2, t3);
      cout << endl;

      }while(вибрав != 3);

      return 0;
      }

  5. Все написано якнайпростіше для самого початківця!

    #include

    float Part(float& pd, float& пн, float& d, float& n)
    {
    результат з плаваючою точкою = 0;
    if ((d – pd) >= (n – пн))
    {
    результат = (n – пн) / ((n – пн) + (d – pd));
    }
    else if ((d – pd) < (n – пн))
    {
    результат = (d – pd) / ((n – пн) + (d – pd));
    }
    std::cout << result << " = частина результату " <= (ніч – Ніч))
    {
    день = кВт – (кВт * частина);
    ніч = кВт – день;
    }
    else if ((День – PDay) <= (ніч – Ніч))
    {
    ніч = кВт – (кВт * частина);
    день = кВт – ніч;
    }
    return (день * Ціна) + (ніч * (Ціна / 2));
    }

    int main()
    {
    float f = 0.456, s = 0.789, t = 1.479;
    float PastDay(0), Минула ніч(0);
    std::cout <> Минулий день >> Минула ніч;
    день поплавця(0), ніч(0);
    std::cout << std::endl <> День >> ніч;
    std::cout < 0)
    {
    результат з плаваючою точкою (0);
    float under_600 (0);
    float under_100 (0);
    float under_0 (0);
    if (розд > 600)
    {
    результат = кВт – 600;
    under_600 = Обчислити_частини(частина, T, result, Минулий день, Минула ніч, День, ніч);
    std::cout << під_600 < 600″ < 100 && розд <= 600)
    {
    результат = кВт – 100;
    under_100 = Обчислити_частини(частина, s, result, Минулий день, Минула ніч, День, ніч);
    std::cout << під_100 < 100 до 600″ << std::endl;
    Розділ = 100;
    }
    if (розд <= 100)
    {
    under_0 = Обчислити_частини(частина, f, розд, Минулий день, Минула ніч, День, ніч);
    std::cout << під_0 < 0″ << std::endl;
    }
    std::cout << "Total = " << під_0 + під_100 + під_600 << std::endl;
    }
    інакше станд::cout << "0 розділ = 0! ";
    return 0;

    }

залишити коментар

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