Класс RaD говорит, является ли результат функции прогрессией (арифметической/геометрической) и содержит переменную для разности.
В функции для арифметической прогрессии:

1 | Array[i] - Array[i - 1]; |
В функции для геометрической прогрессии:

1 | Array[i] / Array[i - 1]; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | using System; class Program { static void Main() { double [] Numbers = { -8, 4, -2, 1 }; RaD ap = CheckForArithmetic(Numbers); RaD gp = CheckForGeometry(Numbers); Console.Write(ap.result + " " + ap.difference + "\n" ); Console.Write(gp.result + " " + gp.difference + "\n" ); Console.ReadLine(); } static RaD CheckForArithmetic( double [] Array) { double _difference = Array[1] - Array[0]; for ( int i = 2; i < Array.Length; i++) { if (Array[i] - Array[i - 1] != _difference) return new RaD( false , 0); } _difference = Array[Array.Length - 1] - Array[Array.Length - 2]; return new RaD( true , _difference); } static RaD CheckForGeometry( double [] Array) { double _difference = Array[1] / Array[0]; for ( int i = 2; i < Array.Length; i++) { if (Array[i] / Array[i - 1] != _difference) return new RaD( false , 0); } _difference = Array[Array.Length - 1] / Array[Array.Length - 2]; return new RaD( true , _difference); } } class RaD { public bool result; public double difference; public RaD( bool Result, double Difference) { result = Result; difference = Difference; } } |