Найти порядковый номер числа из последовательности наиболее близкое к числу заданному пользователем - C#
Формулировка задачи:
Дана последовательность длиной до 100 вещественных чисел. Найти порядковый номер того из них,которое наиболее близко к числу заданному пользователем.
Решение задачи: «Найти порядковый номер числа из последовательности наиболее близкое к числу заданному пользователем»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ClosestNumber
- {
- class Program
- {
- static void Main(string[] args)
- {
- decimal[] array = new decimal[5] { 80.23M, 80.40M, 80.80M, 80.00M, 20.45M };
- decimal TargetNumber = 70.40M;
- var result = FindClosestIndex(TargetNumber, array, (target, element) => Math.Abs(target - element)); //Optionally add in a "(distance) => distance == 0" at the end to enable early termination.
- Console.WriteLine(result);
- }
- public static int FindClosestIndex<T, U>(T target, IEnumerable<T> elements, Func<T, T, U> distanceCalculator, Func<U, bool> earlyTermination = null) where U : IComparable<U>
- {
- U minDistance = default(U);
- int minIndex = -1;
- using (var enumerator = elements.GetEnumerator())
- for (int i = 0; enumerator.MoveNext(); i++)
- {
- var distance = distanceCalculator(enumerator.Current, target);
- if (minIndex == -1 || minDistance.CompareTo(distance) > 0)
- {
- minDistance = distance;
- minIndex = i;
- }
- if (earlyTermination != null && earlyTermination(minDistance))
- break;
- }
- return minIndex;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д