Выходной параметр. Факториал - C#

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

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

Задание такое: Написать метод вычисления факториала числа, результат вычислений передавать в выходном параметре. Если метод отработал успешно, то вернуть значение true; если в процессе вычисления возникло переполнение, то вернуть значение false. Для отслеживания переполнения значения использовать блок checked. Проблема: не работает блок checked, а при вычисление факториала 17 выдает отрицательное число. Что не так? Подскажите пожалуйста. Еще не уверен, правильно ли я сделал передачу вычисления в выходном параметре.
namespace timp7
{
    class Program
    {
        static void Main(string[] args)
        {
            int F;
            fakt(out F);
        }
        static void fakt(out int i)
        {
            int maxintvalue = 2147483647;
            int F = 1;
            for (int c = 18; c > 1; c--)
                F = F * c; 
 
            i = F;
            Console.WriteLine("Факториал 5 =  " + F);
            Console.ReadLine();
            int z = 0;
            try
            {
                z = checked(maxintvalue + F);
            }
            catch (System.OverflowException e)
            {
                Console.WriteLine("CHECKED" + e.ToString());
            } 
            
        }
        
    }
}

Решение задачи: «Выходной параметр. Факториал»

textual
Листинг программы
namespace Факториал
{
    class Program
    {
        static void Main(string[] args)
        {
            int a=Convert.ToInt32(Console.ReadLine());
            bool flag = fact(ref a);
            Console.WriteLine(Convert.ToString(flag) +" "+ Convert.ToString(a));
        }
        static bool fact(ref int num) {
            int c = num;
            num = 1;
            for (int i = 1; i <= c;i++ )
                try
                {
                    checked {
                        num *= i;
                    }
                }
                catch { return false; }
                return true;
        }
    }
}

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


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

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

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