Напишите код, используя класс и метод на C# [закрыто]

Вопрос или проблема

Сценарий проблемы:

Сортировка полезна как первый шаг во многих различных задачах. Самая распространенная задача – облегчить поиск объектов, но есть и другие применения. В данном случае это упростит определение пары или пар элементов с наименьшей абсолютной разницей между ними.

Пример: arr = [5, 2, 3, 4, 1] Сортированный, arr’ = [1, 2, 3, 4, 5]. Несколько пар имеют минимальную разницу 1: [(1, 2), (2, 3), (3, 4), (4, 5)]. Верните массив [1, 2, 2, 3, 3, 4, 4, 5].

Примечание: Как показано в примере, пары могут пересекаться. Дана неотсортированная список целых чисел, arr, найдите пару элементов с наименьшей абсолютной разницей между ними. Если есть несколько пар, найдите их все.

Формат ввода: Первая строка содержит одно целое число n, длину arr. Вторая строка содержит n целых чисел, разделенных пробелами, arr[i].

Пример ввода 0:

10

-20 -3916237 -357920 -3620601 7374819 -7330761 30 6246457 -6461594 266854

Пример вывода 0:

-20 30

Объяснение 0: (30) – (-20) = 50, что является наименьшей разницей.

Пример ввода 1:

12

-20 -3916237 -357920 -3620601 7374819 -7330761 30 6246457 -6461594 266854 -520 -470

Пример вывода 1:

-520 -470 -20 30

Объяснение 1: (-470) – (-520) = 30 – (-20) = 50, что является наименьшей разницей.

сортировка списка с использованием ввода от пользователя

Ответ или решение

Вот решение задачи на C# с использованием классов и методов, которое позволяет находить пары элементов с наименьшей абсолютной разницей:

using System;
using System.Collections.Generic;
using System.Linq;

public class PairFinder
{
    public List<int> FindPairsWithMinimumDifference(int[] arr)
    {
        Array.Sort(arr); // Сортируем массив
        int minDifference = int.MaxValue;
        List<int> resultPairs = new List<int>();

        // Ищем минимальную разницу
        for (int i = 1; i < arr.Length; i++)
        {
            int difference = arr[i] - arr[i - 1];
            if (difference < minDifference)
            {
                minDifference = difference;
                resultPairs.Clear();
                resultPairs.Add(arr[i - 1]);
                resultPairs.Add(arr[i]);
            }
            else if (difference == minDifference)
            {
                resultPairs.Add(arr[i - 1]);
                resultPairs.Add(arr[i]);
            }
        }

        return resultPairs;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Введите длину массива (n):");
        int n = int.Parse(Console.ReadLine());

        Console.WriteLine("Введите элементы массива, разделенные пробелом:");
        int[] arr = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);

        PairFinder pairFinder = new PairFinder();
        List<int> result = pairFinder.FindPairsWithMinimumDifference(arr);

        Console.WriteLine("Пары с минимальной абсолютной разницей:");
        for (int i = 0; i < result.Count; i += 2)
        {
            Console.WriteLine($"({result[i]}, {result[i + 1]})");
        }
    }
}

Объяснение кода:

  1. Создан класс PairFinder, который содержит метод FindPairsWithMinimumDifference. Этот метод принимает массив целых чисел, сортирует его и находит пары с наименьшей абсолютной разницей.

  2. Мы используем сортировку массива для упрощения поиска минимальной разницы. После сортировки разница между соседними элементами будет наименьшей, так как все элементы упорядочены.

  3. Метод проходит через отсортированный массив, вычисляет разницу между соседними элементами и отслеживает минимальную разницу и соответствующие пары.

  4. В классе Program реализован метод Main, который принимает ввод от пользователя для длины массива и самих элементов. Затем он вызывает метод FindPairsWithMinimumDifference и выводит найденные пары на экран.

Примеры ввода/вывода:

  • Если пользователь вводит 10 и -20 -3916237 -357920 -3620601 7374819 -7330761 30 6246457 -6461594 266854, программа выведет:

    Пары с минимальной абсолютной разницей:
    (-20, 30)
  • Если ввод: 12 и -20 -3916237 -357920 -3620601 7374819 -7330761 30 6246457 -6461594 266854 -520 -470, то программа выведет:

    Пары с минимальной абсолютной разницей:
    (-520, -470)
    (-20, 30)

Редактируйте ввод в соответствии с вашими требованиями и проверьте функциональность программы.

Оцените материал
Добавить комментарий

Капча загружается...