Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2010, 15:44   #1
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию работа с массивами

Добрый вечер!!! Возникла одна проблема, я написала программу для вывода номера столбца в котором сумма элементов минимальна
Код:
/*
				программа поиска номера столбца в котором сумма элементов минимальна
*/

#include "stdafx.h"
#include "iostream"

using namespace System;

/*=============================================================================================================
													описание данных
==============================================================================================================*/
	const int m=2, n=3;	//размерность массива m-строки, n-столбцы
	float mtx[m][n];	//матрица
	float colSum[n];	//массив хранящий суммы стобцов
	int colNum[n];	//массив хранящий номера столбцов
	int i,j;
	int min;


void printMtx(float matrix[m][n])	//процедура печати матрицы (матрица)
{
	for (i=0; i<m; i++)
	{
		for (j=0; j<n; j++)
			std::cout<<matrix[i][j]<<" ";
		std::cout<<"\n"; 
	}
}


float sum_col(int num)	//функция подсчета суммы столбца(номер столбца)
{
//	int *pcol_num = (int*)param;
//	int col_num=*pcol_num;
	for (i=0; i<m; i++)
	{
		colSum[num]+=mtx[i][num];
	}
	return colSum[num];
}




void main()
{
/*=============================================================================================================
													ввод значений
==============================================================================================================*/
	for (i=0; i<m; i++)
		for (j=0; j<n; j++)
			mtx[i][j]=(float)(rand());
	printMtx(mtx);

/*=============================================================================================================
													инициализация colSum,colNum
==============================================================================================================*/
	for (i=0;i<n;i++)
	{
		colSum[i]=0;
		colNum[i]=i;
	}

/*=============================================================================================================
													поиск суммы
==============================================================================================================*/
	for (j=0;j<n;j++)
	{
		colSum[j]=sum_col(j);
	}

	for (i=0;i<n;i++)
		std::cout<<colSum[i]<<" ";
		std::cout<<"\n"; 
	//getchar();

	min=0;
	for (i=1;i<n;i++)
	{
		if (colSum[i]<min) min=i;
	}
	std::cout<<min<<" ";
	getchar();
}
Но мне нужно распраралелить вычисление суммы при помощи создания потоков, препод писал прогу для этого но она нерабочая, приведу куски чтоб было понятно что нужно
Код:
DWORD WINAPI col_Sum(LPVoid param)	//процедура подсчета суммы столбца
{
	int *pcol_num = (int*)param;
	int col_num=*pcol_num;
	colsum[col_num]=0;
	for (int i=0; i<m; i++)
		colsum[col_num]+=mtx[i][col_num];
	return 0;
}
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 24.02.2010, 16:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Простенький примерчик для неглупых программисток
Код:
// Сопроцессы.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>

int a[5];
DWORD WINAPI t1(VOID* data){
	int max=a[0];
	for (int i=0;i<5;i++) max=(a[i]>max)?a[i]:max;
	printf("%d\n",max);
	return 1;
}
DWORD WINAPI t2(VOID* data){
	int min=a[0];
	for (int i=0;i<5;i++) min=(a[i]<min)?a[i]:min;
	printf("%d\n",min);
	return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
	for (int i=0;i<5;i++) a[i]=i;
	DWORD id1;
	HANDLE h1=CreateThread(NULL,0,t1,NULL,0,&id1);
	HANDLE h2=CreateThread(NULL,0,t2,NULL,0,&id1);
	getchar();
	return 0;
}
Смысл поняла, или пояснить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.02.2010, 19:02   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

спасибо, разобралась
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами (С++) q3storm Помощь студентам 7 26.04.2011 09:46
Работа с массивами SnowSin Помощь студентам 0 05.12.2009 14:08
Работа с массивами Эллочка Помощь студентам 2 18.11.2009 16:14
Работа с массивами mchip Microsoft Office Excel 4 11.03.2009 17:11
Работа с массивами rexec Microsoft Office Excel 12 21.04.2008 13:29