コード例 #1
0
 /// <summary>   Validates the data described by findGCD. </summary>
 /// <exception cref="ArgumentNullException">    Thrown when one or more required arguments are
 ///                                             null. </exception>
 /// <param name="findGCD">  The find gcd delegate. </param>
 private static void ValidateData(FindingDelegateGCD findingDelegate)
 {
     if (findingDelegate == null)
     {
         throw new ArgumentNullException($"{(nameof(findingDelegate))} cant be a null");
     }
 }
コード例 #2
0
        private static int GetGCD(FindingDelegateGCD findingDelegate, params int[] numbers)
        {
            int greatestCommonDivisor = 0;

            for (int i = 0; i < numbers.Length; i++)
            {
                greatestCommonDivisor = findingDelegate(greatestCommonDivisor, numbers[i]);
            }

            return(greatestCommonDivisor);
        }
コード例 #3
0
        /// <summary>   Validates the data described by findGCD. </summary>
        /// <exception cref="ArgumentNullException">    Thrown when one or more required arguments are
        ///                                             null. </exception>
        /// <exception cref="ArgumentException">        Thrown when one or more arguments have
        ///                                             unsupported or illegal values. </exception>
        /// <param name="findingDelegate">  The finding delegate. </param>
        /// <param name="numbers">          A variable-length parameters list containing numbers. </param>
        private static void ValidateData(FindingDelegateGCD findingDelegate, params int[] numbers)
        {
            if (findingDelegate == null)
            {
                throw new ArgumentNullException($"{(nameof(findingDelegate))} cant be a null");
            }

            if (numbers.Length == 1 && numbers[0] == 0)
            {
                throw new ArgumentException($"{nameof(numbers)} cant have length is one and element zero");
            }
        }
コード例 #4
0
 public static void EuclidsAlgorithmTest_Numbers_ArgumentNullException(FindingDelegateGCD findingDelegateGCD, params int[] numbers)
 => Assert.Throws <ArgumentNullException>(() => GreatestCommonDivisor.EuclidMethodForFindingGCD(findingDelegateGCD, numbers));
コード例 #5
0
 public static void EuclidsAlgorithmTest(FindingDelegateGCD findingDelegateGCD, int expected, int a, int b)
 {
     Assert.AreEqual(expected, GreatestCommonDivisor.EuclidMethodForFindingGCD(findingDelegateGCD, a, b));
 }
コード例 #6
0
 public static void EuclidsAlgorithmTest(FindingDelegateGCD findingDelegateGCD, int expected, params int[] numbers)
 {
     Assert.AreEqual(expected, GreatestCommonDivisor.EuclidMethodForFindingGCD(findingDelegateGCD, numbers));
 }
コード例 #7
0
 /// <summary>   Gcd for a two numbers. </summary>
 /// <param name="findGCD">  The find gcd delegate. </param>
 /// <param name="a">        An int to process. </param>
 /// <param name="b">        An int to process. </param>
 /// <returns>   An int value. </returns>
 public static int EuclidMethodForFindingGCD(FindingDelegateGCD findGCD, int a, int b)
 {
     ValidateData(findGCD);
     return(findGCD.Invoke(a, b));
 }
コード例 #8
0
 /// <summary>   Gcd for a lot of numbers. </summary>
 /// <param name="findGCD">  The find gcd delegate. </param>
 /// <param name="numbers">  A variable-length parameters list containing numbers. </param>
 /// <returns>   An int value. </returns>
 public static int EuclidMethodForFindingGCD(FindingDelegateGCD findGCD, params int[] numbers)
 {
     ValidateData(findGCD, numbers);
     return(GetGCD(findGCD, numbers));
 }