Выходной параметр. Факториал - 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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д