Advertisement
Guest User

Untitled

a guest
May 19th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.87 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <windows.h>
  4. #include <conio.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <cstdio>
  8.  
  9. const char DLINA = 30, TOTAL = 100; //длина вводимого субъекта, скок всего субъектов
  10. int subcvet[TOTAL][TOTAL]; //массив, который для каждого субъекта хранит возможность цвета
  11. int cvetNaKarte[TOTAL]; //цвет для субъекта
  12. int kolvocvetov = 2; //кол-во использованных цветов
  13. FILE *fsub; //файл с введенными субъектами
  14. FILE *fmatrica; //файл с матрицей смежности
  15. char vvodsubmas[DLINA]; //массив, в который пользователь будет вводить субъекты (из функции vvodsub)
  16. int A[TOTAL][TOTAL]; //матрица смежности
  17. int kolvo; //кол-во введенных субъектов
  18. int bul = 1; //логическая переменная, которая нужна, чтобы пользователь корректно вводил данные
  19.  
  20. int vvodsub() {
  21. char sym;
  22. fsub = fopen("sub.txt", "r+");
  23. if (fsub) {
  24. printf("Выберите действие\n");
  25. printf("1 - создать новую карту\n");
  26. printf("2 - добавить субъекты в существующую карту\n");
  27. printf("3 - выйти из операции ввода субъектов\n");
  28. sym = getchar();
  29. system("cls");
  30. switch (sym)
  31. {
  32. case '1': fsub = fopen("sub.txt", "w");
  33. bul = 0;
  34. break;
  35. case '2': {
  36. fsub = fopen("sub.txt", "a");
  37. fseek(fsub, 0, 2);
  38. bul = 0;
  39. }
  40. break;
  41. case '3':
  42. return 0;
  43. }
  44. }
  45. else fsub = fopen("sub.txt", "w");
  46. printf("Введите название субъекта (если вы закончили ввод, нажмите '-' и клавишу 'ENTER')\n");
  47. do {
  48. scanf("%s", &vvodsubmas);
  49. if (vvodsubmas[0] != '-') {
  50. fputs(vvodsubmas, fsub); //пишет данные в файл
  51. fputs("\n", fsub);
  52. }
  53. } while (vvodsubmas[0] != '-');
  54. fclose(fsub);
  55. getchar();
  56. return 0;
  57. }
  58.  
  59. int vvodsosedey() {
  60. fsub = fopen("sub.txt", "r");
  61. if (!fsub) {
  62. printf("Сначала введите субъекты\n");
  63. system("pause");
  64. }
  65. if (fsub) {
  66. printf("ВНИМАНИЕ!!! Перед началом ввода убедитесь, что вы перечислили все желаемые субъекты\n");
  67. printf("Выберете действие\n");
  68. printf("1 - задать новых соседей\n");
  69. printf("2 - продолжить ввод соседей\n");
  70. printf("3 - выйти из операции\n");
  71. int sum;
  72. scanf("%d", &sum);
  73. printf("\n");
  74. system("cls");
  75. switch (sum)
  76. {
  77. case 1:
  78. {
  79. bul = 1;
  80. fmatrica = fopen("matrica.txt", "w");
  81. int i = 0, j;
  82. char spisokSub[TOTAL][DLINA];
  83. for (int i = 0; i < TOTAL; i++)
  84. for (int j = 0; j < DLINA; j++)
  85. spisokSub[i][j] = 0;
  86. while (!feof(fsub)) {
  87. fgets(spisokSub[i], DLINA, fsub);
  88. for (j = 0; spisokSub[i][j] != '\n'; j++);
  89. spisokSub[i][j] = '\0';
  90.  
  91. /*if (spisokSub[i][0] != '\0')
  92. printf("%d)", i + 1);
  93. printf("%s", spisokSub[i]);
  94. printf("\n");*/
  95. i++;
  96. }
  97. i--;
  98. int kolvo1 = i;
  99. char k[DLINA];
  100. for (int i = 0; i < DLINA; i++)
  101. k[i] = 0;
  102.  
  103. //printf("\n");
  104. j = 0;
  105. for (kolvo = 0; kolvo < i; kolvo++) {
  106.  
  107. printf("Выберите через запятую (например, 1,2,10) цифры, под которыми указаны те субъекты, которые граничат с субъектом\n");
  108. printf("Если субъект ни с кем не граничит, введите цифру, под которой он сам указан\n");
  109. printf("Для выхода нажмите '0'\n");
  110. for (int isub = 0; isub < i; isub++) {
  111. if (spisokSub[isub][0] != '\0')
  112. printf("%d)", isub + 1);
  113. printf("%s", spisokSub[isub]);
  114. printf("\n");
  115. }
  116. printf("\n");
  117. char y = 0;
  118. printf("%s: ", spisokSub[kolvo]);
  119. while (y != '\n') {
  120. scanf("%s", &k);
  121. y = getchar();
  122. }
  123. int poysnenie[TOTAL];
  124. for (int n = 0; n < TOTAL; n++)
  125. poysnenie[n] = -1;
  126. int posMas = 0;
  127.  
  128. for (int p = 0; k[p] != '\0'; p++)
  129. if (k[p] != ','&&k[p] != ' '&&k[p] != '.'&&k[p] != '/'&&k[p] != 'б'&&k[p] != 'ю') {
  130. if (k[p] == '0')
  131. goto fon;
  132. poysnenie[posMas] = k[p] - 49;
  133. posMas++;
  134. A[kolvo][k[p] - 49] = 1;
  135. //A[k[p] - 49][kolvo] = 1;
  136. }
  137.  
  138. printf("%s: ", spisokSub[kolvo]);
  139. for (int n = 0; poysnenie[n] != -1; n++) {
  140. printf("%s", spisokSub[poysnenie[n]]);
  141. if (poysnenie[n + 1] != -1)
  142. printf(",");
  143. }
  144. int kor = 0;
  145. printf("\n");
  146. printf("\n");
  147. while (!kor) {
  148. printf("Проверьте введенные данные. Если все верно, нажмите '1', если нет, нажмите '0'\n");
  149. scanf("%d", &kor);
  150. if (!kor) {
  151. system("cls");
  152. for (int j = 0; j < i; j++)
  153. A[kolvo][j] = 0;
  154. for (int n = 0; n < TOTAL; n++)
  155. poysnenie[n] = -1;
  156. printf("Внимательно укажите соседей субъекта\n");
  157.  
  158. for (int isub = 0; isub < i; isub++) {
  159. if (spisokSub[isub][0] != '\0')
  160. printf("%d)", isub + 1);
  161. printf("%s", spisokSub[isub]);
  162. printf("\n");
  163. }
  164. printf("\n");
  165.  
  166. printf("%s: ", spisokSub[kolvo]);
  167. y = 0;
  168. while (y != '\n') {
  169. scanf("%s", &k);
  170. y = getchar();
  171. }
  172. posMas = 0;
  173. for (int p = 0; k[p] != '\0'; p++)
  174. if (k[p] != ','&&k[p] != ' '&&k[p] != '.'&&k[p] != '/'&&k[p] != 'б'&&k[p] != 'ю') {
  175. poysnenie[posMas] = k[p] - 49;
  176. posMas++;
  177. A[kolvo][k[p] - 49] = 1;
  178.  
  179. }
  180. printf("%s: ", spisokSub[kolvo]);
  181. for (int n = 0; poysnenie[n] != -1; n++) {
  182. printf("%s", spisokSub[poysnenie[n]]);
  183. if (poysnenie[n + 1] != -1)
  184. printf(",");
  185. }
  186. printf("\n");
  187. }
  188. printf("\n");
  189. }
  190. system("cls");
  191.  
  192. }
  193. fon:
  194. for (int i = 0; i < kolvo; i++) {
  195. for (int j = 0; j < kolvo1; j++) {
  196. printf("%d", A[i][j]);
  197. fprintf(fmatrica, "%d", A[i][j]);
  198. }
  199. printf("\n");
  200. fputs("\n", fmatrica);
  201. }
  202. system("pause");
  203. fclose(fmatrica);
  204. }
  205. break;
  206. case 2: {
  207. fmatrica = fopen("matrica.txt", "r");
  208. fsub = fopen("sub.txt", "r");
  209. int i = 0, j;
  210. char spisokSub[TOTAL][DLINA];
  211. for (int i = 0; i < TOTAL; i++)
  212. for (int j = 0; j < DLINA; j++)
  213. spisokSub[i][j] = 0;
  214. while (!feof(fsub)) {
  215. fgets(spisokSub[i], DLINA, fsub);
  216. for (j = 0; spisokSub[i][j] != '\n'; j++);
  217. spisokSub[i][j] = '\0';
  218. i++;
  219. }
  220. fclose(fsub);
  221. int kol = --i;
  222. int kolKonez = kol - 1;
  223. int l = kolKonez;
  224. i = 0, j = 0;
  225. int c;
  226. while (!feof(fmatrica)) {
  227. kolKonez = l;
  228. fscanf(fmatrica, "%d", &c);
  229. for (int k = 0; k <= kol; k++) {
  230. A[i][kolKonez] = c % 10;
  231. c = c / 10;
  232. kolKonez--;
  233. }
  234. i++;
  235. }
  236. int Ai = --i;
  237.  
  238. char k[DLINA];
  239. for (int i = 0; i < DLINA; i++)
  240. k[i] = 0;
  241. for (kolvo = Ai; kolvo < kol; kolvo++) {
  242. printf("Выберите через запятую (например, 1,2,10) цифры, под которыми указаны те субъекты, которые граничат с субъектом\n");
  243. printf("Если субъект ни с кем не граничит, введите цифру, под которой он сам указан\n");
  244. printf("Для выхода нажмите '0'\n");
  245. for (int isub = 0; isub < kol; isub++) {
  246. if (spisokSub[isub][0] != '\0')
  247. printf("%d)", isub + 1);
  248. printf("%s", spisokSub[isub]);
  249. printf("\n");
  250. }
  251. printf("\n");
  252. char y = 0;
  253. printf("%s: ", spisokSub[kolvo]);
  254. while (y != '\n') {
  255. scanf("%s", &k);
  256. y = getchar();
  257. }
  258. int poysnenie[TOTAL];
  259. for (int n = 0; n < TOTAL; n++)
  260. poysnenie[n] = -1;
  261. int posMas = 0;
  262.  
  263. for (int p = 0; k[p] != '\0'; p++)
  264. if (k[p] != ','&&k[p] != ' '&&k[p] != '.'&&k[p] != '/'&&k[p] != 'б'&&k[p] != 'ю') {
  265. if (k[p] == '0')
  266. goto fon2case;
  267. poysnenie[posMas] = k[p] - 49;
  268. posMas++;
  269. A[kolvo][k[p] - 49] = 1;
  270. //A[k[p] - 49][kolvo] = 1;
  271. }
  272.  
  273. printf("%s: ", spisokSub[kolvo]);
  274. for (int n = 0; poysnenie[n] != -1; n++) {
  275. printf("%s", spisokSub[poysnenie[n]]);
  276. if (poysnenie[n + 1] != -1)
  277. printf(",");
  278. }
  279. int kor = 0;
  280. printf("\n");
  281. printf("\n");
  282. while (!kor) {
  283. printf("Проверьте введенные данные. Если все верно, нажмите '1', если нет, нажмите '0'\n");
  284. scanf("%d", &kor);
  285. if (!kor) {
  286. system("cls");
  287. for (int j = 0; j < kol; j++)
  288. A[kolvo][j] = 0;
  289. for (int n = 0; n < TOTAL; n++)
  290. poysnenie[n] = -1;
  291. printf("Внимательно укажите соседей субъекта\n");
  292.  
  293. for (int isub = 0; isub < kol; isub++) {
  294. if (spisokSub[isub][0] != '\0')
  295. printf("%d)", isub + 1);
  296. printf("%s", spisokSub[isub]);
  297. printf("\n");
  298. }
  299. printf("\n");
  300.  
  301. printf("%s: ", spisokSub[kolvo]);
  302. y = 0;
  303. while (y != '\n') {
  304. scanf("%s", &k);
  305. y = getchar();
  306. }
  307. posMas = 0;
  308. for (int p = 0; k[p] != '\0'; p++)
  309. if (k[p] != ','&&k[p] != ' '&&k[p] != '.'&&k[p] != '/'&&k[p] != 'б'&&k[p] != 'ю') {
  310. poysnenie[posMas] = k[p] - 49;
  311. posMas++;
  312. A[kolvo][k[p] - 49] = 1;
  313.  
  314. }
  315. printf("%s: ", spisokSub[kolvo]);
  316. for (int n = 0; poysnenie[n] != -1; n++) {
  317. printf("%s", spisokSub[poysnenie[n]]);
  318. if (poysnenie[n + 1] != -1)
  319. printf(",");
  320. }
  321. printf("\n");
  322. }
  323. printf("\n");
  324. }
  325. system("cls");
  326.  
  327. }
  328. fon2case:
  329. feof(fmatrica);
  330. fmatrica = fopen("matrica.txt", "w");
  331. for (int i = 0; i < kolvo; i++) {
  332. for (int j = 0; j < kol; j++) {
  333. printf("%d", A[i][j]);
  334. fprintf(fmatrica, "%d", A[i][j]);
  335. }
  336. printf("\n");
  337. fputs("\n", fmatrica);
  338. }
  339. system("pause");
  340. fclose(fmatrica);
  341.  
  342. }
  343. break;
  344. case 3: return 0;
  345. }
  346. }
  347.  
  348.  
  349. return 0;
  350. }
  351.  
  352. void obrabotkaMatrisi() {
  353. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  354. //HWND hcon = GetConsoleWindow();
  355.  
  356. fmatrica = fopen("matrica.txt", "r");
  357. if (fmatrica&&bul) {
  358. fsub = fopen("sub.txt", "r");
  359. int i = 0, j;
  360. char spisokSub[TOTAL][DLINA];
  361. for (int i = 0; i < TOTAL; i++)
  362. for (int j = 0; j < DLINA; j++)
  363. spisokSub[i][j] = 0;
  364. while (!feof(fsub)) {
  365. fgets(spisokSub[i], DLINA, fsub);
  366. for (j = 0; spisokSub[i][j] != '\n'; j++);
  367. spisokSub[i][j] = '\0';
  368. i++;
  369. }
  370. fclose(fsub);
  371. int kol = --i;
  372. int kolKonez = kol - 1;
  373. int l = kolKonez;
  374. i = 0, j = 0;
  375. int c;
  376. while (!feof(fmatrica)) {
  377. kolKonez = l;
  378. fscanf(fmatrica, "%d", &c);
  379. for (int k = 0; k <= kol; k++) {
  380. A[i][kolKonez] = c % 10;
  381. c = c / 10;
  382. kolKonez--;
  383. }
  384. i++;
  385. }
  386. fclose(fmatrica);
  387. //int kolvocvetov = 2;
  388. for (int i = 0; i < kol; i++)
  389. for (int j = 1; j <= kol; j++)
  390. subcvet[i][j - 1] = j;
  391. for (i = 0; i < kol - 1; i++)
  392. for (j = i + 1; j < kol; j++)
  393. if (A[i][j] == 1) {
  394. if (cvetNaKarte[i] == 0 && cvetNaKarte[j] == 0) {
  395. cvetNaKarte[i] = subcvet[i][0];
  396. subcvet[i][0] = 0;
  397. cvetNaKarte[j] = subcvet[j][1];
  398. subcvet[j][0] = 0;
  399. subcvet[j][1] = 0;
  400. }
  401. else if (cvetNaKarte[i] == cvetNaKarte[j]) {
  402. for (int color = 0; color < kol; color++)
  403. if (subcvet[j][color] != 0) {
  404. cvetNaKarte[j] = subcvet[j][color];
  405. subcvet[j][color] = 0;
  406. if (color + 1 > kolvocvetov)
  407. kolvocvetov = color + 1;
  408. break;
  409. }
  410. }
  411. else if (cvetNaKarte[j] == 0) {
  412. subcvet[j][cvetNaKarte[i] - 1] = 0;
  413. for (int color = 0; color < kol; color++)
  414. if (subcvet[j][color] != 0 && subcvet[j][color] != cvetNaKarte[i]) {
  415. cvetNaKarte[j] = subcvet[j][color];
  416. subcvet[j][color] = 0;
  417. if (color + 1 > kolvocvetov)
  418. kolvocvetov = color + 1;
  419. break;
  420. }
  421. }
  422. else if (cvetNaKarte[i] == 0) {
  423. subcvet[i][cvetNaKarte[j] - 1] = 0;
  424. for (int color = 0; color < kol; color++)
  425. if (subcvet[i][color] != 0 && subcvet[i][color] != cvetNaKarte[j]) {
  426. cvetNaKarte[i] = subcvet[i][color];
  427. subcvet[i][color] = 0;
  428. if (color + 1 > kolvocvetov)
  429. kolvocvetov = color + 1;
  430. break;
  431. }
  432. }
  433. else subcvet[j][cvetNaKarte[i] - 1] = 0;
  434. }
  435. for (i = 0; i < kol; i++) {
  436. if (cvetNaKarte[i] == 0)
  437. cvetNaKarte[i] = subcvet[i][0];
  438. printf("%-20s ", spisokSub[i]);
  439. //printf("%d", cvetNaKarte[i]);
  440. switch (cvetNaKarte[i])
  441. {
  442. case 1: SetConsoleTextAttribute(hConsole, (WORD)((2 << 4) | 14)); printf("%d", cvetNaKarte[i]); printf("-ЖЕЛТЫЙ"); SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  443. break;
  444. case 2: SetConsoleTextAttribute(hConsole, (WORD)((2 << 4) | 4)); printf("%d", cvetNaKarte[i]); printf("-КРАСНЫЙ"); SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  445. break;
  446. case 3: SetConsoleTextAttribute(hConsole, (WORD)((2 << 4) | 7)); printf("%d", cvetNaKarte[i]); printf("-СЕРЫЙ"); SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  447. break;
  448. case 4: SetConsoleTextAttribute(hConsole, (WORD)((2 << 4) | 9)); printf("%d", cvetNaKarte[i]); printf("-ГОЛУБОЙ"); SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  449. break;
  450. }
  451. printf("\n");
  452. }
  453. printf("Было задействовано %d цвета(ов)\n", kolvocvetov);
  454. }
  455. else printf("Сначала введите соседей субъектов\n");
  456. system("pause");
  457. }
  458.  
  459. int main()
  460. {
  461. for (int i = 0; i < TOTAL; i++)
  462. for (int j = 0; j < TOTAL; j++)
  463. subcvet[i][j] = 0;
  464. for (int i = 0; i < TOTAL; i++)
  465. cvetNaKarte[i] = 0;
  466. for (int i = 0; i < TOTAL; i++)
  467. for (int j = 0; j < TOTAL; j++)
  468. A[i][j] = 0;
  469. // получение информации о консольном окне
  470. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  471. HWND hcon = GetConsoleWindow();
  472.  
  473. // программная установка консольного шрифта для отображения русского текста
  474. CONSOLE_FONT_INFO cfi;
  475. GetCurrentConsoleFont(hConsole, false, &cfi);
  476. COORD fs = GetConsoleFontSize(hConsole, cfi.nFont);
  477. PCONSOLE_FONT_INFOEX ccf = new CONSOLE_FONT_INFOEX;
  478. (*ccf).dwFontSize.X = 12;
  479. (*ccf).dwFontSize.Y = 20;
  480. (*ccf).nFont = 11;
  481. (*ccf).cbSize = sizeof(CONSOLE_FONT_INFOEX);
  482. ccf->FontWeight = 400;
  483. lstrcpyW((*ccf).FaceName, L"Lucida Console");
  484. (*ccf).FontFamily = FF_DONTCARE;
  485. bool b = SetCurrentConsoleFontEx(hConsole, false, ccf);
  486. fs = GetConsoleFontSize(hConsole, cfi.nFont);
  487.  
  488. // установка кодировки 1251 для отображения русского текста
  489. SetConsoleCP(1251);
  490. SetConsoleOutputCP(1251);
  491.  
  492. int n = 5; //кол-во пунктов меню
  493. COORD position[5];
  494. int punkt = 0;
  495. char names[5][30] = { "Указать субъекты", "Указать соседей для субъектов", "Просмотр карты", "Справка", "Выход" };
  496. do
  497. {
  498. int xmax, ymax;
  499.  
  500. // получение параметров окна
  501. PCONSOLE_SCREEN_BUFFER_INFO pwi = new CONSOLE_SCREEN_BUFFER_INFO;
  502. PWINDOWINFO pgwi = new WINDOWINFO;
  503. GetConsoleScreenBufferInfo(hConsole, pwi);
  504. GetWindowInfo(hcon, pgwi);
  505. xmax = pwi->dwSize.X;
  506. ymax = pwi->dwSize.Y;
  507.  
  508. int y0 = 7;
  509. for (int i = 0; i < n; i++)
  510. {
  511. position[i].X = (xmax - strlen(names[i])) / 2;
  512. position[i].Y = y0 + i;
  513. }
  514. SetConsoleTextAttribute(hConsole, BACKGROUND_GREEN); // цвет фона
  515. system("cls"); // очистка окна
  516. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN); // цвет символов и цвет фона
  517. char title[] = "КАРТА";
  518. COORD pos;
  519. pos.X = (xmax - strlen(title)) / 2;
  520. pos.Y = 5;
  521. SetConsoleCursorPosition(hConsole, pos);
  522. puts(title);
  523. for (int i = 0; i < 5; i++)
  524. {
  525. SetConsoleCursorPosition(hConsole, position[i]);
  526. puts(names[i]);
  527. }
  528. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_GREEN);
  529. SetConsoleCursorPosition(hConsole, position[punkt]); // выделение текущего пункта ярким цветом
  530. puts(names[punkt]);
  531. unsigned char ch;
  532. do
  533. {
  534. // обработка перемещения по меню клавишами со стрелками
  535. ch = getch();
  536. if (ch == 224)
  537. {
  538. ch = getch();
  539. switch (ch)
  540. {
  541. case 72:
  542. SetConsoleCursorPosition(hConsole, position[punkt]);
  543. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  544. puts(names[punkt]);
  545. punkt--;
  546. if (punkt < 0) punkt = 4;
  547. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_GREEN);
  548. SetConsoleCursorPosition(hConsole, position[punkt]);
  549. puts(names[punkt]); break;
  550. case 80:
  551. SetConsoleCursorPosition(hConsole, position[punkt]);
  552. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  553. puts(names[punkt]);
  554. punkt++;
  555. if (punkt > 4) punkt = 0;
  556. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_GREEN);
  557. SetConsoleCursorPosition(hConsole, position[punkt]);
  558. puts(names[punkt]); break;
  559. }
  560. }
  561. } while (ch != 13); // enter - выбор пункта меню
  562. switch (punkt)
  563. {
  564. case 0:
  565. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  566. system("cls");
  567. vvodsub();// вызов функции
  568. break;
  569. case 1:
  570. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  571. system("cls");
  572. vvodsosedey();// вызов функции
  573. break;
  574. case 2:
  575. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  576. system("cls");
  577. obrabotkaMatrisi();// вызов функции
  578. break;
  579. case 3:
  580. SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | BACKGROUND_GREEN);
  581. system("cls");
  582. printf("Уважаемый пользователь, чтобы программа работала без ошибок, внимательно изучите ниже приведенную инструкцию.\n");
  583. printf("1. Вам необходимо выбрать первый пункт меню (Указать субъекты) и ввести все желаемые субъекты.\n");
  584. printf("2. Теперь нужно для каждого субъекта ввести соседей (Указать соседей для субъектов). Учтите, что вы должны до этого ввести все желаемые субъекты.\n");
  585. printf("Во втором пункте меню во время указания соседей вы можете отслеживать введеные вами данные и в случае ошибки корректировать ввод\n");
  586. printf("3. Чтобы посмотреть, какому субъекту соответствует какой цвет, нужно выбрать третий пункт меню (Просмотр карты).\n");
  587. printf("\n");
  588. printf("После выхода из программы все данные сохраняются, поэтому вы можете неоднократно просматривать карту\n");
  589. printf("Удачи в использовании!\n");
  590. system("pause");
  591. break;
  592. }
  593. } while (punkt != 4);
  594. return 0;
  595. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement