Найти порядковый номер числа из последовательности наиболее близкое к числу заданному пользователем - 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;
        }
         
    }
}

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


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

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

12   голосов , оценка 4.417 из 5
Похожие ответы