Объясните строку int a = int.Parse(Console.ReadLine()); - C#

Формулировка задачи:

int a = int.Parse(Console.ReadLine());
Console.WriteLine("количество совершенных операций = {0}", j);

Код к задаче: «Объясните строку int a = int.Parse(Console.ReadLine()); - C#»

textual
   public enum EOrder
        {
            Less = 1,
            Greater,
            Equals
        } ;
 
        public interface IDriver
        {
            int Left { get; }
            int Rigth { get; }
            EOrder Result { get; }
            int Current { get; set; }
            void Complete(bool isFound, int opCount);
        }
 
        internal class ConsoleDriver : IDriver
        {
            #region Implementation of IDriver
 
            public int Left
            {
                get { return Read("Введите целое число с которого начать отсчет: "); }
            }
 
            public int Rigth
            {
                get { return Read("Введите целое число которым закончить отсчет: "); }
            }
 
            public EOrder Result
            {
                get { return ReadResult(); }
            }
 
            public int Current
            {
                get;
                set;
            }
 
            public void Complete(bool isFound, int opCnt)
            {
                if (isFound)
                {
                    Console.WriteLine("ЧИСЛО ОТГАДАНО! С {0} ПОПЫТКИ", opCnt);
                }
                else
                {
                    Console.WriteLine("Где-то Вы солгали, сударь или сударыня!");
                }
                Console.WriteLine("The end.");
            }
 
            #endregion
 
            private EOrder ReadResult()
            {
                Console.WriteLine("это число {0}?", Current);
                Console.WriteLine("1 - меньше ");
                Console.WriteLine("2 - больше ");
                Console.WriteLine("3 - равно ");
                do
                {
                    int ans = Read("Введите ответ от 1 до 3: ");
                    if (ans < 1 || ans > 3)
                    {
                        PrintError("Чило может быть больше(2), меньше(1) или равно(3) загадонному!");
                        continue;
                    }
                    return (EOrder)ans;
                }
                while (true);
            }
 
 
            private static int Read(string invitation)
            {
                do
                {
                    Console.Write(invitation);
                    string str = Console.ReadLine();
                    if (string.IsNullOrEmpty(str))
                    {
                        PrintError("неверный формат числа!");
                        continue;
                    }
                    int res;
                    if (int.TryParse(str, out res))
                    {
                        return res;
                    }
                    PrintError("неверный формат числа!");
 
                }
                while (true);
            }
 
            private static void PrintError(string message)
            {
                Console.WriteLine();
                Console.WriteLine("**************ОШИБКА!*******************");
                Console.WriteLine(message);
                Console.WriteLine("****************************************");
                Console.WriteLine();
            }
 
        }
 
        class Fortuneteller : IEnumerator<int>, IEnumerable<int>
        {
 
            private readonly IDriver _driver;
            private int _left;
            private int _right;
            private bool _isFound;
            private int _op;
 
            public Fortuneteller(IDriver driver)
            {
                _driver = driver;
                _left = _driver.Left - 1;
                _right = _driver.Rigth + 1;
                _driver.Current = int.MinValue;
            }
 
            private void SetBounds(EOrder order)
            {
                switch (order)
                {
                    case EOrder.Less:
                        _right = _driver.Current;
                        break;
                    case EOrder.Greater:
                        _left = _driver.Current;
                        break;
                    case EOrder.Equals:
                        _left = _right = _driver.Current;
                        _isFound = true;
                        break;
                }
            }
 
            private int GetNext()
            {
                return (_left + _right) / 2;
            }
 
            #region Implementation of IDisposable
 
            public void Dispose()
            {
                _driver.Complete(_isFound, _op);
            }
 
            #endregion
 
            #region Implementation of IEnumerator
 
            public bool MoveNext()
            {
                if (_isFound || (_left >= _right))
                    return false;
                int t = GetNext();
                if (t == _driver.Current)
                    return false;
                _driver.Current = t;
                SetBounds(_driver.Result);
                ++_op;
                return true;
            }
 
            public void Reset() { }
 
            public int Current
            {
                get { return _driver.Current; }
            }
 
            object IEnumerator.Current
            {
                get { return Current; }
            }
 
            #endregion
 
            #region Implementation of IEnumerable
 
            public IEnumerator<int> GetEnumerator()
            {
                return this;
            }
 
            IEnumerator IEnumerable.GetEnumerator()
            {
                return GetEnumerator();
            }
 
            #endregion
        }

5   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы