Форум программистов, компьютерный форум, киберфорум
Наши страницы

Сортировка слиянием с потоками - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Для заданной матрицы определить вектор http://www.cyberforum.ru/cpp-beginners/thread735806.html
Для заданной матрицы определить вектор, k-й элемент которого равен 1, если элементы k-го рядка матрицы размещены по убыванию , и равен 0, если k-й рядок матрицы симметричный.
C++ Проверяется только первая строка Программа должна считывать строки из файла и проверять, является ли каждая из них палиндромом. Но у меня программа почему-то проверяет только первую строку, в чем причина? #include <string.h>... http://www.cyberforum.ru/cpp-beginners/thread735805.html
Сортировка слиянием без потоков C++
#include <stdio.h> #include <values.h> #include <conio.h> #include <stdlib.h> int *a,m,e; int sort(int l, int r){ if (r-l<=1){ if (a<a) { e=a; a=a; a=e; }
C++ решение уравнений методом ньютона
Приветик)) помогите плиз написать программу на с++ решение уравнений методом ньютона((((((, очень прошу
C++ Синхронизация потоков http://www.cyberforum.ru/cpp-beginners/thread735796.html
#include <process.h> #include <stdio.h> #include <Windows.h> #include <iostream.h> #include <conio.h> using namespace std; struct ThreadArgs { int x; explicit ThreadArgs(int x_ =...
C++ дано числа х,у. найти принадлежит ли точка области всем доброго вечера прошу помощи... нужно написать программы на лабораторные... скрины заданий предлагаются ниже 3)дано числа х,у. найти принадлежит ли точка (х,у) области изображенной на рисунке --... подробнее

Показать сообщение отдельно
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203

Сортировка слиянием с потоками - C++

18.12.2012, 19:56. Просмотров 439. Ответов 0
Метки (Все метки)

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
#include <process.h>
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <values.h>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
struct ThreadArgs {
    int l,r,k;
    explicit ThreadArgs(int l_ = 0, int r_ = 0, int k_ = 0): l(l_), r(r_), k(k_) {}
};
 
int *a,m[100],e;
 
int sort(int l, int r){
    if (r-l<=1){
        if (a[r]<a[l]) { e=a[r]; a[r]=a[l]; a[l]=e; }
        return 0;
    }
 
    int i,t1=l, t2=(r+l)/2+1;
 
    sort(t1, t2-1);
    sort(t2 ,r);
 
    int *b = new int [r-l+2];
    for (i=0; i<=r-l; i++){
        if (a[t1]<a[t2]){
            (b[i])=a[t1];
            t1++;
            if (t1==(r+l)/2+1) for (i=i+1; i<=r-l; i++, t2++) (b[i])=a[t2];
        } else {
            (b[i])=a[t2];
            t2++;
            if (t2==r+1) for (i=i+1; i<=r-l; i++, t1++) (b[i])=a[t1];
        }
    }
    for (i=l; i<=r; i++) a[i]=b[i-l];
    delete []b;
    return 0;
}
 
void start(void* arg){
     const ThreadArgs *ta = static_cast<const ThreadArgs*>(arg);
     sort(ta->l, ta->r);
}
 
int main(){
    HANDLE hand[2];
    system("cls");
    srand( time(NULL) );
    clock_t time;
    time=clock();
    int i;
    a=m;
    for (i=0; i<100; i++){
        a[i]=rand();
    }
 
    ThreadArgs p1(0,49,1);  
    hand[0]=(HANDLE)_beginthread(start, 0, &p1);
    
    ThreadArgs p2(50,99,2);     
    hand[1]=(HANDLE)_beginthread(start, 0, &p2);
 
    WaitForMultipleObjects(2, hand, true, INFINITE);
 
//    sort1(0,49);
//    sort2(50,99);
 
    int *b = new int [101], t1=0, t2=50; 
    for (i=0; i<=99; i++){
        if (a[t1]<a[t2]){
            (b[i])=a[t1];
            t1++;
            if (t1==50) for (i=i+1; i<=99; i++, t2++) (b[i])=a[t2];
        } else {
            (b[i])=a[t2];
            t2++;
            if (t2==100) for (i=i+1; i<=99; i++, t1++) (b[i])=a[t1];
        }
    }
    
    for (i=0; i<=99; i++) printf("%d ",b[i]);
 
    delete []b;
 
 
    printf("\n");
    time=clock()-time;
    printf("%f", (double)time/CLOCKS_PER_SEC);
 
    system("pause");
    return 0;
}
Опять же нужны комменты.
P.S. заранее спасибо, кто поможет.

Добавлено через 22 часа 53 минуты
Помогите пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru