
Добавил:
eeeikh
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:3os
.cpp#include <iostream>
#include <windows.h>
#include<time.h>
#include <ctime>
#include<iomanip>
using namespace std;
LONG sum = 0;
const int n = 10;
LONG arr[n];
int q;
void thread01()
{
srand((unsigned int)time(NULL));
Sleep(1000);
switch (q)
{
case 1:
for (int i = 0; i < n; i++)
arr[i] = rand() % 200 + 1;
break;
case 2:
for (int i = 0; i < n; i++)
arr[i] = 1;
break;
default:
for (int i = 0; i < n; i++)
arr[i] = rand() % 200 + 1;
break;
}
}
void thread02()
{
Sleep(1000);
srand((unsigned int)time(NULL));
cout << "Первоначальный массив: ";
for (int j = 0; j < n; j++)
{
Sleep(1000);
cout << right << setw(5) << arr[j];
}
cout << endl;
cout << "Массив с измененными значениями: ";
int t = 0;
while (t < 10)
{
Sleep(1000);
LONG k = rand() % 301 - 150;
InterlockedExchange(&arr[t], k);
cout << arr[t]<<" ";
t++;
}
}
void thread03()
{
int p = 0;
Sleep(27000);
cout << endl << "Четные(по значению) элементы массива обнулили: ";
for (int i = 0; i < n; i++)
{
Sleep(1000);
if(arr[i] % 2 == 0)
InterlockedExchange(&arr[i], 0);
cout << arr[i] <<" ";
}
}
int main()
{
srand(time(NULL));
system("chcp 65001");
cout << "Как хотите заполнить массив?" << endl;
cout << "1-Заполнить рандомно" << endl;
cout << "2-Заполнить предустановленным массивом" << endl;
cin >> q;
system("cls");
HANDLE hTh01;
DWORD IDTh01;
HANDLE hTh02;
DWORD IDTh02;
HANDLE hTh03;
DWORD IDTh03;
hTh01 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread01, NULL, 0, &IDTh01);
if (hTh01 == NULL) return GetLastError();
hTh02 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread02, NULL, 0, &IDTh02);
if (hTh02 == NULL) return GetLastError();
hTh03 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread03, NULL, 0, &IDTh03);
if (hTh03 == NULL) return GetLastError();
cin >> q;
TerminateThread(hTh01, 0);
CloseHandle(hTh01);
TerminateThread(hTh02, 0);
CloseHandle(hTh02);
TerminateThread(hTh03, 0);
CloseHandle(hTh03);
}