Задать контролируемый ввод значений - C#

Узнай цену своей работы

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

как задать контролируемый ввод значений в данном случае обязательно больше нуля, возможно связать еще и существование треугольника с try catch?
static void Main(string[] args)
        {
            try
            {
                Console.Write("ввод стороны x:");
                uint x = Convert.ToUInt32(Console.ReadLine());
                Console.Write("ввод стороны y:");
                uint y = Convert.ToUInt32(Console.ReadLine());
                Console.Write("ввод стороны z:");
                uint z = Convert.ToUInt32(Console.ReadLine());
                if (x + y < z || x + z < y || y + z < x)
                {
                    Console.WriteLine("такого треугольника нет");
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("не входит в диапазон значений");
            }
 
        }
тут только через Exception получается
да и если нули представлять как стороны не подходит

Решение задачи: «Задать контролируемый ввод значений»

textual
Листинг программы
namespace ConsoleApplication
{
    static class Extensions
    {
        public static int? BoundedParse(this string str, int lower, int upper)
        {
            if (str == null)
                return null;
            int result;
            bool success;
            success = int.TryParse(str, out result);
            if (!success)
                return null;
            if (result < lower)
                return null;
            if (result > upper)
                return null;
            return result;
        }
    }
    class Program
    {
      
        static int PromptForNumber(string prompt, int lower, int upper)
        {
            int? choice;
            do
            {
                Console.WriteLine(prompt);
                choice = Console.ReadLine().BoundedParse(lower, upper);
            }
            while (choice == null);
            return choice.Value;
        }
        static void Main()
        {
            string s = Console.ReadLine();
            int upper = 10;
            int lower = 1;
            int res = PromptForNumber(s, lower, upper);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.6 из 5
Похожие ответы