Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace TestConsoleApplication
- {
- class Program
- {
- public static string getPaymentAmount(double houseArea,
- double[] firstTariffCoefficients, // тарифные коэффициенты за 1.01-30.06
- double[] secondTariffCoefficients, // тарифные коэффициенты за 1.07-31.12
- double[] elevatorCoefficients) // тарифные коэффициенты для содержания и ремонта лифта
- {
- // Концепция годовой формулы: ans = houseArea * period * (tariff1 + tariff2)
- // Тарифная ставка меняется 1 июля каждого года: https://kvartplata.info/rates/index.php
- // Коэффициенты тарифных планов (Содержание дома, Текущий ремонт, Услуги управления):
- // Управление: тариф 1 (в массивах тарифы будут начинаться с нуля, а не с 1);
- // Ремонт: тарифы 3, 6-8, 10-11;
- // Содержание: тарифы 2, 4-5, 9.1-9.3, 12.1-12.2, 12.3.1.1-12.3.1.2, 12.3.2.
- // На вход подаются все коэффициенты из тарифного плана. Если каких-то работ не проводилось,
- // то коэффициент равен нулю. Коэффициенты подаются в том же порядке, что и в тарифном плане
- // (всего 17 + 5 для лифта).
- const int period = 6; // в месяцах, фиксированный
- double elevatorTariff = period * elevatorCoefficients[0] * (1 + elevatorCoefficients[1]) *
- elevatorCoefficients[2] / elevatorCoefficients[3] * elevatorCoefficients[4]; // за полгода
- double firstManagement = firstTariffCoefficients[0], secondManagement = secondTariffCoefficients[0];
- double firstRepair = firstTariffCoefficients[2] + firstTariffCoefficients[5] + firstTariffCoefficients[6] +
- firstTariffCoefficients[7] + firstTariffCoefficients[11] + elevatorTariff;
- double secondRepair = secondTariffCoefficients[2] + secondTariffCoefficients[5] + secondTariffCoefficients[6] +
- secondTariffCoefficients[7] + secondTariffCoefficients[11] + elevatorTariff;
- double firstMaintenance = firstTariffCoefficients[1] + firstTariffCoefficients[3] +
- firstTariffCoefficients[4] + firstTariffCoefficients[8] + firstTariffCoefficients[9] +
- firstTariffCoefficients[10] + firstTariffCoefficients[12] + firstTariffCoefficients[13] +
- firstTariffCoefficients[14] + firstTariffCoefficients[15] + firstTariffCoefficients[16];
- double secondMaintenance = secondTariffCoefficients[1] + secondTariffCoefficients[3] +
- secondTariffCoefficients[4] + secondTariffCoefficients[8] + secondTariffCoefficients[9] +
- secondTariffCoefficients[10] + secondTariffCoefficients[12] + secondTariffCoefficients[13] +
- secondTariffCoefficients[14] + secondTariffCoefficients[15] + secondTariffCoefficients[16];
- double firstSum = firstManagement, secondSum = secondManagement;
- for (int i = 1; i < 12; ++i)
- {
- firstSum += firstTariffCoefficients[i];
- }
- for (int i = 1; i < 12; ++i)
- {
- secondSum += secondTariffCoefficients[i];
- }
- double[] ans = new double[4];
- ans[0] = period * houseArea * (firstManagement + secondManagement); // управление
- ans[1] = period * houseArea * (firstRepair + secondRepair); // ремонт
- ans[2] = period * houseArea * (firstMaintenance + secondMaintenance); // содержание
- ans[3] = period * houseArea * (firstSum + secondSum); // общая сумма
- return "{\n\t\"Repair\": \"" + ans[1] + "\",\n\t\"Management: \": \"" +
- ans[0] + "\",\n\t\"Maintenance: \": \"" + ans[2] +
- "\",\n\t\"Total: \": \"" + ans[3] + "\"\n}";
- }
- static void Main(string[] args)
- {
- // Тест с https://read.infometer.org/projects/calcgkh#podskazka (управление)
- double area = 627.22;
- double[] first = new double[17];
- double[] second = new double[17];
- double[] elevator = new double[5];
- first[0] = 1.18;
- for (int i = 1; i < 17; ++i) first[i] = 0;
- second[0] = 2.29;
- for (int i = 1; i < 17; ++i) second[i] = 0;
- for (int i = 1; i < 5; ++i) elevator[i] = 0;
- elevator[3] = 1; // чтобы не было деления на 0
- System.Console.WriteLine(getPaymentAmount(area, first, second, elevator));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement