
- •Цель работы
- •Лабораторное задание
- •Код программы
- •Void single_int_to_char(int a, char *c)
- •Void char_to_mas_int(char* c, int *mas)
- •Int char_to_int(char* c)
- •Void int_to_char(int *a, char *c)
- •Void string_to_char(string s, char *c)
- •Void parent(lpctstr parent_mail, lpctstr child_mail)
- •Void child(handle parent_handle, lpctstr parent_mail, lpctstr child_mail)
- •Int* divide(int* arr, int X, int* b)
- •Int char_to_int(char* c)
- •Void int_to_char(int *a, char *c)
- •Void string_to_char(string s, char *c)
- •Void parent(lpctstr parent_mail, lpctstr child_mail)
- •Void child(handle parent_handle, lpctstr parent_mail, lpctstr child_mail)
- •Int* divide(int* arr, int X, int* b)
- •Void string_to_char(string s, char *c)
- •Int char_to_int(char* c)
- •Void int_to_char(int *a, char *c)
- •Void char_to_mas_int(char* c, int *mas)
- •Int* divide(int* arr, int X, int* b)
- •Void single_int_to_char(int a, char *c)
- •Void char_to_mas_int(char* c, int *mas)
- •Void int_to_char(int *a, char *c)
- •Void string_to_char(string s, char *c)
- •Void char_to_mas_int(char* c, int *mas)
- •Void char_to_mas_int(char* c, int *mas)
- •Void int_to_char(int *a, char *c)
- •Void string_to_char(string s, char *c)
- •Результаты работы
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;
}