Приложение запускается три раза и создает три окна (последующие запуски к созданию окон не приводят). Когда приложение запускается с ключом /R все окна закрываются. Язык программирования Си
Текст программы
Код на C++ #include <windows.h> #include <iostream.h> #include <conio.h> int error; //тело потока DWORD CALLBACK t1(LPVOID) { int n=0; double nn=0; double del=0; double a,b; //бесконечный цикл while(!n) { //генерация двух цифр a=rand(); b=rand(); //вывод полученных результатов cout<<"Number a="<<a<<"\n"; cout<<"Number b="<<b<<"\n"; //проверка на деление на нуль if (b==0) { return error=1; } del=(a/b); //полученное число выводим на экран cout<<"Del Number="<<del<<"\n"; //проверка на количество таких операций if (nn==100000) { return error=2; } nn++; } return 0; } void main() { /*HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);*/ /* lpThreadAttributes - игнорируется. Должен быть NULL dwStackSize - игнорируется. По умолчанию размер стека для потока устанавливается в установках linker /STACK lpStartAdress -начальный адрес для потока lpParameter - параметр для потока dwCreationFlags - Определяет флаги, которые управляют созданием потока lpThreadId - получение индификатора потока.*/ CreateThread(NULL,0,t1,0,0,0); while(!error); switch(error) { case 1: MessageBox(NULL,"Произошла операция деления на нуль!","Debug",MB_OK); ExitThread(error); break; case 2: MessageBox(NULL,"Произошло переполнение операций деления!","Debug",MB_OK); ExitThread(error); break; } }
|