Проблемы с итерацией при использовании линейного поиска - PullRequest
0 голосов
/ 06 марта 2020

В моем коде мне нужно пробежаться по некоторым файлам с загрузкой чисел, и в какой-то момент пользователю нужно ввести число, чтобы увидеть, находится ли оно в файле или нет, если оно находится в файле, то возвращая вывод должен быть позиционирование где в файле. Если его нет в списке, то мне нужно вернуть ближайшее значение для их ввода. Например, 669 есть в списке, а 668 нет. Мой код выглядит следующим образом для функции, чтобы найти ближайшее значение:

static int nearest(int close_num, int[] a)
{
int result = -1;
long smallestDelta = long.MaxValue;

foreach (int bob in a)
{
    long delta = (bob > close_num) ? (bob - close_num) : (close_num - bob);

    if (delta < smallestDelta)
    {
        smallestDelta = delta;
        result = bob;
    }
}

return result;

Тогда линейный поиск и остальное выглядит следующим образом:

 Console.WriteLine("Enter a number to find out if is in the selected Net File:  ");
        int i3 = Convert.ToInt32(Console.ReadLine());

        for (int i = 0; i < a.Length; i++)//looping through array
        {
            if (a[i] == i3)//checking to see the value is found in the array
            {
                Console.WriteLine("Value found and the position of it in the selected Net File is: " + i, a[i]);
                break;

            }
            else

            {

                int found = nearest(i3, a);
                Console.WriteLine("Cannot find this number in the Net File however here the closest number to that: " + found);

Однако это мои выводы: [ Вывод 1: при вводе значения, которое является файлом, по какой-то причине печатается вызов else 3x раньше, если я удаляю разрыв в коде, который он просто разрывает. 1

Выход 2: печать во время работы через весь список значений

как я могу исправить эти проблемы с форматированием b c код делает то, что мне нужно, просто не так, как должно. Спасибо

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