Ошибка компиляции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. #include<windows.h> //подключаем библиотеки
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #include<process.h>
  5. #include<stdio.h>
  6. HANDLE hstdin, hstdout, hthread1, hthread2, hthread3, hthread4, hthread5, hthread6, hthread7, hthread8, em, adw, dw1, dw2, dw3;
  7. //хэндлы для работы нитей, семафоров и ввода вывода
  8. int imo = 0, dmo = 0, gas = 0, m1 = 0, m2 = 0, m3 = 0;//для очереди машин, водителей
  9. int N; //число N
  10. unsigned __stdcall gas1( void* pArguments)// Нить 1й колонки
  11. {
  12. int i;
  13. COORD pos;
  14. while (1) {
  15. WaitForSingleObject(dw1, INFINITE);
  16. int randomize(); // выполняется до завершения основной программы
  17. Sleep(rand()% 500);
  18. WaitForSingleObject(em, INFINITE);
  19. m1 = 0;
  20. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  21. pos.X = 17;
  22. pos.Y = 1;
  23. SetConsoleCursorPosition(hstdout, pos);
  24. printf(" ");
  25. if (imo>0) {
  26. m1 = 1;
  27. imo--;
  28. pos.Y = 5;//перемещение машины по Х
  29. for (pos.X = 39; pos.X>16; pos.X--)
  30. {
  31. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  32. SetConsoleCursorPosition(hstdout, pos);
  33. printf("M");
  34. ReleaseMutex(em);
  35. Sleep(50);
  36. WaitForSingleObject(em, INFINITE);
  37. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  38. SetConsoleCursorPosition(hstdout, pos);
  39. printf(" ");
  40. }//перемещение машины по Y
  41. pos.X = 17;
  42. for (pos.Y = 5; pos.Y>1; pos.Y--)
  43. {
  44. SetConsoleCursorPosition(hstdout, pos);
  45. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  46. printf("M");
  47. ReleaseMutex(em);
  48. Sleep(50);
  49. WaitForSingleObject(em, INFINITE);
  50. SetConsoleCursorPosition(hstdout, pos);
  51. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  52. printf(" ");
  53. }
  54. pos.X = 17;
  55. pos.Y = 1;
  56. SetConsoleCursorPosition(hstdout, pos);
  57. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  58. printf("M");
  59. dmo++;
  60. }//водитель+
  61. ReleaseMutex(em);
  62. ReleaseMutex(dw1);
  63. Sleep(rand()% 1500);
  64. gas = 1;
  65. }
  66. }
  67. unsigned __stdcall gas2(void* pArguments)
  68. {
  69. int i;
  70. COORD pos;
  71. while (TRUE) {
  72. WaitForSingleObject(dw2, INFINITE);
  73. int randomize();
  74. Sleep(rand()% 500);
  75. WaitForSingleObject(em, INFINITE);
  76. m2 = 0;
  77. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  78. pos.X = 25;
  79. pos.Y = 1;
  80. SetConsoleCursorPosition(hstdout, pos);
  81. printf(" ");
  82. if (imo>0) {
  83. m2 = 1;
  84. imo--;
  85. pos.Y = 5;//перемещение машины по Х
  86. for (pos.X = 39; pos.X>24; pos.X--)
  87. {
  88. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  89. SetConsoleCursorPosition(hstdout, pos);
  90. printf("M");
  91. ReleaseMutex(em);
  92. Sleep(50);
  93. WaitForSingleObject(em, INFINITE);
  94. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  95. SetConsoleCursorPosition(hstdout, pos);
  96. printf(" ");
  97. }//перемещение машины по Y
  98. pos.X = 25;
  99. for (pos.Y = 5; pos.Y>1; pos.Y--)
  100. {
  101. SetConsoleCursorPosition(hstdout, pos);
  102. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  103. printf("M");
  104. ReleaseMutex(em);
  105. Sleep(50);
  106. WaitForSingleObject(em, INFINITE);
  107. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  108. SetConsoleCursorPosition(hstdout, pos);
  109. printf(" ");
  110. }
  111. pos.X = 25;
  112. pos.Y = 1;
  113. SetConsoleCursorPosition(hstdout, pos);
  114. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  115. printf("M");
  116. dmo++;
  117. }//водитель+
  118. ReleaseMutex(em);
  119. ReleaseMutex(dw2);
  120. Sleep(rand()% 15000);
  121. gas = 2;
  122. }
  123. }
  124. unsigned __stdcall gas3(void* pArguments)
  125. {
  126. int i;
  127. COORD pos;
  128. while (TRUE) {
  129. WaitForSingleObject(dw3, INFINITE);
  130. int randomize();
  131. Sleep(rand()% 500);
  132. WaitForSingleObject(em, INFINITE);
  133. m3 = 0;
  134. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  135. pos.X = 33;
  136. pos.Y = 1;
  137. SetConsoleCursorPosition(hstdout, pos);
  138. printf(" ");
  139. if (imo>0) {
  140. m3 = 1;
  141. imo--;
  142. pos.Y = 5;//перемещение машины по Х
  143. for (pos.X = 39; pos.X>32; pos.X--)
  144. {
  145. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  146. SetConsoleCursorPosition(hstdout, pos);
  147. printf("M");
  148. ReleaseMutex(em);
  149. Sleep(50);
  150. WaitForSingleObject(em, INFINITE);
  151. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  152. SetConsoleCursorPosition(hstdout, pos);
  153. printf(" ");
  154. }//перемещение машины по Y
  155. pos.X = 33;
  156. for (pos.Y = 5; pos.Y>1; pos.Y--)
  157. {
  158. SetConsoleCursorPosition(hstdout, pos);
  159. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  160. printf("M");
  161. ReleaseMutex(em);
  162. Sleep(50);
  163. WaitForSingleObject(em, INFINITE);
  164. SetConsoleCursorPosition(hstdout, pos);
  165. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  166. printf(" ");
  167. }
  168. pos.X = 33;
  169. pos.Y = 1;
  170. SetConsoleCursorPosition(hstdout, pos);
  171. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  172. printf("M");
  173. dmo++;
  174. }//водитель+
  175. ReleaseMutex(em);
  176. ReleaseMutex(dw3);
  177. Sleep(rand()% 1500);
  178. gas = 3;
  179. }
  180. }
  181. unsigned __stdcall drv1(void* pArguments)// водители прорисовка
  182. {
  183. int i;
  184. COORD pos;
  185. while (TRUE) {
  186. int randomize();
  187. WaitForSingleObject(em, INFINITE);
  188. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  189. pos.X = 13;
  190. pos.Y = 7;
  191. SetConsoleCursorPosition(hstdout, pos);
  192. for (i = -3; i<dmo; i++) { printf(" "); }
  193. if (dmo>0) {
  194. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  195. SetConsoleCursorPosition(hstdout, pos);
  196. for (i = 0; i<dmo; i++) { printf("D"); }//очередь водителей в кассу
  197. //машин-1
  198. }
  199. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED);
  200. pos.X = 40;
  201. pos.Y = 5;
  202. SetConsoleCursorPosition(hstdout, pos);
  203. for (i = -3; i<imo; i++) { printf(" "); }
  204. if (imo>0) {
  205. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  206. SetConsoleCursorPosition(hstdout, pos);
  207. for (i = 0; i<imo; i++) { printf("M"); }//очередь водителей в кассу
  208. //машин-1
  209. }
  210. SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE);
  211. pos.X = 0;
  212. pos.Y = 9;
  213. SetConsoleCursorPosition(hstdout, pos);
  214. printf(" \n \n ");
  215. SetConsoleCursorPosition(hstdout, pos);
  216. printf(" Cars total = %d\n Cars here = %d\n Cars somewhere else = %d", N, (imo + m1 + m2 + m3), (N - imo - m1 - m2 - m3));
  217. ReleaseMutex(em);
  218. Sleep(50);
  219. }
  220. }
  221. unsigned __stdcall drv2_1(void* pArguments)// водители счетчик очереди
  222. {
  223. int i;
  224. COORD pos;
  225. while (TRUE) {
  226. int randomize();
  227. WaitForSingleObject(dw1, INFINITE);
  228. WaitForSingleObject(adw, INFINITE);
  229. if (dmo>0) { Sleep(500 + rand()% 1500); dmo--; }
  230. ReleaseMutex(dw1);
  231. ReleaseMutex(adw);
  232. }
  233. }
  234. unsigned __stdcall drv2_2(void* pArguments)// водители счетчик очереди
  235. {
  236. int i;
  237. COORD pos;
  238. while (TRUE) {
  239. int randomize();
  240. WaitForSingleObject(dw2, INFINITE);
  241. WaitForSingleObject(adw, INFINITE);
  242. if (dmo>0) { Sleep(500 + rand()% 1500); dmo--; }
  243. ReleaseMutex(dw2);
  244. ReleaseMutex(adw);
  245. }
  246. }
  247. unsigned __stdcall drv2_3(void* pArguments)// водители счетчик очереди
  248. {
  249. int i;
  250. COORD pos;
  251. while (TRUE) {
  252. int randomize();
  253. WaitForSingleObject(dw3, INFINITE);
  254. WaitForSingleObject(adw, INFINITE);
  255. if (dmo>0) { Sleep(500 + rand()%1500); dmo--; }
  256. ReleaseMutex(dw3);
  257. ReleaseMutex(adw);
  258. }
  259. }
  260.  
  261. void main() //основная программа
  262. {
  263. //обозначаем что нити будут расположены после основной части программы
  264. unsigned int threadid1, threadid2, threadid3, threadid4, threadid5, threadid6, threadid7, threadid8; //идентификатор для нитей
  265. COORD pos;//координатная переменная
  266. int i, j = 0;//переменные для циклов
  267. hstdout = GetStdHandle(STD_OUTPUT_HANDLE); // инициализация хэндлов ввода, ввывода
  268. hstdin = GetStdHandle(STD_INPUT_HANDLE);
  269. em = CreateMutex(NULL, TRUE, NULL);//инициализация семафоров Mutex
  270. if (em == NULL)
  271. {
  272. printf("Mutex=%d\n", em);
  273. getchar();
  274. }
  275. dw1 = CreateMutex(NULL, TRUE, NULL);
  276. if (dw1 == NULL)
  277. {
  278. printf("Mutex=%d\n", dw1);
  279. getchar();
  280. }
  281. dw2 = CreateMutex(NULL, TRUE, NULL);
  282. if (dw2 == NULL)
  283. {
  284. printf("Mutex=%d\n", dw2);
  285. getchar();
  286. }
  287. dw3 = CreateMutex(NULL, TRUE, NULL);
  288. if (dw3 == NULL)
  289. {
  290. printf("Mutex=%d\n", dw3);
  291. getchar();
  292. }
  293. adw = CreateMutex(NULL, TRUE, NULL);
  294. if (adw == NULL)
  295. {
  296. printf("Mutex=%d\n", adw);
  297. getchar();
  298. }
  299. SetConsoleTextAttribute(hstdout, FOREGROUND_BLUE);
  300. for (i = 0; i<10; i++) { printf("\n\n\n\n\n\n\n"); }// очистка экрана
  301. printf("input N> ");
  302. scanf("%d", &N);
  303. pos.X = 0; //установка координат курсора вывода
  304. pos.Y = 0; //рисование заправки
  305. SetConsoleCursorPosition(hstdout, pos);
  306. printf(" "); SetConsoleTextAttribute(hstdout, FOREGROUND_RED | FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  307. printf(""); SetConsoleTextAttribute(hstdout, FOREGROUND_RED);
  308. printf(" "); SetConsoleTextAttribute(hstdout, FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  309. printf("Gas #1"); SetConsoleTextAttribute(hstdout, FOREGROUND_RED);
  310. printf(" "); SetConsoleTextAttribute(hstdout, FOREGROUND_GREEN | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  311. printf("Gas #2"); SetConsoleTextAttribute(hstdout, FOREGROUND_RED);
  312. printf(" "); SetConsoleTextAttribute(hstdout, FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  313. printf("Gas #3\n"); SetConsoleTextAttribute(hstdout, FOREGROUND_RED);
  314. printf(" "); SetConsoleTextAttribute(hstdout, FOREGROUND_RED | FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
  315. printf("\n\n\n\n\n\n Cash\n");
  316. SetConsoleTextAttribute(hstdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
  317. printf("\n Anaai iaoei = %d\n N = %d\n", (imo + m1 + m2 + m3), N);
  318. ReleaseMutex(em);
  319. ReleaseMutex(dw1);
  320. ReleaseMutex(dw2);
  321. ReleaseMutex(dw3);
  322. ReleaseMutex(adw);
  323. hthread1 = (HANDLE)_beginthreadex(NULL, 4096, &gas1, NULL, 0, &threadid1); //Запуск нитей
  324. if (hthread1 == NULL) { printf("hthread1=%d\n", hthread1); getchar(); }
  325. hthread2 = (HANDLE)_beginthreadex(NULL, 4096, &gas2, NULL, 0, &threadid2);
  326. if (hthread2 == NULL) { printf("hthread2=%d\n", hthread2); getchar(); }
  327. hthread3 = (HANDLE)_beginthreadex(NULL, 4096, &gas3, NULL, 0, &threadid3);
  328. if (hthread3 == NULL) { printf("hthread3=%d\n", hthread3); getchar(); }
  329. hthread4 = (HANDLE)_beginthreadex(NULL, 4096, &drv1, NULL, 0, &threadid4);
  330. if (hthread4 == NULL) { printf("hthread4=%d\n", hthread4); getchar(); }
  331. hthread5 = (HANDLE)_beginthreadex(NULL, 4096, &drv2_1, NULL, 0, &threadid5);
  332. if (hthread5 == NULL) { printf("hthread5=%d\n", hthread5); getchar(); }
  333. hthread7 = (HANDLE)_beginthreadex(NULL, 4096, &drv2_2, NULL, 0, &threadid7);
  334. if (hthread7 == NULL) { printf("hthread7=%d\n", hthread7); getchar(); }
  335. hthread8 = (HANDLE)_beginthreadex(NULL, 4096, &drv2_3, NULL, 0, &threadid8);
  336. if (hthread8 == NULL) { printf("hthread8=%d\n", hthread8); getchar(); }
  337. do {
  338. for (i = 5; i>0; i--) {
  339. if (imo<N - i - m1 - m2 - m3) {
  340. imo = imo + rand()% i;
  341. break;
  342. }
  343. }
  344. Sleep(rand()% 2500);
  345. j++;
  346. } while (j<150);
  347. CloseHandle(hthread1);
  348. CloseHandle(hthread2);
  349. CloseHandle(hthread3);
  350. CloseHandle(hthread4);
  351. CloseHandle(hthread5);
  352. CloseHandle(hthread6);
  353. CloseHandle(hthread7);
  354. CloseHandle(hthread8);
  355. CloseHandle(hstdout);
  356. CloseHandle(em);
  357. CloseHandle(dw1);
  358. CloseHandle(dw2);
  359. CloseHandle(dw3);
  360. CloseHandle(adw);
  361. CloseHandle(hstdin);
  362. }
В вижуал студио все запускается при попытки компиляции в консоли через gcc выдает ошибку в чем причина?

Решение задачи: «Ошибка компиляции»

textual
Листинг программы
  1. int main(){
  2. // тут программа
  3. return 0;
  4. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы