Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 18.12.2014
Сообщений: 6

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

07.06.2015, 03:13. Показов 1840. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание:

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

По ней была написана такая программа:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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);
        }
    }
Проблема в том, что на выводе должен быть набор из уникальных чисел. Как это можно реализовать? Заранее спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.06.2015, 03:13
Ответы с готовыми решениями:

Вывести все значения на экран, отсортировав в порядке убывания длины
В параметрах командной строки передаются строковые значения. Вывести все значения на экран, отсортировав в порядке убывания длины

Дана последовательность чисел a1, a2, a3, …, an. Вывести ее на экран в порядке убывания
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;ctime&gt; //Дана последовательность чисел a1, a2, a3, …, an.Вывести ее на экран в...

Сгенерировать последовательность В из n (n запрашивается) вещественных чисел в диапазоне от – 8, 7 до – 5,7 и вывести её в порядке убывания
Сгенерировать последовательность В из n (n запрашивается) вещественных чисел в диапазоне от – 8, 7 до – 5,7 и вывести её в порядке убывания...

5
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
07.06.2015, 11:50
По заданию использование LINQ запрещено? Если нет, то:
C#
1
2
3
4
public static IEnumerable<int> Numbers(string s)
{
    return Regex.Matches(s, @"\d+").Cast<Match>().Select(m => int.Parse(m.Value)).Distinct().OrderByDescending(x => x);
}
0
0 / 0 / 0
Регистрация: 18.12.2014
Сообщений: 6
07.06.2015, 12:07  [ТС]
К сожалению, запрещено. Может можно что-то сделать в выводе чисел? Как-то исключить повторы именно там
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
07.06.2015, 15:56
Тогда, возможно, это подойдет:
C#
1
2
3
4
5
6
7
public static IEnumerable<int> Numbers(string s)
{
    SortedSet<int> numbers = new SortedSet<int>();
    foreach (string item in s.Split(' '))
        numbers.Add(int.Parse(item));
    return numbers.Reverse();
}
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.06.2015, 16:59
Лучший ответ Сообщение было отмечено Mitsakult как решение

Решение

Kruds, Reverse это как бы тоже LINQ. Да и нужно тут самому писать скорее всего в любом случае.

Добавлено через 7 минут
Mitsakult, есть несколько вариантов, в зависимости от того, что можно использовать
#1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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;
    }
}
#2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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;
        }
 
        Array.Sort(result);
 
        for (int i = result.Length - 1; i >= 0; i--)
        {
            yield return result[i];
        }
    }
}
#3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 SortedSet<int>(Comparer<int>.Create((a, b) => b.CompareTo(a)));
        foreach (string number in numbers)        
            set.Add(int.Parse(number));        
        return set;
    }
}
1
0 / 0 / 0
Регистрация: 18.12.2014
Сообщений: 6
07.06.2015, 19:51  [ТС]
Большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2015, 19:51
Помогаю со студенческими работами здесь

Сформировать файл из действительных чисел. Найти расположенные в порядке убывания их модулей
В этой программе представлен алгоритм решения: Сформировать файл из действительных чисел. Найти наибольшее из значений модулей...

Переставьте строки в порядке убывания количества содержащихся в них положительных элементов
3.Во введенной матрице действительных чисел,состоящей из m строк и n столбцов,переставьте строки в порядке убывания количества содержащихся...

В матрице В[1..N,1..M] переставить строки в порядке убывания количества отрицательных чисел в строке
В матрице В переставить строки в порядке убывания количества отрицательных чисел в строке решить без процедур и функций

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

В матрице переставить строки в порядке убывания количества отрицательных чисел в строке
В матрице B переставить строки в порядке убывания количества отрицательных чисел в строке. Решить задачу с помощью процедуры. Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru