Задача: скласти програму для розрахунку вартості електроенергії за показаннями двотарифного електролічильника. Є двохтарифний електролічильник. Показання знімаються в кінці місяця. Дані для розрахунку – різниця між показаннями за попередній місяць і за поточний (денного і нічного тарифу.) Початкові дані:
- денний тариф (з 7-00 ранку до 23-00);
- Нічний тариф (з 23-00 до 7-00 ранку );
- Перша тарифна зона – до 100 кВт*час: 0.456 грн
- Друга тарифна зона – от 100 до 600 кВт*час: 0.789 грн
- Третя тарифна зона – понад 600 кВт*час: 1.479 грн
- Нічний тариф – 50% від вартості кожної денний тарифної зони
Рішення:
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); cout << "Расчет стоимости электроэнергии двухтарифного электросчетчика" << endl; cout << "\t\t\t1.09.2015 " << endl; cout << "_____________________________________________________________" << endl; cout << " Ночной тариф 50% от стоимости каждой дневной тарифной зоны" << endl; cout << "\t________Стоимость по тарифным зонам_______ " << endl; cout << "" << endl; cout << "\t\tДо 100 кВт*час - 0.456 грн " << endl; cout << "" << endl; cout << "" << endl; cout << "\t\tОт 100-600 кВт*час - 0.789 грн " << endl; cout << "" << endl; cout << "" << endl; cout << "\t\tCвыше 600 кВт*час - 1.479 грн " << endl; cout << "____________________________________________________________ " << endl; char l; // переменная для продолжения или прекращения расчета int td1; // предыдущие показания День int td2; // настоящие показания День int qd; // разница показаний электросчетчика День int tn1; // предыдущие показания Ночь int tn2; // настоящие показания Ночь int qn; // разница показаний электросчетчика Ночь float q; // Суммарные показания День + Ночь float sd1; // Сумма до 100 кв День float sn1; // Сумма до 100 кв Ночь float sdn1; // Сумма до 100 кв День + Ночь float sd2; // Сумма от 100 до 600 кв День float sn2; // Сумма от 100 до 600 кв Ночь float sdn2; // Сумма от 100 до 600 кв День + Ночь float sd3; // Сумма более 600 кв День float sn3; // Сумма более 600 кв Ночь float sdn3; // Сумма более 600 кв День + Ночь float so; // сумма по всем тарифам float d = 0.456; // тариф до 100 кв float f = 0.789; // тариф от 100 до 600 кв float h = 1.479; // тариф от 600 кв do { cout << "Введите (День) предыдущие показания электросчетчика: "; cin >> td1; cout << "Введите (День) настоящие показания электросчетчика: "; cin >> td2; cout << "__________________________________________ " << endl; if (td2 == 0 || td2 <= td1) // Условие на проверку правильности ввода снятых показаний День { cout << "Проверьте показания электросчетчика !!!!" << endl; cout << "__________________________________________ " << endl; return 0; } cout << "__________________________________________ " << endl; cout << "Введите (Ночь) предыдущие показания электросчетчика: "; cin >> tn1; cout << "Введите (Ночь) настоящие показания электросчетчика: "; cin >> tn2; cout << "__________________________________________ " << endl; if (tn2 == 0 || tn2 <= tn1) // Условие на проверку правильности ввода снятых показаний Ночь { cout << "Проверьте показания электросчетчика !!!! " << endl; cout << "__________________________________________ " << endl; return 0; } qd = td2 - td1;// разница показаний электросчетчика День cout << "Всего День кВт*час : " << qd << endl; qn = tn2 - tn1;// разница показаний электросчетчика Ночь cout << "Всего Ночь кВт*час : " << qn << endl; q = qd + qn; cout << "Суммарные показания (День + Ночь ) кВт*час: " << q << endl; cout << "__________________________________________ " << endl; if (q > 600 && q != 600) // Тариф 3 { sd3 = (qd / q) * (q - 600) * h; // Сумма до 100 Кв День sn3 = (qn / q) * (q - 600) * (h / 2); // Сумма до 100 Кв Ночь sdn3 = sd3 + sn3; // Сумма до 100 кв День + Ночь cout << "Всего к оплате День + Ночь свыше 600 кВт*час (грн) : " << sdn3 << endl; cout << " " << endl; sd2 = (qd / q) * 500 * f; sn2 = (qn / q) * 500 * (f / 2); sdn2 = sd2 + sn2; cout << "Всего к оплате День + Ночь от 100 до 600 кВт*час (грн) : " << sdn2 << endl; cout << " " << endl; sd1 = (qd / q) * 100 * d; sn1 = (qn / q) * 100 * (d / 2); sdn1 = sd1 + sn1; cout << "Всего к оплате День + Ночь до 100 кВт*час (грн) : " << sdn1 << endl; cout << " " << endl; so = sdn3 + sdn2 + sdn1; cout << "__________________________________________ " << endl; cout << "Всего к оплате по всем тарифам !!! (грн) : " << so << endl; } if (q>100 && q <= 600) // Тариф 2 { sd2 = (qd / q) * (q - 100)*f; sn2 = (qn / q) * (q - 100)*(f / 2); sdn2 = sd2 + sn2; cout << "Всего к оплате День + Ночь от 100 до 600 кВт*час (грн) : " << sdn2 << endl; sd1 = (qd / q) * 100 * d; sn1 = (qn / q) * 100 * (d / 2); sdn1 = sd1 + sn1; cout << "Всего к оплате День + Ночь до 100 кВт*час (грн) : " << sdn1 << endl; so = sdn2 + sdn1; cout << "__________________________________________ " << endl; cout << "Всего к оплате по всем тарифам !!! (грн) : " << so << endl; } if (q <= 100 && q != 0) // Тариф 1 { sd1 = qd*d; sn1 = (qn*(d / 2)); sdn1 = sd1 + sn1; cout << "Всего к оплате День + Ночь до 100 кВт*час (грн.) : " << sdn1 << endl; so = sdn1; cout << "__________________________________________ " << endl; cout << "Всего к оплате по всем тарифам !!! (грн) : " << so << endl; } cout << "__________________________________________" << endl; cout << "Продолжить расчет дальше (y/n)? "; cin >> l; } while (l == 'y'); } |
Робота програми:
5.0
10
Доброго дня. Хочу показати вам мій варіант рішення. Мені здається, він кілька простіше, запропонованого вище.
#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; }
І ще питання до творця завдання: навіщо в умови вказано час коли вважаються денні, а коли нічні кВт * год. думала, куди це можна всунути, в for чи щоб від початкового значення до кінцевого вважати добу і ділити свідчення на день і ніч. Але вирішила не мудрувати. І в підсумку в вашому рішенні не побачила застосування цих даних. Так ось і питання – навіщо? Мабуть, щоб порадувати мозок новою інформацією та змусити трохи задуматися про суть даних :)
Спасибо большое за завдання.
мені здається що моя програма трохи легше, але ніби як вважає також, якщо я не права, поправте будь ласка.
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;
}
Nevnimatelynиy, перепрошую, то що вище можна видалити )
Плюшки на кшталт тексту з інформацією і цикл while для повтору, можна допив самостійно, Рішення:
Емм… чет якось кривувато працює ваш тег предформатірованного тексту…
Ріже половину тексту… (
якщо прокотить, то ось сама функція підрахунку:
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 і підсумовуємо результати…
Не пишіть в коментарі свій код!
Він нікому тут не потрібний, коментарі робилися зовсім не для цього.
А навіщо потрібні коментарі? Хіба не для того, щоб ділитися своїми рішеннями?
І для тих, хто не помітив: невірно написано рішення прикладу з точки зору здорової математики. Навіщо підсумувати денний і нічний тарифи в кВт? Правильно порахувати кількість денних * на тариф цієї зони + кол-во нічних * на тариф відповідної зони.
В умови ж сказано “Нічний тариф - 50% від вартості КОЖНІЙ денний тарифної зони”.
поля коментарів – для того, щоб мати можливість запитати щось по тонким питань синтаксису, за складом бібліотек, використання конструкцій, плюси і мінуси тих чи інших конструкцій … і багато. MH. ще про що щодо мови C ++.
Але, по перше, движок сайту не дозволяє нормально вписати сюди код (він його спотворює!).
А по-друге (і це головне!), кому цікаві тут пИполюванняЕрскіе вишукування початківців? І на що вони розраховують? – що хтось буде оцінювати і давати рецензію цим спробам?
Посмотрите, пожалуста, мой говнокод и скажите справился или нет с поставленой задачей огромное спосибо за ваше внимание
#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 = 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;
}
Если чо я писал на тилифоне прогой
CppDroid – C / C ++ IDE для Android.