Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3os

.cpp
Скачиваний:
0
Добавлен:
07.04.2025
Размер:
2.48 Кб
Скачать
#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);
}
Соседние файлы в предмете Операционные системы