Я пытаюсь рассчитать стоимость аренды комнаты по дисконтной таблице. Постановка проблемы: Компания предлагает своим сотрудникам субсидированное пребывание в одном из своих гостевых домов. Схема скидок
- 50% на первые 2 дня пребывания
- 25% на следующие 2 дня
- 15% на следующие 2 дня
- 0% на пребывание более 6 дней
Проблема в том, что мои расчеты всегда неверны. Например, если сотрудник уже прожил в гостевом доме 4 дня и теперь просит еще 3 дня, арендную плату следует рассчитывать на 1 день со скидкой 0%. Аналогичным образом, если сотрудник уже находился там в течение 2 дней и теперь запрашивает еще 5 дней, с него взимается 2 дня со скидкой 25%, 2 дня со скидкой 15% и 1 день со скидкой 0%. Я надеюсь, что это проясняет проблему.
Вот структура программы:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<ExemptionDetails> exemptionDetailsList = new List<ExemptionDetails>();
exemptionDetailsList.Add(new ExemptionDetails{ExemptionTo = 2, ExemptionPercentage = 50});//First 2 Days, 50% off
exemptionDetailsList.Add(new ExemptionDetails{ExemptionTo = 2, ExemptionPercentage = 25});//Next 2 Days, 25% off
exemptionDetailsList.Add(new ExemptionDetails{ExemptionTo = 2, ExemptionPercentage = 15});//Next 2 Days, 15% off
//No reimbursement for more than 6 days
var perDayRent = 2000.00M;//per day rent of the room
var daysAvailedInPast = 2;//has already availed 2 days discount
var daysAppyingNow = 5;//need to calculate the rent of 5 days based on discount scheme
var calculatedRent = 0.00M
foreach (var item in exemptionDetailsList)
{
//I have tried a lot of options here but all of them failed. Need to calculate the rent for 5 days according to the list above.
}
Console.WriteLine(calculatedRent);//should give result: 8400
}
}
public class ExemptionDetails
{
public int ExemptionTo
{
get;
set;
}
public int ExemptionPercentage
{
get;
set;
}
}