Форум программистов, компьютерный форум 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; подробнее

Показать сообщение отдельно
павел11
Сообщений: n/a

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

16.08.2010, 23:54. Просмотров 685. Ответов 2
Метки (Все метки)

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
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int *Mas;
struct ParamData{
        int id;
        int Size;
        int **mas;
    };
 
void find_func(LPVOID Param)
{
 
    ParamData *tmp = (ParamData *) Param;
    int Max = tmp->mas[tmp->id][0];
    for(int i = 1; i < tmp->Size; i++)
    {
        if(tmp->mas[tmp->id][i] > Max)
            Max = tmp->mas[tmp->id][i];
    }
    Mas[tmp->id] = Max;
    cout << Max;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    cout << "Enter the array size:";
    cin >> n;
    cout << n;
    ParamData *Param = new ParamData;
    Param->Size = n;
    Param->mas = new int*[n];
    for(int i = 0; i < n; i++)
    {
        Param->mas[i] = new int[n];
        for(int j = 0; j < n; j++)
        {
            Param->mas[i][j] = (rand()%100);
            cout << Param->mas[i][j] << "  ";
        }
        cout << endl;
    }
    Mas = new int[n];
 
    HANDLE *Threads = new HANDLE[n];
    for(int i = 0; i < n; i++)
    {
        Param->id = i;
        Threads[i] = CreateThread(NULL,
                                                                           0,
                           (LPTHREAD_START_ROUTINE)find_func,
                           (LPVOID *)Param,
                           0,
                           0);
    }
    DWORD wait = WaitForMultipleObjects(            
                    n,  
                    Threads,
                    false, 
                    INFINITE
                    );
    int tmp = Mas[0];
    for (int j = 1; j<n; j++)
                {
        cout << tmp;
        if(Mas[j]>tmp) 
            tmp = Mas[j];
                } 
    cout << endl << tmp;
    _getch();
    return 0;
}
Итак, вот код, который я написал. Приложение должно создавать потоки для поиска по строкам матрицы наибольшего их элемента, а из полученных наибольших значений выбрать также максимальное. Проблема в том, что находится только наибольшее значение последней строки, а значения для предыдущих даже и не заполняются. Есть подозрения, что я каким-то образом неправильно передаю параметры в функцию потока. У кого есть идеи? Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru