Сортировать массив с плавающей точкой в ​​c# - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в c #. Мне нужно отсортировать массивы aa и bb, чтобы все элементы плавали. Мне нужно получить самый высокий и второй самый высокий в обоих массивах. Как я могу отсортировать массив? Я нашел, как сортировать массивы int s, но не видел, как сортировать числа с плавающей точкой. Если это невозможно, какие еще варианты у меня есть?

namespace program
{
    class Program
    {
        static void Main(string[] args)
        {
            float a = Convert.ToSingle(Console.ReadLine());
            float b = Convert.ToSingle(Console.ReadLine());
            float c = Convert.ToSingle(Console.ReadLine());
            float d = Convert.ToSingle(Console.ReadLine());
            float e = Convert.ToSingle(Console.ReadLine());
            float f = Convert.ToSingle(Console.ReadLine());

            float[] aa = new float[3];
            aa[0] = a;
            aa[1] = c;
            aa[2] = e;

            float[] bb = new float[3];
            bb[0] = b;
            bb[1] = d;
            bb[2] = f;




            Console.WriteLine( (aa[0]- aa[1]) * (bb[0]-bb[1]) /2 );

        }
    }
}

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Вы можете использовать Array.Sort (yourArray) для сортировки массива.

. После сортировки массива вы можете использовать индексы для доступа к первому и второму элементам в соответствии с вашим кодом.

     `static void Main(string[] args)
      {
        float a = Convert.ToSingle(Console.ReadLine());
        float b = Convert.ToSingle(Console.ReadLine());
        float c = Convert.ToSingle(Console.ReadLine());
        float d = Convert.ToSingle(Console.ReadLine());
        float e = Convert.ToSingle(Console.ReadLine());
        float f = Convert.ToSingle(Console.ReadLine());

        float[] aa = new float[3];
        aa[0] = a;
        aa[1] = c;
        aa[2] = e;

        float[] bb = new float[3];
        bb[0] = b;
        bb[1] = d;
        bb[2] = f;

        Array.Sort(aa);
        Array.Sort(bb);




        Console.WriteLine( (aa[0]- aa[1]) * (bb[0]-bb[1]) /2 );

    }`
0 голосов
/ 21 февраля 2020

Давайте начнем извлекать подпрограмму ReadSingle:

  private static float ReadSingle(string title = null) {      
    while (true) {
      if (!string.IsNullOrWhiteSpace(title))
        Console.WriteLine(title);

      if (float.TryParse(Console.ReadLine(), out float result))
        return result;

      Console.WriteLine("Invalid format, please try again.");  
    }
  }

, затем создадим массивы:

  float[] aa = new float[] {
    ReadSingle(),  
    ReadSingle(),
    ReadSingle(), 
  };

  float[] bb = new float[] {
    ReadSingle(),  
    ReadSingle(),
    ReadSingle(), 
  };

в общем случае, когда нам нужно создать массив из N элементов, которые мы можно использовать Linq :

  using System.Linq;

  ...

  float[] array = Enumerable
    .Range(1, N)
    .Select(i => ReadSingle($"Please, provide item #{i}"))
    .ToArray();

Наконец, давайте добавим Array.Sort и свяжем все это вместе:

namespace program {
  class Program {
    private static float ReadSingle(string title = null) {      
      while (true) {
        if (!string.IsNullOrWhiteSpace(title))
          Console.WriteLine(title);

        if (float.TryParse(Console.ReadLine(), out float result))
          return result;

        Console.WriteLine("Invalid format, please try again.");  
      }
    }

    static void Main(string[] args) {
     float[] aa = new float[] {
        ReadSingle(),  
        ReadSingle(),
        ReadSingle(), 
      };

      float[] bb = new float[] {
        ReadSingle(),  
        ReadSingle(),
        ReadSingle(), 
      };

      Array.Sort(aa);
      Array.Sort(bb); 

      Console.WriteLine((aa[0]- aa[1]) * (bb[0] - bb[1]) / 2);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...