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

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

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

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

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

  1. Добрый день. Хочу показать вам мой вариант решения. Мне кажется, он несколько попроще, предложенного выше.

    1. И еще вопрос к создателю задачи: зачем в условии указано время когда считаются дневные, а когда ночные кВт*ч. Думала, куда это можно всунуть, в for что ли чтобы от начального значения до конечного считать сутки и делить показания на день и ночь. Но решила не мудрить. И в итоге в вашем решении не увидела применения этих данных. Так вот и вопрос – зачем? Наверное, чтобы порадовать мозг новой информацией и заставить немного задуматься о сути данных :)

  2. Спасибо большое за задачу.
    мне кажется что моя программа немного полегче, но вроде как считает также, если я не права, поправьте пожалуйста.

  3. Невнимательный, извиняюсь, то что выше можно удалить )
    Плюшки вроде текста с информацией и цикл while для повтора, можно допилить самостоятельно, решение:

  4. Режет половину текста… (
    Если прокатит, то вот сама функция подсчета:
    double summ(double value)
    {
    double result = 0;
    double do100 = 0.456;
    double do600 = 0.789;
    double ot600 = 1.479;

    if (value > 600)
    {
    result += ((value – 599) * ot600);
    value = value – (value – 599);
    }
    if (value > 100)
    {
    result += ((value – 99) * do600);
    value = value – (value – 99);
    }
    result += (value * do100);

    return result;
    }

    ночной и дневной тариф считаются, одинаково, при выводе делим ночной на 2 и суммируем результаты…

    1. Не пишите в комментарии свой код!
      Он никому здесь не нужен, комментарии делались вовсе не для этого.

      1. А зачем нужны комментарии? Разве не для того, чтобы делиться своими решениями?
        И для тех, кто не заметил: неверно написано решение примера с точки зрения здоровой математики. Зачем суммировать дневной и ночной тарифы в кВт? Правильно посчитать кол-во дневных * на тариф этой зоны + кол-во ночных*на тариф соответствующей зоны.
        В условии же сказано “Ночной тариф – 50% от стоимости КАЖДОЙ дневной тарифной зоны”.

      2. Поля комментариев – для того, чтобы иметь возможность спросить что-то по тонким вопросам синтаксиса, по составу библиотек, использованию конструкций, плюсах и минусах тех или иных конструкций … и мн. мн. ещё о чём относительно языка C++.

        Но, во-первых, движок сайта не позволяет нормально вписать сюда код (он его искажает!).

        А во-вторых (и это главное!), кому интересны здесь пЫанЭрские изыски начинающих? И на что они рассчитывают? – что кто-то будет оценивать и давать рецензию этим попыткам?

  5. Посмотрите, пожалуста, мой говнокод и скажите справился или нет с поставленой задачей огромное спосибо за ваше внимание
    #include
    #include
    using namespace std;
    int main() {
    setlocale(LC_ALL,”rus”);
    cout << "\t ***Калькулятор Електричиства***" << endl;
    cout << "\t*********************************"<< endl;
    cout << "_________________________________________"<< endl;
    cout << "Введите количиство киловат в дневной час \n" ;
    double KBt = 0;
    double a = 0.456;//стоимость до 100 квт
    double b = 0.789;//Вартысть вид 100 до 600 квт
    double c = 1.479;//вартысть вища за 600
    double z = 0;
    char exsit = 'y';
    double bulo = 0;
    double stalo = 0;
    double ruznica(0);
    while(exsit == 'y'){
    cout << "Введите прошлий показатель \n" <> bulo;
    if(bulo <= 0){
    cout <<" \t\tОшибка! Вы ввели штото не то \n" <> exsit;
    }else
    cout << "Введите сталое показание \n" <> stalo;
    if(stalo <= 0){
    cout <<" \t\tОшибка! Вы ввели штото не то \n" <> exsit;
    }
    else if(bulo < stalo){
    ruznica = stalo – bulo;
    }
    else
    ruznica = bulo -stalo;
    if(ruznica 101 )&&(ruznica 601){
    z = ruznica * c;
    }
    else
    cout << "ERROR! ";
    cout << "У вас " << ruznica << " KBt за днивное время" << endl;

    cout << "*******************************************"<< endl;
    cout << "_________________________________________"<< endl;
    //double KBt1 = 0;
    double a1 = a/2;//стоимость до 100 квт
    double b1 = b/2;//Вартысть вид 100 до 600 квт
    double c1 = c/2;//вартысть вища за 600
    double z1 = 0;

    //***___________****_________

    double bulo1 = 0;
    double stalo1 = 0;
    double ruznica1(0);

    cout << "Введите количиство киловат в ночной час \n" ;

    cout << "Введите прошлий показатель \n" <> bulo1;
    if(bulo1 <= 0){
    cout <<" \t\tОшибка! Вы ввели штото не то \n" <> exsit;
    }else
    cout << "Введите сталое показание \n" <> stalo1;
    if(stalo1 <= 0){
    cout <<" \t\tОшибка! Вы ввели штото не то \n" <> exsit;
    }
    else if(bulo1 < stalo1){
    ruznica1 = stalo1 – bulo1;
    }
    else
    ruznica1 = bulo1 -stalo1;
    if(ruznica1 101 )&&(ruznica1 601){
    z = ruznica1 * c1;
    }
    else
    cout << "ERROR! ";
    cout << "У вас " << ruznica1 << " KBt за ночное время" << endl;

    KBt = z + z1;

    cout << "Вам нужно сплатить " << KBt << " грн." << endl;
    cout <> exsit;

    // _getch();

    }

    return 0;
    }

Добавить комментарий для beginer Отменить ответ

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