Potoki.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <Windows.h>
  4. #include <malloc.h>
  5. int n = 10;
  6. VOID FactrFib(VOID);
  7. DWORD WINAPI TreadFactr(LPVOID param);
  8. DWORD WINAPI TreadFib(LPVOID param);
  9. //DWORD WINAPI Child(LPVOID param) {
  10. // for (int i = 0; i < 100; i++) {
  11. // printf("Я дочерний поток и я вывожу значение: %d\n", i);
  12. // }
  13. // ExitThread(0);
  14. //}
  15. //
  16. //DWORD WINAPI Child1(LPVOID param) {
  17. // for (int i = 0; i < 100; i++) {
  18. // printf("Я другой дочерний поток и я вывожу значение: %d\n", i);
  19. // }
  20. // ExitThread(0);
  21. //}
  22. int main() {
  23. /*system("chcp 1251");*/
  24. /*HANDLE hTread[2];
  25. hTread[0] = CreateThread(NULL, 0, Child, NULL, 0, 0);
  26. hTread[1] = CreateThread(NULL, 0, Child1, NULL, 0, 0);*/
  27. /*for (int i = 0; i < 100; i++) {
  28. printf("Я основной поток и я вывожу значение: %d\n", i);
  29. }*/
  30. /*WaitForMultipleObjects(2, hTread, TRUE, INFINITE);*/
  31. FactrFib();
  32. return 0;
  33. }
  34. VOID FactrFib(VOID) {
  35. HANDLE hF[2];
  36. hF[0] = CreateThread(NULL,0,TreadFactr,NULL,0,0);
  37. hF[1] = CreateThread(NULL, 0, TreadFib, NULL, 0, 0);;
  38. WaitForMultipleObjects(2, hF, TRUE, INFINITE);
  39. }
  40. DWORD WINAPI TreadFactr(LPVOID param) {
  41. int f=1;
  42. for (int i = 0; i <= n; i++) {
  43. if (i != 0) {
  44. f *= i;
  45. }
  46. printf("Факториал %d = %d\n", i, f);
  47. }
  48. ExitThread(0);
  49. }
  50. DWORD WINAPI TreadFib(LPVOID param) {
  51. int f1 = 1;
  52. int f2 = 1;
  53. int f = 0;
  54. for (int i = 0; i <= n; i++) {
  55. if (i > 2) {
  56. f = f1;
  57. f1 = f2;
  58. f2 += f;
  59. }
  60. printf("%d элемент Фибоначи = %d\n", i, f2);
  61. }
  62. ExitThread(0);
  63. }