Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
1
.NET 4.x

Программа должна отображать ход вычислений, допускать приостановку и прерывания вычислений

14.09.2012, 19:23. Показов 2529. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать программу для сравнения эффективности двух заданных алгоритмов сортировки путем их одновременного запуска на случайном массиве из 50000 целых чисел. Обеспечить вывод отсортированной последовательности в файл. Программа должна отображать ход вычислений, допускать приостановку и прерывания вычислений
Сами сортировки я написал. Но что делать дальше я не понял. если просто запустить прогу то на форме не одна кнопка не работает. Но и форма не зависает.
Создал два потока и массив, передаю его в поток он сортирует но я не понял как выводить, и правильно ли понял что делать...
C#
1
2
3
4
5
6
th_1 =new Thread(delegate() {Mass1 = f(mass) ; });
th_2 =new Thread(delegate() {Mass2 = sorting(mass,mass.Length) ; });
th_1.Start();
th_2.Start();
th_1.Join();
th_2.Join();
Прирамидальная
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
class PyramidSorting
        {
            //добавление элемента к пирамиде
            static int add2pyramid(double[] arr, int i, int N)
            {
                int imax;
                double buf;
                if ((2 * i + 2) < N)
                {
                    if (arr[2 * i + 1] < arr[2 * i + 2]) imax = 2 * i + 2;
                    else imax = 2 * i + 1;
                }
                else imax = 2 * i + 1;
                if (imax >= N) return i;
                if (arr[i] < arr[imax])
                {
                    buf = arr[i];
                    arr[i] = arr[imax];
                    arr[imax] = buf;
                    if (imax < N / 2) i = imax;
                }
                return i;
            }
            public static void sorting(double[] arr, int len)
            {
                //шаг 1: постройка пирамиды
                for (int i = len / 2 - 1; i >= 0; --i)
                {
                    long prev_i = i;
                    i = add2pyramid(arr, i, len);
                    if (prev_i != i) ++i;
                }
 
                //шаг 2: сортировка
                double buf;
                for (int k = len - 1; k > 0; --k)
                {
                    buf = arr[0];
                    arr[0] = arr[k];
                    arr[k] = buf;
                    int i = 0, prev_i = -1;
                    while (i != prev_i)
                    {
                        prev_i = i;
                        i = add2pyramid(arr, i, k);
                    }
                }
            }
        }
Вставками
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void f(Int32[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {
                int temp = a[i]; //запомним i-ый элемент
                int j = i - 1;//с i-1 элемента 
                while (j >= 0 && a[j] > temp)
                // пока не достигли начала массива 
                // или не нашли элемент больше i-1-го
                {
                    a[j + 1] = a[j];
                    j--;
                }
                a[j + 1] = temp;
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2012, 19:23
Ответы с готовыми решениями:

Вычислить предел. Каков ход вычислений?
\lim\frac{9-{x}^{2}} {{(3x-3)}^{\frac{1} {2} при x стремящемся к 3

Программа вычислений зацикливается
Здравствуйте, написала программу(работает), но только для положительного шага, т.е (Xnach=1,...

Программа вычислений значения функции
Составить программу вычисления значений функций f(x)= x - sin (x) на отрезке с шагом h=(b-a)/m....

Программа не выводит результат вычислений
Доброе время суток ребят. Скажите в чем моя ошибка, не выводит результат import java.util.Scanner;...

1
Заблокирован
15.09.2012, 00:37 2
Не вижу у вас код для формы, которая не зависает.
Попробуйте для начала для консоли(она потоконезависима) поставить два счетчика и для каждого из двух алгоритмов в самом внутренем цикле инкрементировать счетчики и выводить результаты. При окончании итераций сообщение типа: "№* закончил".

Создайте объект типа object, который будете блокировать через lock для приостановки потоков, и на клики по кнопкам тоже это навесте(блокировка-разблокировка). Еще для этих целей Mutex подошел бы.

Так неохота в пятницу вечером программировать, что я даже код не привел хоть какой-то
1
15.09.2012, 00:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2012, 00:37
Помогаю со студенческими работами здесь

Программа выдает нелогичный результат вычислений
program sum_obch1; var s1, s2: real; n:longint; begin s1:=0; s2:=0; for n:=1 to ...

Программа выдает некорректный результат вычислений
Товарищи программисты, срочно нужна Ваша помощь. Это переоформленный кусочек большой программы, не...

Организация вычислений во время ввода данных программа С++
Помогите написать программу в С++ Дано натуральное число, в котором все цифры различны....

Аrduino. Программа выдачи результата вычислений на COM-порт
Нужно составить программу и вывести в COM порт.Я недавно начал заниматься ардуино и пока что...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru