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

Максимальный элемент матрицы с использованием потоков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Последовательная запись массива в .gz архив http://www.cyberforum.ru/cpp-beginners/thread159739.html
Имеется спосок товаров ввиде массива. Элементы массива перебираю в цикле for и далее необходимо сразу записывать в gzip архив. Нашел вродебы подходящую функцию в библиотеке zlib, к сожалению в инете и здесь на форуме примеров вообще нет, есть только простое описание: int gzwrite (gzFile file, const voidp buf, unsigned len); Записывает переданное количество байт несжатых данных в компресованный...
C++ Где найти дистрибутив Visual Studio Желательно 2010 но если 2008 тоже неплохо гугл не помог http://www.cyberforum.ru/cpp-beginners/thread159728.html
C++ В чем разница между exit(код возврата) и ExitProcess (код возврата)?
Я так себе представляю, имеется два варианта выхода из приложения, с передачей кода возврата: 1. Функцией ExitProcess(код возврата); 2. Функцией exit(код возврата); Чем отличаются данные функции?
C++ Перевод строки
Уважаемые программисты,подкиньте рабочий код что бы вместо точки с запятой можно было передать перевод строки,после чего выполнялась бы последовательность команд , вот часть кода (часть,сказали надо на ассемблере писать)помогите с кодом while (*sstr++) { if(*sstr)==";" { *sstr = "\r" }
C++ Найти строку http://www.cyberforum.ru/cpp-beginners/thread159683.html
Помогите с кодом,мне нужна строка которая отправляет на сервер (чат,голосование и т.п.)сам код от исходника quake3,подскажите где она здесь Cmd_CallVote_f ================== */ void Cmd_CallVote_f( gentity_t *ent ) { int i; char arg1; char arg2; if ( !g_allowVote.integer ) {
C++ Среднее арифметическое дробей Еще раз всем привет! Извините, что я так часто, просто не у кого проверить, правильно ли я что-либо делаю :- void average_dr(fraction fr, int k) { for(int i=0; i<k-1;i++) { chis = fr.chis*fr.znam + fr.znam*fr.chis; znam = fr.znam*fr.znam; } cout << "Summ = " << chis << "/" << znam << endl; подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
9455 / 5468 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
17.08.2010, 01:43     Максимальный элемент матрицы с использованием потоков
скорее всего говнокод, но работает
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
    
#define ARRAY_SIZE 10
 
int max_value(int * arr, size_t cnt){
    int max = *arr++;
    while ( --cnt ){
        if ( *arr > max )
            max = *arr;
        ++arr;
    }
    return max;
}
 
typedef struct {
    int * pData;
    int * pResult;
    size_t nDataSize;
} param_t;
 
DWORD WINAPI get_max_value(LPVOID lpParam){
    param_t * p = (param_t*)lpParam;
    *(p->pResult) = max_value(p->pData, p->nDataSize);
    return 0;
}
 
int main(void){
    int matrix[ARRAY_SIZE][ARRAY_SIZE], array[ARRAY_SIZE], i, j;
    DWORD dwThreadIdArray[ARRAY_SIZE];
    HANDLE hThreadArray[ARRAY_SIZE];
    param_t params[ARRAY_SIZE];
    
    srand(time(NULL));
    
    for ( i = 0; i < ARRAY_SIZE; ++i ){
        for ( j = 0; j < ARRAY_SIZE; ++j )
            matrix[i][j] = rand() % 100;
        params[i].pData = &matrix[i][0];
        params[i].pResult = &array[i];
        params[i].nDataSize = ARRAY_SIZE;
    }
    
    for ( i = 0; i < ARRAY_SIZE; ++i ){
        hThreadArray[i] = CreateThread(NULL, 0, get_max_value, (LPVOID)&params[i], 0, &dwThreadIdArray[i]);
        if ( hThreadArray[i] == NULL ){
            fprintf(stderr, "Can't create thread!\n");
            ExitProcess(1);
        }
    }
    WaitForMultipleObjects(ARRAY_SIZE, hThreadArray, TRUE, INFINITE);
    for ( i = 0; i < ARRAY_SIZE; ++i )
        CloseHandle(hThreadArray[i]);
    
    printf("Matrix:\n");
    for ( i = 0; i < ARRAY_SIZE; ++i ){
        for ( j = 0; j < ARRAY_SIZE; ++j )
            printf("%02d ", matrix[i][j]);
        printf(" MAX: %02d\n", array[i]);
    }
    printf("The biggest value is %d\n", max_value(array, ARRAY_SIZE));
    
    ExitProcess(0);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru