public static void Main()
const int installmentsAmount = 238;
const int firstInstallmentNumber = 40;
const double debt = 184764.78;
int installmentNumber = firstInstallmentNumber + int.Parse(input);
if(installmentNumber < firstInstallmentNumber || installmentNumber > installmentsAmount)
throw new ArgumentException($"Invalid installment number {installmentNumber}");
Installment installment = null;
for(var i = firstInstallmentNumber; i <= installmentNumber; i++)
installment = new(debtClone);
intetestSum += installment.Interest;
Console.WriteLine($"rata nr: {i}: {installment.ToString()}");
debtClone = debtClone - installment.Fund;
Console.WriteLine($"new debt: {debtClone.Round()}");
Console.WriteLine($"Spłacony kapitał: {(debt-debtClone).Round()}, suma zapłaconych odsetek: {intetestSum.Round()}");
public record Installment
const double INSTALLMENT = 1688.65;
const double FACTOR = 0.68;
public Installment(double debt)
Interest = Math.Round((debt * FACTOR / 100), 4);
Fund = Math.Round((INSTALLMENT - Interest), 4);
public double Fund { get; set; }
public double Interest { get; }
public override string ToString()
=> $"{nameof(Fund)}:{Fund}; {nameof(Interest)}:{Interest}";
public static class Extensions
public static double Round(this double d)