В чём можно запустить эту программу? - Pascal

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

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

В чём это можно запустить
Листинг программы
  1. {uses crt;}
  2. const
  3. n=100;
  4. type
  5. used=array[1..n] of boolean;
  6. var
  7. t:byte;
  8. graf:array[1..n,1..n] of byte;
  9. cherga:array[1..n] of byte;
  10. d1,d2,u:used;
  11. i,j,k,g,h:integer;
  12. dvodolnyj:boolean;
  13.  
  14. procedure rec(x:byte; first:boolean);
  15. begin
  16. if dvodolnyj then
  17. begin
  18. u[x]:=true;
  19. for i:=1 to n do
  20. if graf[x,i]=1 then
  21. begin
  22. if not(u[i]) then
  23. begin
  24. if first then d2[i]:=true
  25. else d1[i]:=true;
  26. rec(i,not first);
  27. end
  28. else if (d1[x] AND d1[i]) OR (d2[x] AND d2[i]) then
  29. begin
  30. writeln('Graf NE dvodolnyj!');
  31. dvodolnyj:=false;
  32. readln;
  33. exit;
  34. end;
  35. end;
  36. end;
  37. end;
  38.  
  39. procedure vGlyb;
  40. begin
  41. dvodolnyj:=true;
  42. d1[1]:=true;
  43. rec(1,true);
  44. if dvodolnyj then
  45. begin
  46. writeln('Graf dvodolnyj');
  47. for i:=1 to n do
  48. if d1[i] then write(i:2);
  49. writeln;
  50. for i:=1 to n do
  51. if d2[i] then write(i:2);
  52. readln;
  53. end;
  54. end;
  55. procedure zero_Vglyb;
  56. begin
  57. t:=1;
  58. for i:=1 to n do
  59. begin
  60. u[i]:=false;
  61. d1[i]:=false;
  62. d2[i]:=false;
  63. end;
  64. for i:=1 to n do
  65. for j:=1 to n do graf[i,j]:=0;
  66. end;
  67. procedure push(x:byte);
  68. var
  69. i:integer;
  70. begin
  71. cherga[t]:=x;
  72. inc(t);
  73. end;
  74. function pop:byte;
  75. var
  76. i,x:byte;
  77. begin
  78. x:=cherga[1];
  79. for i:=2 to n do
  80. cherga[i-1]:=cherga[i];
  81. dec(t);
  82. pop:=x;
  83. end;
  84. function emptyqq:boolean;
  85. begin
  86. if t=1 then emptyqq:=true
  87. else emptyqq:=false;
  88. end;
  89. procedure vShyrynu;
  90. var
  91. x,i,j:byte;
  92. begin
  93. dvodolnyj:=true;
  94. push(1);
  95. d1[1]:=true;
  96. u[1]:=true;
  97. while not emptyqq do
  98. begin
  99. x:=pop;
  100. for i:=1 to n do
  101. if graf[x,i]=1 then
  102. begin
  103. if not(u[i]) then
  104. begin
  105. if d1[x] then d2[i]:=true
  106. else d1[i]:=true;
  107. u[i]:=true;
  108. push(i);
  109. end
  110. else if (d1[x] AND d1[i]) OR (d2[x] AND d2[i]) then
  111. begin
  112. writeln('Graf NE dvodolnyj!');
  113. readln;
  114. exit;
  115. end;
  116. end;
  117. end;
  118. writeln('Graf dvodolnyj');
  119. for i:=1 to n do
  120. if d1[i] then write(i:2);
  121. writeln;
  122. for i:=1 to n do
  123. if d2[i] then write(i:2);
  124. readln;
  125. end;
  126. procedure zero_Vshur;
  127. var
  128. i,j:byte;
  129. begin
  130. t:=1;
  131. for i:=1 to n do
  132. begin
  133. u[i]:=false;
  134. d1[i]:=false;
  135. d2[i]:=false;
  136. end;
  137. for i:=1 to n do
  138. begin
  139. cherga[i]:=0;
  140. for j:=1 to n do graf[i,j]:=0;
  141. end;
  142. end;
  143. procedure test;
  144. var k:integer;
  145. begin
  146. Write('Vvedit kilkist reber: '); readln(k);
  147. for i:=1 to k do
  148. begin
  149. Write('Vvedit cherez probil vershunu ',i,' rebra: '); Readln(g,h);
  150. graf[g,h]:=1;
  151. graf[h,g]:=1;
  152. end;
  153. end;
  154. var key:char;
  155. BEGIN
  156. while key<>'3' do
  157. begin
  158. { clrscr;}
  159. writeln('1. V SHURUNY');
  160. writeln('2. V GLYBUNY');
  161. writeln('3. EXIT');
  162. write('>>>');
  163. read(key);
  164. case key of
  165. '1':begin
  166. { clrscr;}
  167. zero_Vglyb;
  168. test;
  169. vGlyb;
  170. end;
  171. '2':begin
  172. {clrscr;}
  173. zero_Vshur;
  174. test;
  175. vShyrynu;
  176. end;
  177. end;
  178. end;
  179. END.

Решение задачи: «В чём можно запустить эту программу?»

textual
Листинг программы
  1. {uses crt;}
  2. const
  3.   n = 100;
  4.  
  5. type
  6.   used = array[1..n] of boolean;
  7.  
  8. var
  9.   t: byte;
  10.   graf: array[1..n, 1..n] of byte;
  11.   cherga: array[1..n] of byte;
  12.   d1, d2, u: used;
  13.   i, j, k, g, h: integer;
  14.   dvodolnyj: boolean;
  15.  
  16.  
  17. procedure rec(x: byte; first: boolean);
  18. var
  19.   i: integer;
  20. begin
  21.   if dvodolnyj then
  22.   begin
  23.     u[x] := true;
  24.     for i := 1 to n do
  25.       if graf[x, i] = 1 then
  26.       begin
  27.         if not (u[i])  then
  28.         begin
  29.           if first then d2[i] := true
  30.           else d1[i] := true;
  31.           rec(i, not first);
  32.         end
  33.         else if (d1[x] AND d1[i]) OR (d2[x] AND d2[i]) then
  34.         begin
  35.           writeln('Graf NE dvodolnyj!');
  36.           dvodolnyj := false;
  37.           readln;
  38.           exit;
  39.         end;
  40.       end;
  41.   end;
  42. end;
  43.  
  44.  
  45. procedure vGlyb;
  46. var
  47.   i: integer;
  48. begin
  49.   dvodolnyj := true;
  50.   d1[1] := true;
  51.   rec(1, true);
  52.   if dvodolnyj then
  53.   begin
  54.     writeln('Graf dvodolnyj');
  55.     for i := 1 to n do
  56.       if d1[i] then write(i:2);
  57.     writeln;
  58.     for i := 1 to n do
  59.       if d2[i] then write(i:2);
  60.     readln;
  61.   end;
  62. end;
  63.  
  64. procedure zero_Vglyb;
  65. var
  66.   i, j: integer;
  67. begin
  68.   t := 1;
  69.   for i := 1 to n do
  70.   begin
  71.     u[i] := false;
  72.     d1[i] := false;
  73.     d2[i] := false;
  74.   end;
  75.   for i := 1 to n do
  76.     for j := 1 to n do graf[i, j] := 0;
  77. end;
  78.  
  79. procedure push(x: byte);
  80. var
  81.   i: integer;
  82. begin
  83.   cherga[t] := x;
  84.   inc(t);
  85. end;
  86.  
  87. function pop: byte;
  88. var
  89.   i, x: byte;
  90. begin
  91.   x := cherga[1];
  92.   for i := 2 to n do
  93.     cherga[i - 1] := cherga[i];
  94.   dec(t);
  95.   pop := x;
  96. end;
  97.  
  98. function emptyqq: boolean;
  99. begin
  100.   if t = 1 then emptyqq := true
  101.   else emptyqq := false;
  102. end;
  103.  
  104. procedure vShyrynu;
  105. var
  106.   x, i, j: byte;
  107. begin
  108.   dvodolnyj := true;
  109.   push(1);
  110.   d1[1] := true;
  111.   u[1] := true;
  112.   while not emptyqq do
  113.   begin
  114.     x := pop;
  115.     for i := 1 to n do
  116.       if graf[x, i] = 1 then
  117.       begin
  118.         if not (u[i]) then
  119.         begin
  120.           if d1[x] then d2[i] := true
  121.           else d1[i] := true;
  122.           u[i] := true;
  123.           push(i);
  124.         end
  125.         else if (d1[x] AND d1[i]) OR (d2[x] AND d2[i]) then
  126.         begin
  127.           writeln('Graf NE dvodolnyj!');
  128.           readln;
  129.           exit;
  130.         end;
  131.       end;
  132.   end;
  133.   writeln('Graf dvodolnyj');
  134.   for i := 1 to n do
  135.     if d1[i] then write(i:2);
  136.   writeln;
  137.   for i := 1 to n do
  138.     if d2[i] then write(i:2);
  139.   readln;
  140. end;
  141.  
  142. procedure zero_Vshur;
  143. var
  144.   i, j: byte;
  145. begin
  146.   t := 1;
  147.   for i := 1 to n do
  148.   begin
  149.     u[i] := false;
  150.     d1[i] := false;
  151.     d2[i] := false;
  152.   end;
  153.   for i := 1 to n do
  154.   begin
  155.     cherga[i] := 0;
  156.     for j := 1 to n do graf[i, j] := 0;
  157.   end;
  158. end;
  159.  
  160. procedure test;
  161. var
  162.   k, i: integer;
  163. begin
  164.   Write('Vvedit kilkist reber: ');readln(k);
  165.   for i := 1 to k do
  166.   begin
  167.     Write('Vvedit cherez probil vershunu ', i, ' rebra: ');Readln(g, h);
  168.     graf[g, h] := 1;
  169.     graf[h, g] := 1;
  170.   end;
  171. end;
  172.  
  173. var
  174.   key: char;
  175.  
  176. begin
  177.   while key <> '3' do
  178.   begin
  179.     { clrscr;}
  180.     writeln('1. V SHURUNY');
  181.     writeln('2. V GLYBUNY');
  182.     writeln('3. EXIT');
  183.     write('>>>');
  184.     read(key);
  185.     case key of
  186.       '1':
  187.         begin
  188.           { clrscr;}
  189.           zero_Vglyb;
  190.           test;
  191.           vGlyb;
  192.         end;
  193.       '2':
  194.         begin
  195.           {clrscr;}
  196.           zero_Vshur;
  197.           test;
  198.           vShyrynu;
  199.         end;
  200.     end;
  201.   end;
  202.  
  203. end.

Объяснение кода листинга программы

  1. Объявляются константа n со значением 100 и тип used - массив boolean от 1 до n
  2. Объявляются переменные: t - байт, graf - массив от 1 до n и от 1 до n байтов, cherga - массив от 1 до n байтов, d1, d2, u - массив used, i, j, k, g, h - целые числа, dvodolnyj - булево значение
  3. Объявляются процедуры: rec, vGlyb, zero_Vglyb, push, pop, emptyqq, vShyrynu, zero_Vshur, test
  4. Объявляется переменная key - символьное значение
  5. В цикле while выполняются действия пока значение переменной key не равно '3'
  6. Выполняется вывод на экран пунктов меню и ввод значения key (выбор пункта меню)
  7. В зависимости от выбранного пункта выполняются различные процедуры: zero_Vglyb, test, vGlyb, zero_Vshur, vShyrynu
  8. Конец программы.

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


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

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

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

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

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

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