Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 4 Пантелеева БСТ1904.docx
Скачиваний:
67
Добавлен:
04.03.2022
Размер:
348.78 Кб
Скачать

Void parent(lpctstr parent_mail, lpctstr child_mail)

{

InitializeCriticalSection(&cs);

cout << "Unsorted massiv: " << endl;

int arr[siz];

ifstream fin;

string filename = "C:\\Users\\kseny\\Desktop\\os\\os_maislot\\os_maislot\\matrix.txt";

fin.open(filename.c_str(), std::ifstream::in);

if (!fin.is_open())

cout << "File couldn't be open!\n";

else

{

for (int i = 0; i < siz; i++)

{

if (fin.eof())

{

cout << "Not enoght numbers in file!" << endl;

delete arr;

return;

}

fin >> arr[i];

cout << arr[i] << " ";

}

fin.close();

}

int arr1[siz] = {};

int count = 0;

HANDLE parent_handle = create_mail(parent_mail);

cout << endl << endl;

EnterCriticalSection(&cs);

int x = 1;

int b[siz];

for (int i = 0; i < siz; i++) b[i] = 400;

divide(arr, x, b);

for (int i = 0; i < siz; i++) cout << b[i] << " ";

cout << endl;

system("start C:\\Users\\kseny\\Desktop\\os\\os_maislot\\Debug\\os_maislot.exe");

HANDLE child_handle;

while (!join_mail(child_mail, child_handle)) {}

char message[512];

int_to_char(b, message);

cout << "1 sending..." << endl;

send_message(child_handle, message);

while (!read_message(parent_handle, message)) {}

cout << "Have 1 result" << endl;

char_to_mas_int(message, b);

for (int i = 0; i < siz; i++)

{

if (b[i] != 400)

{

arr1[count] = b[i];

count++;

}

}

CloseHandle(child_handle);

LeaveCriticalSection(&cs);

EnterCriticalSection(&cs);

int x1 = 10;

for (int i = 0; i < siz; i++) b[i] = 400;

divide(arr, x1, b);

for (int i = 0; i < siz; i++) cout << b[i] << " ";

cout << endl;

system("start C:\\Users\\kseny\\Desktop\\os\\os_maislot\\Debug\\os_maislot.exe");

while (!join_mail(child_mail, child_handle)) {}

int_to_char(b, message);

cout << "2 sending..." << endl;

send_message(child_handle, message);

while (!read_message(parent_handle, message)) {}

cout << "Have 2 result" << endl;

char_to_mas_int(message, b);

for (int i = 0; i < siz; i++)

{

if (b[i] != 400)

{

arr1[count] = b[i];

count++;

}

}

CloseHandle(child_handle);

LeaveCriticalSection(&cs);

EnterCriticalSection(&cs);

int x2 = 100;

for (int i = 0; i < siz; i++) b[i] = 400;

divide(arr, x2, b);

for (int i = 0; i < siz; i++) cout << b[i] << " ";

cout << endl;

system("start C:\\Users\\kseny\\Desktop\\os\\os_maislot\\Debug\\os_maislot.exe");

while (!join_mail(child_mail, child_handle)) {}

int_to_char(b, message);

cout << "3 sending..." << endl;

send_message(child_handle, message);

while (!read_message(parent_handle, message)) {}

cout << "Have 3 result" << endl;

char_to_mas_int(message, b);

for (int i = 0; i < siz; i++)

{

if (b[i] != 400)

{

arr1[count] = b[i];

count++;

}

}

CloseHandle(child_handle);

LeaveCriticalSection(&cs);

CloseHandle(parent_handle);

cout << "Sorted massiv: " << endl;

printArray(arr1);

cout << endl;

DeleteCriticalSection(&cs);

}

Void child(handle parent_handle, lpctstr parent_mail, lpctstr child_mail)

{

HANDLE child_handle = create_mail(child_mail);

char message[1024];

cout << "Waiting input..." << endl;

while (!read_message(child_handle, message)) {}

cout << "Long message: " << strlen(message) << endl;

CloseHandle(child_handle);

cout << "Handle закрыт" << endl;

int b[siz];

char_to_mas_int(message, b);

cout << "Having massiv:" << endl;

for (int i = 0; i < siz; i++) cout << b[i] << " ";

cout << endl << endl;

int temp;

for (int i = 0; i < siz - 1; i++) {

for (int j = 0; j < siz - i - 1; j++) {

if (b[j] > b[j + 1]) {

temp = b[j];

b[j] = b[j + 1];

b[j + 1] = temp;

}

}

}

cout << "Result = " << endl;

printArray(b);

cout << endl;

int_to_char(b, message);

cout << "Sending result..." << endl;

send_message(parent_handle, message);

cout << "Done" << endl;

}