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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2012, 11:49   #1
neomax38
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 72
По умолчанию Простое многопоточное приложение

Задание:
Охранное агентство разработало новую систему управления электронными замками. Для открытия двери клиент обязан произнести произвольную фразу из 25 слов. В этой фразе должно встречаться заранее оговоренное слово, причем только один раз. Требуется создать многопоточное приложение, управляющее замком. Потоки должны осуществлять сравнение параллельно по словам.
Из примера выдернул потоки осталось только с разбором фразы разобраться

C++ Builder
Вот на что ума хватило:
Код:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
const int n = 25;
int a[25]={123 18 456 489 }; //фраза
int slovo = 1234; //секретное слово
int colvo = 0;
int open = 0;

switch
case 1234: open = 1; colvo++;


DWORD WINAPI ThreadFunc(PVOID pvParam)//Ôóíêöèÿ ïîòîêà
{
if
a[i]==slovo{
open=1; }
}

      //	int num,sum = 0,i;
       //	num = 25*(*((int *)pvParam));
	//  for(i=num;i<num+25;i++) sum += a[i]*a[i];
	//   *(int*)pvParam = sum;
	//    DWORD dwResult = 0;
       //	return dwResult;


int main(int argc, char** argv)
{
	int x[n];
	int i,rez = 0;
	DWORD dwThreadId[n],dw;
	HANDLE hThread[n];
	for (i=0;i<n;i++) a[i] = i;
	//создание n дочерних потоков
	for (i=0;i<n;i++)
	{
		x[i] = i;
		hThread[i] = CreateThread(NULL,0,ThreadFunc,(PVOID)&x[i], 0, &dwThreadId[i]);
		if(!hThread) printf("main process: thread %d not execute!",i);
	}
	// ожидание завершения n потоков
	dw = WaitForMultipleObjects(n,hThread,TRUE,INFINITE);
	for(i=0;i<n;i++) rez+=x[i];
	printf("OPEN = %d\n",rez);
	getch();
	return 0;
}

Последний раз редактировалось neomax38; 19.03.2012 в 14:59.
neomax38 вне форума Ответить с цитированием
Старый 25.03.2012, 15:39   #2
neomax38
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 72
По умолчанию

Спасибо не надо!
Код:
#include <string>
#include <stdio.h>
#include <windows.h>

std::string phrase[] = {
      "a", "b", "c", "d", "e",
      "f", "g", "h", "i", "j",
      "k", "l", "m", "n", "o",
      "p", "q", "r", "s", "t",
      "u", "v", "w", "x", "y" };
const int n = sizeof( phrase ) / sizeof( phrase[ 0 ] );
std::string key = "g";
int res[ n ];

DWORD WINAPI ThreadFunc( PVOID pvParam ) {
    int i = (int)pvParam;
    res[ i ] = ( phrase[ i ] == key );
}

int main()
{
    HANDLE hThread[ n ];
    for (int i = 0; i < n; i++ ) {
         hThread[ i ] = CreateThread( NULL, 0, ThreadFunc, (PVOID)i, 0, NULL );
    }
    WaitForMultipleObjects( n, hThread, TRUE, INFINITE );
    int count = 0;
    for ( int i = 0; i < n; i++ ) {
        count += res[ i ];
    }
    if ( count == 1 ) {
         printf( "unlocked\n");
    }
    else {
         printf( "locked\n");
    }
}
neomax38 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточное приложение и cookies nikol_ Работа с сетью в Delphi 1 21.01.2012 15:31
многопоточное приложение Vistar Общие вопросы .NET 1 26.08.2011 16:25
многопоточное приложение favorite Общие вопросы Delphi 0 26.05.2011 19:47
Многопоточное приложение MaXoN66613 Помощь студентам 0 07.06.2010 12:36
Многопоточное приложение на Indy Core2Duo Работа с сетью в Delphi 15 08.04.2009 16:45