fork download
  1. program Lab1_Variant23;
  2.  
  3. uses SysUtils;
  4.  
  5. const
  6. AlphUp =
  7. 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  8.  
  9. AlphLow =
  10. 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
  11.  
  12. SymbTable =
  13. 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ' +
  14. '0123456789' +
  15. 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
  16.  
  17. function IsDigit(C: Char): Boolean;
  18. begin
  19. IsDigit := (C >= '0') and (C <= '9');
  20. end;
  21.  
  22. function IsUpperCyr(C: Char): Boolean;
  23. begin
  24. IsUpperCyr := Pos(C, AlphUp) > 0;
  25. end;
  26.  
  27. function IsLowerCyr(C: Char): Boolean;
  28. begin
  29. IsLowerCyr := Pos(C, AlphLow) > 0;
  30. end;
  31.  
  32. function Prov1(const S: String): Byte;
  33. var
  34. i: Integer;
  35. begin
  36.  
  37. if Length(S)=0 then
  38. begin
  39. Prov1:=1;
  40. Exit;
  41. end;
  42.  
  43. for i:=1 to Length(S) do
  44. if not (
  45. IsDigit(S[i])
  46. or
  47. IsUpperCyr(S[i])
  48. or
  49. IsLowerCyr(S[i])
  50. ) then
  51. begin
  52. Prov1:=2;
  53. Exit;
  54. end;
  55.  
  56. Prov1:=0;
  57. end;
  58.  
  59. function Prov2(const S: String): Byte;
  60. var
  61. i: Integer;
  62. begin
  63.  
  64. if Length(S)=0 then
  65. begin
  66. Prov2:=1;
  67. Exit;
  68. end;
  69.  
  70. for i:=1 to Length(S) do
  71. if Pos(S[i],SymbTable)=0 then
  72. begin
  73. Prov2:=2;
  74. Exit;
  75. end;
  76.  
  77. Prov2:=0;
  78. end;
  79.  
  80. procedure Sort1(var S: String);
  81. var
  82. i,z,len : Integer;
  83. flag : Boolean;
  84. ch : Char;
  85. begin
  86.  
  87. len:=Length(S);
  88. z:=1;
  89.  
  90. repeat
  91.  
  92. flag:=True;
  93.  
  94. for i:=1 to len-z do
  95.  
  96. if
  97.  
  98. (IsDigit(S[i]) and IsUpperCyr(S[i+1]))
  99.  
  100. or
  101.  
  102. (IsLowerCyr(S[i]) and
  103. (IsUpperCyr(S[i+1]) or IsDigit(S[i+1])))
  104.  
  105. or
  106.  
  107. (
  108. IsUpperCyr(S[i])
  109. and
  110. IsUpperCyr(S[i+1])
  111. and
  112. (
  113. Pos(S[i],AlphUp)
  114. >
  115. Pos(S[i+1],AlphUp)
  116. )
  117. )
  118.  
  119. then
  120. begin
  121.  
  122. ch:=S[i];
  123. S[i]:=S[i+1];
  124. S[i+1]:=ch;
  125.  
  126. flag:=False;
  127.  
  128. end;
  129.  
  130. Inc(z);
  131.  
  132. until flag or (z=len);
  133.  
  134. end;
  135.  
  136. procedure Sort2(var S: String);
  137. var
  138. i,z,len : Integer;
  139. flag : Boolean;
  140. ch : Char;
  141. begin
  142.  
  143. len:=Length(S);
  144. z:=1;
  145.  
  146. repeat
  147.  
  148. flag:=True;
  149.  
  150. for i:=1 to len-z do
  151.  
  152. if
  153.  
  154. (
  155. Pos(S[i],SymbTable)
  156. >
  157. Pos(S[i+1],SymbTable)
  158. )
  159.  
  160. and
  161.  
  162. not
  163. (
  164. IsDigit(S[i])
  165. and
  166. IsDigit(S[i+1])
  167. )
  168.  
  169. and
  170.  
  171. not
  172. (
  173. IsLowerCyr(S[i])
  174. and
  175. IsLowerCyr(S[i+1])
  176. )
  177.  
  178. then
  179. begin
  180.  
  181. ch:=S[i];
  182. S[i]:=S[i+1];
  183. S[i+1]:=ch;
  184.  
  185. flag:=False;
  186.  
  187. end;
  188.  
  189. Inc(z);
  190.  
  191. until flag or (z=len);
  192.  
  193. end;
  194.  
  195. var
  196. S,S1,S2 : String;
  197. Nom : Byte;
  198.  
  199. begin
  200.  
  201. Writeln('Введите строку');
  202. Readln(S);
  203.  
  204. S1:=S;
  205. S2:=S;
  206.  
  207. Writeln;
  208. Writeln('Исходная строка: "',S,'"');
  209.  
  210. Writeln;
  211. Writeln('Метод 1');
  212.  
  213. Nom:=Prov1(S1);
  214.  
  215. case Nom of
  216.  
  217. 1:
  218. Writeln('Пустая строка');
  219.  
  220. 2:
  221. Writeln('Некорректные символы');
  222.  
  223. else
  224. begin
  225. Sort1(S1);
  226. Writeln('Результат: "',S1,'"');
  227. end;
  228.  
  229. end;
  230.  
  231. Writeln;
  232. Writeln('Метод 2');
  233.  
  234. Nom:=Prov2(S2);
  235.  
  236. case Nom of
  237.  
  238. 1:
  239. Writeln('Пустая строка');
  240.  
  241. 2:
  242. Writeln('Некорректные символы');
  243.  
  244. else
  245. begin
  246. Sort2(S2);
  247. Writeln('Результат: "',S2,'"');
  248. end;
  249.  
  250. end;
  251.  
  252. end.
Success #stdin #stdout 0.01s 5324KB
stdin
12345
stdout
Введите строку

Исходная строка: "12345"

Метод 1
Результат: "12345"

Метод 2
Результат: "12345"