Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 31

Создать Windows приложение для сортировки массива в возрастающем и убывающем порядке, методом, указанным в варианте

22.02.2014, 22:55. Показов 5257. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста с делегатами. Вот задание: Создать Windows приложение для сортировки массива в возрастающем и убывающем порядке, методом, указанным в варианте. Создать делегат Comparator, который определяет порядок сортировки и один метод сортировки.
Форма должна содержать кнопку генерации массива, заданного размера, две кнопки для сортировки (убыв, возраст)., и два окна вывода отсортированного и исходного массивов.

Массив я сгенерировал, отсортировал в одном и другом порядке, а вот как делегаты применить не понимаю.


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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace _4
{
    public partial class Form1 : Form
    {       int n = 0;
            int[] mas = new int[10]; 
 
        public Form1()
        {
            
            InitializeComponent();
        }
 
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            {
                try
                {
 
                    textBox1.Text = null;
                    n = Convert.ToInt16(textBox3.Text);
                    Random r = new Random();
                    for (int i = 0; i < n; i++)
                    {
                        mas[i] = r.Next(1, 10);
 
                    }
                    for (int i = 0; i < n; i++)
                    {
                        textBox1.Text += Convert.ToString(mas[i]) + " ";
                    }
                }
                catch
                {
                    MessageBox.Show("Разрешенное количество элементов массива от 1 до 10!");
                }
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = null;
            int buf = 0;
            for (int j = 0; j < n - 1; j++)
            {
                for (int i = 0; i < n - 1; i++)
                {
                    if (mas[i] < mas[i + 1])
                    {
                        buf = mas[i];
                        mas[i] = mas[i + 1];
                        mas[i + 1] = buf;
                    }
                }
            }
 
            for (int i = 0; i < n; i++)
            {
                textBox2.Text += Convert.ToString(mas[i]) + " ";
            }
 
        }
 
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            textBox2.Text = null;
            int buf = 0;
            for (int j = 0; j < n - 1; j++)
            {
                for (int i = 0; i < n - 1; i++)
                {
                    if (mas[i] > mas[i + 1])
                    {
                        buf = mas[i];
                        mas[i] = mas[i + 1];
                        mas[i + 1] = buf;
                    }
                }
            }
 
            for (int i = 0; i < n; i++)
            {
               textBox2.Text += Convert.ToString(mas[i]) + " ";
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void textBox3_TextChanged(object sender, EventArgs e)
        {
 
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2014, 22:55
Ответы с готовыми решениями:

Упорядочить элементы массива, стоящие на нечётных местах в возрастающем порядке, а на чётных в убывающем
упорядочить элементы массива A(1..N),стоящие на нечётных местах в возрастающем порядке,а на чётных в убывающем. Описать через процедуры...

Изменить код: Упорядочить элементы массива на нечетных местах в возрастающем порядке, на чётных - в убывающем
помогите, пожалуйста. Составте алгоритм упорядочивающий элементы массива стоящие на нечетных местах в возрастающем порядке, а на...

Слова в возрастающем порядке, числа в убывающем
Всем привет, помогите с задачкой: Пользователь вводит с клавиатуры список слов и чисел. Программа должна вывести слова в...

5
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,560
23.02.2014, 03:42
для консоли, но думаю понятно будет
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
    class Program
    {
        delegate bool MyDelegate(int a, int b);
        static void Main(string[] args)
        {
            int[] a = new int[10];
            Random r = new Random();
            for (int i = 0; i < 10; i++) Console.Write("{0,4}", a[i] = r.Next(-10, 11));
            Console.WriteLine();
            Console.Write("Сортируем по возрастанию(Enter)?");
            MyDelegate Comparator;
            if (Console.ReadKey(true).Key == ConsoleKey.Enter) Comparator = MinMax;
            else Comparator = MaxMin;
            Console.WriteLine();
            for (int i = a.Length - 1; i > 0; i--)
                for (int j = 0; j < i; j++)
                    if (Comparator(a[j], a[i]))
                    {
                        int b = a[i];
                        a[i] = a[j];
                        a[j] = b;
                    }
            for (int i = 0; i < 10; i++) Console.Write("{0,4}", a[i]);
            Console.ReadKey();
        }
        static bool MinMax(int a, int b) { return a > b; }
        static bool MaxMin(int a, int b) { return a < b; }
    }
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
23.02.2014, 10:47
Цитата Сообщение от MansMI Посмотреть сообщение
C#
1
delegate bool MyDelegate(int a, int b);
Comparison
1
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 31
23.02.2014, 21:37  [ТС]
так это понятно, а как этот делегат использовать??

мне нужно именно создать форму и в форму это всё выводить


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




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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace _4
{
    public partial class Form1 : Form
    {       int n = 0;
            int[] mas = new int[10]; 
 
        public Form1()
        {
            
            InitializeComponent();
        }
 
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            {
                try
                {
 
                    textBox1.Text = null;
                    n = Convert.ToInt16(textBox3.Text);
                    Random r = new Random();
                    for (int i = 0; i < n; i++)
                    {
                        mas[i] = r.Next(1, 10);
 
                    }
                    for (int i = 0; i < n; i++)
                    {
                        textBox1.Text += Convert.ToString(mas[i]) + " ";
                    }
                }
                catch
                {
                    MessageBox.Show("Разрешенное количество элементов массива от 1 до 10!");
                }
            }
        }
 
 
        private void Compare(bool dir)
        {
            int buf = 0;
            for (int j = 0; j < n - 1; j++)
            {
                for (int i = 0; i < n - 1; i++)
                {
                    if ((dir && (mas[i] > mas[i + 1])) || (!dir && (mas[i] < mas[i + 1])))
                    {
                        buf = mas[i];
                        mas[i] = mas[i + 1];
                        mas[i + 1] = buf;
                    }
                } for (int i = 0; i < n; i++)
                {
                    textBox2.Text += Convert.ToString(mas[i]) + " ";
                }
            }
        }
        
 
 
        void Sort(Action<bool> comparer, bool dir)
          {
          comparer(dir); 
          }
 
 
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
           
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void textBox3_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Sort(Compare, true);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Sort(Compare, false);
        }
 
 
        
    }
 
}

Там происходит повтор массива

Например надо отсортировать по возрастанию такие числа: 24135

Выводит такое 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,560
23.02.2014, 21:47
пора уже научиться пользоваться тэгами форматирования текста(потому и не стал читать) и Ctrl-F - слово делегат где?
1
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 31
23.02.2014, 22:33  [ТС]
Добавлено через 1 минуту
MansMI, ну извините за такой текст. Делегат у меня action
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2014, 22:33
Помогаю со студенческими работами здесь

процедура сортировки массива в возрастающем порядке.
помогите!!!!!!!! 2. Напишите процедуру, сортирующую массив в возрастающем порядке. В основной программе датчиком случайных чисел задайте...

Создать программу сортировки массива в порядке убывания методом выбора
* Создать на С++ Builder программу сортировки массива в порядке убывания методом выбора. Просмотр элементов массива должен осуществляться в...

Сортировка массива в убывающем порядке по количеству появлений методом подсчета
Добрый день!Мне нужно отсортировать одномерный массив в убывающем порядке по количеству появлений методом подсчета! Пример:3 1 1 3 1 7 9...

Ввести с клавиатуры список слов и чисел; слова вывести в возрастающем порядке, числа - в убывающем
Помогите пожалуйста ни как не могу построить алгоритм в голове! Хочу разобраться но заступорился... Не могу осмыслить как сделать что бы...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru