Многопоточное приложение - поиск простых чисел в массиве

Тема в разделе "Общие вопросы по С и С++", создана пользователем jozhik99, 18 сен 2010.

  1. jozhik99

    jozhik99 Гость

    Помогите, пожалуйста, решить задачку на с++. Попытки сделать не особо увенчались успехом... :KillMe: B)
    Дана последовательность натуральных чисел {a0…an–1}. Создать многопоточное приложение для поиска всех ai, являющихся простыми числами. Количество потоков является входным параметром программы, потоки проводят вычисления независимо друг от друга, количество символов в строке может быть не кратно количеству потоков

    Код (Text):
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    const int n = 4;
    int a[100];
    DWORD WINAPI ThreadFunc(PVOID pvParam)
    {
    int num,sum = 0,i;
    int b[k];
    num = 25*(*((int *)pvParam));
    for(i=num;i<num+25;i++)
    for (int j=2; j<=10; ++j)
    {
    if (!(j>3 && (j%2==0 || j%3==0)))
    cout << j << "\n";
    }
    for (int i=10; i<=100; ++i)
    {
    if (!(k%2==0 || k%3==0 || k%5==0 || k%7==0))
    cout << k << "\n";
    }
    a[i] == j&&k;
    sum =a[i];


    *(int*)pvParam = sum;
    DWORD dwResult = num;
    return dwResult;
    }
    int main(int argc, char** argv)
    {
    int x[n];
    int i,rez = 0;
    DWORD dwThreadId[n],dw,dwResult[n];
    HANDLE hThread[n];
    for (i=0;i<100;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);
    // получение значений, переданных потоком в return
    for (i=0;i<n;i++)
    {
    GetExitCodeThread(hThread[i],&dwResult[i]);
    printf("%d\n",(int)dwResult[i]);
    }
    for(i=0;i<n;i++) rez+=x[i];
    printf("\n Prostye chisla = %d",rez);
    getch();
    return 0;
    }
     
Загрузка...

Поделиться этой страницей