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

Применение сортировки

27.03.2020, 14:40. Показов 6251. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Спортсмену дается две попытки. В зачет идет наибольший результат. Из списка попыток получите список результатов от лучших к худшим. Вход: натуральное число спортсменов (N < 1000) и далее N пар чисел – по две попытки на каждого спортсмена. Выход: N чисел– результаты спортсменов по убыванию

Вход 3 4 4 7 3 2 9

Выход 9 7 4

Комментарий Зачетный результат 1-го спортсмена 4, 2-го - 7, 3-го - 9
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2020, 14:40
Ответы с готовыми решениями:

Ребят как переделать метод сортировки пузырьком на метод сортировки простым выбором
public void SortPuzirek(int mass, int Size) // метод, выполняющий сортировку методом пузырька { int metka, obmen =...

Сортировки и их применение
Здравствуйте, вот код. строки 140-143 должны по возрастанию , убыванию и рандом не выполняют свои функции не знаю почему помогите...

Разработайте рекурсивную процедуру сортировки последовательности методом быстрой сортировки Хоара
Помогите!!!! Дана последовательность чисел a1, a2, ... , an. Разработайте рекурсивную процедуру сортировки последовательности методом...

17
239 / 150 / 41
Регистрация: 26.01.2019
Сообщений: 545
27.03.2020, 16:09
Пишите код, а в чем будут сложности - обращайтесь сюда
0
628 / 392 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
27.03.2020, 16:21
C#
1
2
3
4
5
            int[] input = { 3, 4, 4, 7, 3, 2, 9 };
            var res = input.OrderByDescending(x => x).Take(3).ToArray();
            Console.WriteLine(res[0]);
            Console.WriteLine(res[1]);
            Console.WriteLine(res[2]);
0
34 / 25 / 11
Регистрация: 19.03.2020
Сообщений: 353
27.03.2020, 16:27
Цитата Сообщение от Panda05646 Посмотреть сообщение
Вход 3 4 4 7 3 2 9
У вас 7 чисел, а 7 на 2 не делится.

А вообще сортировки в FAC есть, на любой выбор.

Добавлено через 2 минуты
Цитата Сообщение от Pilarentes Посмотреть сообщение
C#
1
2
3
4
5
int[] input = { 3, 4, 4, 7, 3, 2, 9 };
            var res = input.OrderByDescending(x => x).Take(3).ToArray();
            Console.WriteLine(res[0]);
            Console.WriteLine(res[1]);
            Console.WriteLine(res[2]);
У него препод такое не примет)
0
628 / 392 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
27.03.2020, 16:29
Цитата Сообщение от Korsner Посмотреть сообщение
У вас 7 чисел, а 7 на 2 не делится.
Неверно понял задание сначала. Думал 1,2,3 место вывести надо

тогда так

C#
1
2
3
4
5
6
            int[] input = { 3, 4, 4, 7, 3, 2, 9 };
            var res = input.OrderByDescending(x => x).Take(input.Length/2).ToArray();
            foreach (var item in res)
            {
                Console.WriteLine(item);
            }
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
27.03.2020, 16:51
Лучший ответ Сообщение было отмечено Panda05646 как решение

Решение

Если без Linq:
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
Random rand = new Random();
int n = rand.Next(2, 1001);
Console.Write(n);
int[,] mass = new int[n, 2];
for (int i = 0; i < n; i++)
{
    mass[i, 0] = rand.Next(101);
    mass[i, 1] = rand.Next(101);
    Console.Write(mass[i, 0] + " " + mass[i, 1] + " ");
}
Console.WriteLine();
int[] arr = new int[n];
for (int i = 0; i < n; i++)
{
    arr[i] = mass[i, 0];
    if (mass[i, 0] < mass[i, 1])
        arr[i] = mass[i, 1];
    Console.Write(" " + arr[i]);
}
Console.WriteLine();
Array.Sort(arr);
arr = arr.Reverse().ToArray();
Console.Write(String.Join(" ", arr));
Console.Read();
Добавлено через 2 минуты
Цитата Сообщение от Korsner Посмотреть сообщение
У вас 7 чисел, а 7 на 2 не делится.
Первое число - количество спортсменов.
1
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
27.03.2020, 21:57  [ТС]
Извините не могу понять что тут выводится
Миниатюры
Применение сортировки  
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
27.03.2020, 23:17
Цитата Сообщение от Panda05646 Посмотреть сообщение
Извините не могу понять что тут выводится
Первая строка - это 27 - число спортсменов и 54 их результата (там пробела нет между первыми двумя числами)
Вторая - это 27 лучших результатов в неотсортированном порядке.
Третья - это 27 лучших результатов в отсортированном порядке.
Исправьте в моем коде 3-ю строку:
C#
1
Console.Write(n + " ");
Добавлено через 1 минуту
Всё-таки число 1001 я бы уменьшил
1
34 / 25 / 11
Регистрация: 19.03.2020
Сообщений: 353
28.03.2020, 05:49
Надо бы linq подучить, а то код тяжело читаю с этими запросами...
0
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,214
28.03.2020, 09:00
Цитата Сообщение от Korsner Посмотреть сообщение
Надо бы linq подучить, а то код тяжело читаю с этими запросами...
линк вещь замечательная, но логику не развивает. На банальный условных операторах, циклах и методах можно писать мини-игры в консоли. Если в циклах путаетесь - то что будет при коде, хотя бы в 100 строк? а в 1000 строк? Линк не спасет вас в таких случаях
1
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
28.03.2020, 16:32  [ТС]
кто может помочь чтобы в конце вот так выводилось Зачетный результат 1-го спортсмена 4, 2-го - 7, 3-го - 9 ?
а то у меня
выводит так

Зачетный результат 1-го спортсмена все числа отсортированого порядка

Добавлено через 1 минуту
Всё спасибо не нужно я сделал, надо было в цикле указать arr[i],а я просто arr ставил
0
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
28.03.2020, 16:41  [ТС]
Вот так теперь выглядит
Миниатюры
Применение сортировки  
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
28.03.2020, 17:39
Лучший ответ Сообщение было отмечено Panda05646 как решение

Решение

Panda05646, но, после сортировки, спортсмены меняются местами. Например, на картинке после первого спортсмена, уже идет результат четвертого из не сортированного списка, а не второго. А вы теперь называете его вторым. Или это неважно?
1
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
28.03.2020, 18:47  [ТС]
чего-то не подумал об этом

Добавлено через 34 секунды
не подскажите как правильно сделать?
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
28.03.2020, 20:51
Лучший ответ Сообщение было отмечено Panda05646 как решение

Решение

Вроде бы работает:
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
Random rand = new Random();
int n = rand.Next(2, 1001);
int[,] mass = new int[n, 2];
for (int i = 0; i < n; i++)
{
    mass[i, 0] = rand.Next(101);
    mass[i, 1] = rand.Next(101);
    Console.WriteLine("Результаты " + (i + 1) + "-го спортсмена: " + mass[i, 0] + " " + mass[i, 1]);
}
Console.WriteLine();
int[,] arr = new int[n, 2];
for (int i = 0; i < n; i++)
{
    arr[i, 0] =  i;
    if (mass[i, 0] > mass[i, 1])
    {
        Console.WriteLine("Лучший результат {0}-го спортсмена = {1}", i + 1, mass[i, 0]);
        arr[i, 1] = mass[i, 0];
    }
    else
    {
        Console.WriteLine("Лучший результат {0}-го спортсмена = {1}", i + 1, mass[i, 1]);
        arr[i, 1] = mass[i, 1];
    }
}
Console.WriteLine();
int[,] arr1 = new int[n, 2];
for (int i = 0; i < n; i++)
{
    int maxx = arr[0, 1];
    int index = 0;
    for (int i1 = 1; i1 < n; i1++)
    {
        if(arr[i1, 1] > maxx)
        {
            maxx = arr[i1, 1];
            index = i1;
        }
    }
    arr1[i, 0] = index;
    arr1[i, 1] = maxx;
    arr[index, 1] = -1;
}
for (int i = 0; i < n; i++)
    Console.WriteLine("Зачетный результат {0}-го спортсмена = {1}", arr1[i, 0] + 1, arr1[i, 1]);
Console.Read();
Только когда будете проверять убавьте всё-таки 1001 до 20 хотя бы
1
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
29.03.2020, 13:16  [ТС]
можете обьяснить мне эту часть кода,потому что я циклы ещё плоха знаю,хочу разобраться
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int[,] arr1 = new int[n, 2];
for (int i = 0; i < n; i++)
{
    int maxx = arr[0, 1];
    int index = 0;
    for (int i1 = 1; i1 < n; i1++)
    {
        if(arr[i1, 1] > maxx)
        {
            maxx = arr[i1, 1];
            index = i1;
        }
    }
    arr1[i, 0] = index;
    arr1[i, 1] = maxx;
    arr[index, 1] = -1;
}
for (int i = 0; i < n; i++)
    Console.WriteLine("Зачетный результат {0}-го спортсмена = {1}", arr1[i, 0] + 1, arr1[i, 1]);
Console.Read();
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
29.03.2020, 14:21
Лучший ответ Сообщение было отмечено Panda05646 как решение

Решение

На всякий случай: обратите внимание, что массив с лучшими результатами стал двумерным. В первом столбце - номера спортсменов, во втором - результаты.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int[,] arr1 = new int[n, 2];//создаем новый массив
for (int i = 0; i < n; i++)//запускаем цикл перебирающий каждый элемент второго столбца массива с лучшими результатами
{
    int maxx = arr[0, 1];//задаем первый элемент как максимальный
    int index = 0;//задаем переменную, чтобы сохранить индекс максимального элемента
    for (int i1 = 1; i1 < n; i1++)//и перебираем, начиная со второго элемента массива
    {
        if(arr[i1, 1] > maxx)//если элемент больше 
        {
            maxx = arr[i1, 1];//- он становится максимальным
            index = i1;//здесь его индекс
        }
    }
    //заносим данные в новый массив
    arr1[i, 0] = index;//в первый столбец - номер спортсмена
    arr1[i, 1] = maxx;//во второй - его результат
    arr[index, 1] = -1; //а результат из массива с лучшими результатами "убираем" (делаем отрицательным), чтобы не мешался больше
    //поэтому в следующей проходке мы уже будем искать максимальный элемент из оставшихся
    //таким образом в новом массиве мы получаем результаты по убыванию с сохранением номеров спортсменов
}
for (int i = 0; i < n; i++)
    Console.WriteLine("Зачетный результат {0}-го спортсмена = {1}", arr1[i, 0] + 1, arr1[i, 1]);//ну, а здесь просто печать
Console.Read();
1
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
29.03.2020, 14:31  [ТС]
Большое вам спасибо,ещё хочу отладчиком пройти чтобы лучше понимать циклы так друг посоветовал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2020, 14:31
Помогаю со студенческими работами здесь

Составить блок – схемы для шейкер- сортировки и сортировки Шелла
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить блок – схемы для шейкер-...

Написать программу сортировки массива с помощью алгоритма внешней сортировки
1. Дан текстовый файл, в котором записана последовательность целых чисел. Написать программу сортировки массива с помощью алгоритма внешней...

Пример быстрой сортировки массива строк и сортировки методом выбора
Добрый вечер. Скиньте пожалуйста пример быстрой сортировки массива строк и сортировки массива строк методом выбора. Очень срочно надо,...

Хранимая процедура сортировки числового поля для сортировки по алфавиту
В таблице есть поле Name , в котором, собственно, и хранятся типы товаров, и есть поле Ordinal c уникальными значениями типа int Name ...

Разработать программу сортировки одномерного массива методом выборочной сортировки
Разработать программу сортировки одномерного массива методом выборочной сортировки. Помогите пжлста=(


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru