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

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

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

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

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

  1. Доброго дня. Хочу показати вам мій варіант рішення. Мені здається, він кілька простіше, запропонованого вище.
    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, "rus");
    int lastmonthday(0), lastmonthnight(0), monthday(0), monthnight(0), day(0), night(0);
    double money(0);
    do
    {
    cout < < lastmonthday; cout << monthday; cout << lastmonthnight; cout << monthnight; day = 0; night = 0; if (monthday > lastmonthday) day = monthday - lastmonthday;
    else cout < < " Неверные дневные показания!!! Текущие меньше конечных!!!"; if (monthday < lastmonthnight) night = monthnight - lastmonthnight; else cout << " Неверные ночные показания!!! Текущие меньше конечных!!!" << endl; } while ((day == 0) || (night == 0)); cout << "______________________________________" << endl; cout << " Всего день кВт*ч = " << day << endl; cout << " Всего ночь кВт*ч = " << night << endl; cout << "______________________________________" << endl; cout << " дневной тариф до 100 кВт*ч 0.456 грн " <= 100) { money = 100 * 0.456; cout << " сумма за сто дневных кВт*ч = " << 100 * 0.456 << endl; } else { money = day*0.456; cout << " сумма за " << day << " дневных кВт*ч = " << day*0.456 <= 600) { cout << " дневной тариф от 100 до 600 кВт*ч 0.789 грн " << endl; money += ((500 * 0.789) + (day - 600)*1.479); cout << " сумма за 500 дневных кВт*ч = " << 500 * 0.789 <100)&(day<600)) { cout << " дневной тариф от 100 до 600 кВт*ч 0.789 грн " << endl; cout << " сумма за " << day - 100 << " дневных кВт*ч = " << (day - 100)*0.789 <600) { cout << " дневной тариф от 600 кВт*ч 1.479 грн " << endl; cout << " сумма за " << day - 600 << " кВт*ч превышения составила " << (day - 600)*1.479 << endl; } cout << "_____________________________________________" << endl; cout << " ночной тариф до 100 кВт*ч " << 0.456 / 2 << " грн " <= 100) { money += 100 * (0.456 / 2); cout << " сумма за сто ночных кВт*ч = " << 100 * (0.456 / 2) << endl; } else { money += night*0.456 / 2; cout << " сумма за " << night << " ночных кВт*ч = " << night*0.456 / 2 <= 600) { cout << " ночной тариф от 100 до 600 кВт*ч " << 0.789 / 2 << " грн " << endl; money += ((500 * 0.789 / 2) + (night - 600)*1.479 / 2); cout << " сумма за 500 ночных кВт*ч = " << 500 * 0.789 / 2 <100)&(night<600)) { cout << " ночной тариф от 100 до 600 кВт*ч 0.789 грн " << endl; cout << " сумма за " << night - 100 << " ночных кВт*ч = " << (night - 100)*0.789 / 2 <600) { cout << " ночной тариф от 600 кВт*ч 1.479 грн " << endl; cout << " сумма превышение за " << (night - 600) << " ночныхх кВт*ч = " << (night - 600)*1.479 / 2 << endl; } cout << "_________________________________________________" << endl; cout << "Общая сумма к выплате = " << money << " грн" << endl; return 0; }

    1. І ще питання до творця завдання: навіщо в умови вказано час коли вважаються денні, а коли нічні кВт * год. думала, куди це можна всунути, в for чи щоб від початкового значення до кінцевого вважати добу і ділити свідчення на день і ніч. Але вирішила не мудрувати. І в підсумку в вашому рішенні не побачила застосування цих даних. Так ось і питання – навіщо? Мабуть, щоб порадувати мозок новою інформацією та змусити трохи задуматися про суть даних :)

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

    int main()
    {
    using namespace std;
    float tec=0;
    float pred =0;
    float tecc=0;
    float predd =0;
    float pervaya = 0.456;
    float vtoraya = 0.789;
    float tretiya = 1.479;
    float sum=0;
    float summ=0;

    float s=0;//cумма день
    float h=0;//сумма ночь

    cout<<tec;
    cout<<pred;
    sum=tec-pred;
    cout<<"- - - - - - - - - - - - - - - - - -"<<endl;
    cout<>tecc;
    cout<>predd;
    summ=tecc-predd;
    cout<<endl;
    cout<<"- - - - - - - - - - - - - - - - - - -"<<endl;

    cout<<"Vashi pocazaniya den "<<sum<<endl;
    cout<<"Vashi pocazaniya noh "<<summ<<endl;
    if (sum<100)
    {
    s=sum*pervaya;
    cout<<"pokazaniya den, tarif <100, k oplate ";
    cout<100||sum<600)
    {
    s=sum*vtoraya;
    cout<<"pokazaniya den, tarif 100-600, k oplate ";
    cout<
    600)
    {
    s=sum*tretiya;
    cout<600, k oplate ";
    cout<<s;
    }

    cout<<endl;

    if (summ<100)//считаю ночь
    {
    h=summ*(pervaya/2);
    cout<<"pokazaniya noh, tarif <100, k oplate ";
    cout<100||summ<600)
    {
    h=summ*(vtoraya/2);
    cout<<"pokazaniya noh, tarif 100-600, k oplate ";
    cout<600)
    {
    h=summ*(tretiya/2);
    cout<600, k oplate ";
    cout<<h;
    }

    cout<<endl;

    cout<<s+h;

    return 0;
    }

  3. Nevnimatelynиy, перепрошую, то що вище можна видалити )
    Плюшки на кшталт тексту з інформацією і цикл while для повтору, можна допив самостійно, Рішення:

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

    if (значення > 600)
    {
    Результат + = ((значення – 599) * ot600);
    = значення – (значення – 599);
    }
    if (значення > 100)
    {
    Результат + = ((значення – 99) * do600);
    = значення – (значення – 99);
    }
    Результат + = (значення * до 100);

    return result;
    }

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

    1. Не пишіть в коментарі свій код!
      Він нікому тут не потрібний, коментарі робилися зовсім не для цього.

      1. А навіщо потрібні коментарі? Хіба не для того, щоб ділитися своїми рішеннями?
        І для тих, хто не помітив: невірно написано рішення прикладу з точки зору здорової математики. Навіщо підсумувати денний і нічний тарифи в кВт? Правильно порахувати кількість денних * на тариф цієї зони + кол-во нічних * на тариф відповідної зони.
        В умови ж сказано “Нічний тариф - 50% від вартості КОЖНІЙ денний тарифної зони”.

      2. поля коментарів – для того, щоб мати можливість запитати щось по тонким питань синтаксису, за складом бібліотек, використання конструкцій, плюси і мінуси тих чи інших конструкцій … і багато. MH. ще про що щодо мови 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 квт
    подвійний б = 0.789;//Вартысть вид 100 до 600 квт
    double c = 1.479;//вартысть вища за 600
    подвійний 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 = stalobulo;
    }
    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 = stalo1bulo1;
    }
    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;
    }

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

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