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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подсчитать количество символов а над третьей строкой матрицы и... http://www.cyberforum.ru/cpp-beginners/thread588162.html
Дана матрица 5x7, элементами которой являются значения символьного ти¬па. Составить одномерный массив, содержащий количество символов m в каждом из ее столбцов. Подсчитать количество символов а над...
C++ Матрица В прямоугольной матрице определить элемент, который по модулю наименее отличается от среднего арифметического всех элементов матрицы. Помогите решить!!!! http://www.cyberforum.ru/cpp-beginners/thread588161.html
C++ Функции с переменным количеством параметров. Функция, как тип данных
Добрый день, уважаемые программисты! Прошу немного помощи задание: Разработать функцию с переменным количеством параметров. Для извлечения параметров из списка использовать технологию...
Динамическая структура данных очередь C++
Помогите допписать программу на с++ пожалуйста,а то я не могу разобраться немного,как сделать Мне необходимо написать динамическую структуру очередь с исключением по приоритету Вот текст уже...
C++ сделать уравнение методом Ньютона http://www.cyberforum.ru/cpp-beginners/thread588144.html
дано уравнение 3x – 4 ln x – 5 = 0 сделать методом Ньютона Приближенное значение корня 3,2300
C++ Запись в файл /* 6. В исходном файле находится текст программы на языке С++. Создать файл, в который переписать содержимое исходного файла без однострочных комментариев. */ #include <locale.h> #include... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
20.06.2012, 14:26
90% уверен что весь код ниже вызовет сплошной вопрос
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
void getMinElem(void * lpParam)
{ *
* * RowThreadData *pData = (RowThreadData *)lpParam;
* * while(!pData->bFinish && pData->n)
* * {
* * * * if(pData->minElem < pData->pRow[pData->n - 1])
* * * * * * pData->minElem = pData->pRow[pData->n - 1];
* * * * if(!(pData->n = pData->n - 1))
* * * * * * pData->bFinish = true;
* * }
* * _endthread();
}
Поясню
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
RowThreadData *pData = (RowThreadData *)lpParam;
- получили из переданных параметров lpParam поля структуры RowThreadData

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(!pData->bFinish && pData->n)
- цикл пока флаг pData->bFinish не будет иметь значение ИСТИНА, либо пока pData->n(он у меня совмещён со счётчиком) больше нуля

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(pData->minElem < pData->pRow[pData->n - 1])
* * * * * * pData->minElem = pData->pRow[pData->n - 1];
- простой поиск мин элемента
массив pData->pRow, индекс pData->n - 1

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(!(pData->n = pData->n - 1))
* * * * * * pData->bFinish = true;
- совмещённое условие с декриментом счётчика, как только досттигли нуля (т.е. пробрали сзади все элементы строки) ставим флаг pData->bFinish в положение ИСТИНА и тем самым выходим из данного цикла

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(!pData->bFinish && pData->n)
, а значит и завершаем поток. Ну а тут просматриваем состояние всех потоков

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
EnterCriticalSection(&cs);
* * * * * * if(pData[i].bFinish)
* * * * * * * * bFinish = true;
* * * * * * LeaveCriticalSection(&cs);
Матрица то может быть в сотню тысяч элементов, тогда потоки нитей будут рабоать ощутимое для пользователя время, а так я уверен для матриц с числоммэлементов менее 100 можно было бы даже исключить эту часть алгоритма

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(!bFinish)
* * {
* * * * for(i = 0; i < m; i++)
* * * * {
* * * * * * EnterCriticalSection(&cs);
* * * * * * if(pData[i].bFinish)
* * * * * * * * bFinish = true;
* * * * * * LeaveCriticalSection(&cs);
* * * * }
* * }
всё равно потоки запущенные здесь

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
_beginthread(getMinElem,0,&pData[i]);
успевали бы осуществить расчёт ещё до того как закончили бы этот цикл с параметром
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 0; i < m; i++)
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru