Pikachupp
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте Molniev !!! Разработать программу, осуществляющую ввод двух строк, введенных пользователем. Далее, если обе строки хранят целые числа со знаком, то на экран выводится сумма чисел, в противном случае – конкатенация двух вве-денных строк. Проверку на соответствие строки целому числу, вычисление суммы чисел и конкатенации строк оформить как три разных функции потока (с приоритетами, соответственно, THREAD_PRIORITY_ABOVE_NORMAL, HREAD_PRIORITY_LOWEST и THREAD_PRIORITY_IDLE). Ввод строк осуществляется до запуска всех по-токов, а вывод результатов – после их завершения. Также выводятся значе-ния времени работы каждого потока. ---------------------------------------------------------------------------------------------------------------------- Выдаёт ошибку в компиляции workerset ws; ---------------------------------------------------------------------------------------------------------------------- #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> void print_worktime(HANDLE thread_handle, char *thread_name) { FILETIME ft[3]; float d; GetThreadTimes(thread_handle, &ft[0], &ft[1], &ft[2], &ft[2]); ft[1].dwLowDateTime -= ft[0].dwLowDateTime; ft[1].dwHighDateTime -= ft[0].dwHighDateTime; //по хорошему мы тут должны учесть переполнение младшего dword-а, но бог с ним d = (float)ft[1].dwLowDateTime / 10000000; //тутачки время из 100 наносекундных интервалов в секунды скидываем printf("%s work time: %f\n", thread_name, d); } int main(int argc, char* argv[]) { workerset ws; DWORD n = 0; HANDLE threads[3]; printf("Enter strings: \n"); scanf("%s %s", ws.str1, ws.str2); ws.verify_complit = CreateEventW(NULL, TRUE, FALSE, NULL); threads[0] = CreateThread(NULL, 0, verify_number, &ws, 0, &n); threads[1] = CreateThread(NULL, 0, sum_number, &ws, 0, &n); threads[2] = CreateThread(NULL, 0, sum_string, &ws, 0, &n); SetThreadPriority(threads[1], THREAD_PRIORITY_LOWEST); SetThreadPriority(threads[2], THREAD_PRIORITY_IDLE); WaitForMultipleObjects(3, threads, TRUE, INFINITE); printf("%s", ws.result); print_worktime(threads[0], "verify_number"); print_worktime(threads[1], "sum_number"); print_worktime(threads[2], "sum_string"); getchar(); getchar(); return 0; } Добавлено: Хочу также спросить вас сложно ли написать данную программку для курсовой работы ? Задание 5 Разработать отладчик, позволяющий запускать программу на выполнение, формировать контрольную точку, записывать состояние программы в контроль- ной точке в файл на диске, возобновить выполнение с контрольной точки. |