namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter04.Listing04_43
{
    public class FibonacciCalculator
    {
        public static void Main()
        {
            decimal current;
            decimal previous;
            decimal temp;
            decimal input;

            System.Console.Write("Wprowadź dodatnią liczbę całkowitą:");

            // Instrukcja decimal.Parse przekształca wartość pobraną przez metodę ReadLine na liczbę dziesiętną.
            input = decimal.Parse(System.Console.ReadLine());

            // Inicjowanie zmiennych current i previous wartością 1. Są to dwie
            // pierwsze liczby z ciągu Fibonacciego.
            current = previous = 1;

            // Dopóki obecna liczba Fibonacciego w ciągu ma 
            // wartość mniejszą niż liczba podana przez użytkownika.
            while (current <= input)
            {
                temp = current;
                current = previous + current;
                previous = temp; // Wykonywane nawet w sytuacji, gdy poprzednia
                                 // instrukcja spowodowała, że zmienna current ma wartość większą niż zmienna input.
            }

            System.Console.WriteLine(
              $"Następna liczba Fibonacciego to { current }");
        }
    }
}
