Сформировать последовательность уникальных чисел, содержащихся в строке, отсортировав их в порядке убывания - C#

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

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

Есть задание:

Из заданной строки сформировать последовательность уникальных чисел содержащихся в строке отсортировав их в порядке убывания.

По ней была написана такая программа:
class Program
    {
        public static class yprajnenie
        {
            public static IEnumerable<double> chsl(string zadanie)
            {
                char[] znak = { ' ' };
                string[] chislo = zadanie.Split(znak);
                double [] a = new double[chislo.Length] ;
                for(int i=0;i<chislo.Length; i++)
                {
                    a[i] = double.Parse(chislo[i]);
                }
                double temp;
                for (int i = 0; i <a.Length; i++)
                {
                    for (int j = i + 1; j < a.Length; j++)
                    {
                        if (a[i] <= a[j])
                        {
                            temp = a[i];
                            a[i] = a[j];
                            a[j] = temp;
                        }
                     }
                }
                foreach (double s in a)
                    yield return s;
 
            }
        }
        static void Main(string[] args)
        {
            string stroka = Console.ReadLine();
            foreach (double s in yprajnenie.chsl(stroka))
                Console.WriteLine(s);
        }
    }
Проблема в том, что на выводе должен быть набор из

уникальных

чисел. Как это можно реализовать? Заранее спасибо

Решение задачи: «Сформировать последовательность уникальных чисел, содержащихся в строке, отсортировав их в порядке убывания»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Globalization;
 
class Program
{
    static void Main()
    {
        string s = "1 3 5 1 8 3 6 8 9 6 5 7 8 16 7 823 76 8349 31 34 1 1 23 0";
        foreach (var number in GetNumbers(s, ' '))
        {
            Console.WriteLine(number);
        }
    }
 
    private static IEnumerable<int> GetNumbers(string s, char splitChar)
    {
        var numbers = s.Split(splitChar);
        var set = new HashSet<int>();
        foreach (string number in numbers)
        {
            set.Add(int.Parse(number));
        }
 
        int[] result = new int[set.Count];
        int k = 0;
        foreach (int x in set)
        {
            result[k++] = x;
        }
 
        for (int i = 0; i < result.Length; i++)
        {
            for (int j = i + 1; j < result.Length; j++)
            {
                if (result[i] <= result[j])
                {
                    var temp = result[i];
                    result[i] = result[j];
                    result[j] = temp;
                }
            }
        }
 
        return result;
    }
}

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


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

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

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