Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Для заданной матрицы определить вектор http://www.cyberforum.ru/cpp-beginners/thread735806.html
Для заданной матрицы определить вектор, k-й элемент которого равен 1, если элементы k-го рядка матрицы размещены по убыванию , и равен 0, если k-й рядок матрицы симметричный.
C++ Проверяется только первая строка Программа должна считывать строки из файла и проверять, является ли каждая из них палиндромом. Но у меня программа почему-то проверяет только первую строку, в чем причина? #include <string.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <fstream> using namespace std; int main() { 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_ = 0): x(x_) {}
C++ дано числа х,у. найти принадлежит ли точка области всем доброго вечера прошу помощи... нужно написать программы на лабораторные... скрины заданий предлагаются ниже 3)дано числа х,у. найти принадлежит ли точка (х,у) области изображенной на рисунке -- http://cs6288.userapi.com/u35604519/docs/07869c21cdc0/Snimok3.jpg заранее спасибо! просьба в ответе указывать номер задачи!! Одна тема - один вопрос. Задания в виде ссылок на картинки запрещены. подробнее

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

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

18.12.2012, 19:56. Просмотров 417. Ответов 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 минуты
Помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru