Найти порядковый номер числа из последовательности наиболее близкое к числу заданному пользователем - C#

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

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

Дана последовательность длиной до 100 вещественных чисел. Найти порядковый номер того из них,которое наиболее близко к числу заданному пользователем.

Решение задачи: «Найти порядковый номер числа из последовательности наиболее близкое к числу заданному пользователем»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ClosestNumber
  8. {
  9.     class Program
  10.     {
  11.      static void Main(string[] args)
  12.         {
  13.             decimal[] array = new decimal[5] { 80.23M, 80.40M, 80.80M, 80.00M, 20.45M };
  14.             decimal TargetNumber = 70.40M;
  15.  
  16.             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.
  17.  
  18.             Console.WriteLine(result);
  19.         }
  20.  
  21.         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>
  22.         {
  23.             U minDistance = default(U);
  24.             int minIndex = -1;
  25.  
  26.             using (var enumerator = elements.GetEnumerator())
  27.                 for (int i = 0; enumerator.MoveNext(); i++)
  28.                 {
  29.  
  30.                     var distance = distanceCalculator(enumerator.Current, target);
  31.                     if (minIndex == -1 || minDistance.CompareTo(distance) > 0)
  32.                     {
  33.                         minDistance = distance;
  34.                         minIndex = i;
  35.                     }
  36.  
  37.                     if (earlyTermination != null && earlyTermination(minDistance))
  38.                         break;
  39.                 }
  40.  
  41.             return minIndex;
  42.         }
  43.          
  44.     }
  45. }

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


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

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

12   голосов , оценка 4.417 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы