Приложение запускается три раза и создает три окна (последующие запуски к созданию окон не приводят). Когда приложение запускается с ключом /R все окна закрываются. Язык программирования Си


Добавил:DMT
Дата создания:1 мая 2008, 17:05
Дата обновления:1 мая 2008, 17:05
Просмотров:5899 последний позавчера, 0:41
Комментариев: 0
Приложение запускается три раза и создает три окна (последующие запуски к созданию окон не приводят). Когда приложение запускается с ключом /R все окна закрываются. Язык программирования Си
Текст программы
Код на C++
  1. #include <windows.h>
  2. #include <iostream.h>
  3. #include <conio.h>
  4. int error;
  5.  
  6. //тело потока
  7. DWORD CALLBACK t1(LPVOID)
  8. {
  9. int n=0;
  10. double nn=0;
  11. double del=0;
  12. double a,b;
  13. //бесконечный цикл
  14. while(!n)
  15. { //генерация двух цифр
  16. a=rand();
  17. b=rand();
  18. //вывод полученных результатов
  19. cout<<"Number a="<<a<<"\n";
  20. cout<<"Number b="<<b<<"\n";
  21. //проверка на деление на нуль
  22. if (b==0)
  23. {
  24. return error=1;
  25. }
  26. del=(a/b);
  27. //полученное число выводим на экран
  28. cout<<"Del Number="<<del<<"\n";
  29. //проверка на количество таких операций
  30. if (nn==100000)
  31. {
  32. return error=2;
  33. }
  34. nn++;
  35. }
  36. return 0;
  37. }
  38.  
  39. void main()
  40. {
  41.  
  42.  
  43. /*HANDLE CreateThread(
  44. LPSECURITY_ATTRIBUTES lpThreadAttributes,
  45. DWORD dwStackSize,
  46. LPTHREAD_START_ROUTINE lpStartAddress,
  47. LPVOID lpParameter,
  48. DWORD dwCreationFlags,
  49. LPDWORD lpThreadId);*/
  50. /*
  51. lpThreadAttributes - игнорируется. Должен быть NULL
  52.  
  53. dwStackSize - игнорируется. По умолчанию размер стека для потока устанавливается в установках linker /STACK
  54.  
  55. lpStartAdress -начальный адрес для потока
  56.  
  57. lpParameter - параметр для потока
  58.  
  59. dwCreationFlags - Определяет флаги, которые управляют созданием потока
  60.  
  61. lpThreadId - получение индификатора потока.*/
  62.  
  63. CreateThread(NULL,0,t1,0,0,0);
  64. while(!error);
  65. switch(error)
  66. {
  67. case 1:
  68. MessageBox(NULL,"Произошла операция деления на нуль!","Debug",MB_OK);
  69. ExitThread(error);
  70. break;
  71. case 2:
  72. MessageBox(NULL,"Произошло переполнение операций деления!","Debug",MB_OK);
  73. ExitThread(error);
  74. break;
  75. }
  76. }
При использовании обязательна ссылка на http://DMTSoft.ru
up