Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.49 KB | None | 0 0
  1. program LABORATORNAYA_3;
  2.  
  3. uses
  4. CRT;
  5. // Parametry okon
  6. const
  7. x1 = 3;
  8. y1 = 3;
  9. x2 = 78;
  10. y2 = 23;
  11. err1 = 35;
  12. err2 = 18;
  13. backcolor = lightgray;
  14. // Okoshki
  15.  
  16. procedure windowframe(x, y, m, n: byte);
  17. var
  18. i, j: byte;
  19. begin
  20. window(x - 2, y - 2, x + m - 1, y + n - 1);
  21. clrscr;
  22. textbackground(black);
  23. clrscr;
  24. window(x - 1, y - 1, x + m - 2, y + n - 2);
  25. textbackground(lightgray);
  26. clrscr;
  27. textcolor(black);
  28. gotoxy(x - 1, y - 1);
  29. window(x - 1, y - 1, x - 1, y - 1);
  30. write(#201);
  31. for i := x to x + m - 3 do
  32. begin
  33. window(i, y - 1, i, y - 1);
  34. gotoxy(i, y - 1);
  35. write(#205);
  36. end;
  37. for j := y to y + n - 3 do
  38. begin
  39. gotoxy(x - 1, j);
  40. window(x - 1, j, x - 1, j);
  41. write(#186);
  42. window(x + m - 2, j, x + m - 2, j);
  43. gotoxy(x + m - 2, j);
  44. write(#186);
  45. end;
  46. for i := x to x + m - 2 do
  47. begin
  48. window(i, y + n - 2, i, y + n - 2);
  49. gotoxy(i, y + n - 2);
  50. write(#205);
  51. end;
  52. gotoxy(x - 1, y + n - 2);
  53. window(x - 1, y + n - 2, x - 1, y + n - 2);
  54. write(#200);
  55. gotoxy(x + m - 2, y - 1);
  56. window(x + m - 2, y - 1, x + m - 2, y - 1);
  57. write(#187);
  58. gotoxy(x + m - 2, y + n - 2);
  59. window(x + m - 2, y + n - 2, x + m - 2, y + n - 2);
  60. write(#188);
  61. window(x, y, x + m - 3, y + n - 3);
  62. gotoxy(1, 1);
  63. end;
  64. // Proverka na . i -
  65. function Symbolcheck(s: string): boolean;
  66. var
  67. mistake: boolean;
  68. err, i: integer;
  69. begin
  70. err := 0;
  71. mistake := true;
  72. for i := 1 to length(s) do
  73. if not ((s[i] = '.') or (s[i] = '-') or (s[i] = ' ')) then
  74. inc(err);
  75. if err = 0 then mistake := false;
  76. Symbolcheck := mistake;
  77. end;
  78. //Errorwindow
  79. procedure Errorwindow(x1, y1: integer);
  80. var
  81. i, j: byte;
  82. begin
  83. windowframe(x1, y1, 11, 5);
  84. textcolor(red);
  85. //ENDFRAME
  86. write(' !ERROR! ');
  87. write('Press any');
  88. write(' key!');
  89. readkey();
  90. window(x1, y1, x1 + 10, y1 + 5);
  91. textbackground(backcolor);
  92. clrscr;
  93. Textcolor(black);
  94. end;
  95. //Alphabeet decode
  96. function Decode(s: string): string;
  97. var
  98. letter: char;
  99. begin
  100. case s of
  101. '.-': letter := 'A';
  102. '-...': letter := 'B';
  103. '-.-.': letter := 'C';
  104. '-..': letter := 'D';
  105. '.': letter := 'E';
  106. '..-.': letter := 'F';
  107. '--.': letter := 'G';
  108. '....': letter := 'H';
  109. '..': letter := 'I';
  110. '.---': letter := 'J';
  111. '-.-': letter := 'K';
  112. '.-..': letter := 'L';
  113. '--': letter := 'M';
  114. '-.': letter := 'N';
  115. '---': letter := 'O';
  116. '.--.': letter := 'P';
  117. '--.-': letter := 'Q';
  118. '.-.': letter := 'R';
  119. '...': letter := 'S';
  120. '-': letter := 'T';
  121. '..-': letter := 'U';
  122. '...-': letter := 'V';
  123. '.--': letter := 'W';
  124. '-..-': letter := 'X';
  125. '-.--': letter := 'Y';
  126. '--..': letter := 'Z';
  127. '.----': letter := '1';
  128. '..---': letter := '2';
  129. '...--': letter := '3';
  130. '....-': letter := '4';
  131. '.....': letter := '5';
  132. '-....': letter := '6';
  133. '--...': letter := '7';
  134. '---..': letter := '8';
  135. '----.': letter := '9';
  136. '-----': letter := '0'
  137. else letter := '*';
  138. end;
  139. Decode := letter;
  140. end;
  141. //Variables
  142. var
  143. s, letter, output: string;
  144. spaces: byte;
  145. i, io: integer;
  146. useranswer: char;
  147. finish, alphabeet: boolean;
  148.  
  149. begin
  150. repeat
  151. //Manual
  152. windowframe(x1, y1, x2, y2);
  153. windowframe(23, 6, 35, 17);
  154. gotoxy(7, 1);
  155. write('Good news everyone!');
  156. gotoxy(2, 2);
  157. write('I wrote the program, that will');
  158. gotoxy(1, 3);
  159. write('convert text from Morse alphabeet');
  160. gotoxy(6, 4);
  161. write('to normal text form.');
  162. gotoxy(1, 5);
  163. write('To type text use dots and dashes.');
  164. gotoxy(3, 6);
  165. write('If you need Morse alphabeet');
  166. gotoxy(7, 7);
  167. write('press Y, else press N.');
  168. gotoxy(7, 8);
  169. write('Good luck, have fun!');
  170. gotoxy(1, 12);
  171. write('Letters are separated by space,');
  172. gotoxy(1, 13);
  173. write('words are separated by two spaces');
  174. gotoxy(1, 14);
  175. textcolor(red);
  176. write('Note, if letter isnt convertable');
  177. gotoxy(4, 15);
  178. write('the program will type "*"!');
  179. textcolor(black);
  180. repeat
  181. {$I-}{$R-}useranswer := readkey;{$I+}{$R+}
  182. Io := ioresult;
  183. until (io = 0) and ((useranswer = 'Y') or (useranswer = 'N') or (useranswer = 'n') or (useranswer = 'y') or (useranswer = '­') or (useranswer = 'Ќ') or (useranswer = 'в') or (useranswer = '’'));
  184. if ((useranswer = 'N') or (useranswer = 'n') or (useranswer = '’') or (useranswer = 'в')) then alphabeet := false else alphabeet := true;
  185.  
  186.  
  187. //Algoritm
  188. windowframe(x1, y1, x2, y2);
  189. repeat
  190. if alphabeet then begin
  191. windowframe(42, 3, 39, 23);
  192. writeln(' .-: "A" ', #179, ' ...: "S" ');
  193. writeln(' -...: "B" ', #179, ' -: "T" ');
  194. writeln(' -.-.: "C" ', #179, ' ..-: "U" ');
  195. writeln(' -..: "D" ', #179, ' ...-: "V" ');
  196. writeln(' .: "E" ', #179, ' .--: "W" ');
  197. writeln(' ..-.: "F" ', #179, ' -..-: "X" ');
  198. writeln(' --.: "G" ', #179, ' -.--: "Y" ');
  199. writeln(' ....: "H" ', #179, ' --..: "Z" ');
  200. writeln(' ..: "I" ', #179, ' .----: "1" ');
  201. writeln(' .---: "J" ', #179, ' ..---: "2" ');
  202. writeln(' -.-: "K" ', #179, ' ...--: "3" ');
  203. writeln(' .-..: "L" ', #179, ' ....-: "4" ');
  204. writeln(' --: "M" ', #179, ' .....: "5" ');
  205. writeln(' -.: "N" ', #179, ' -....: "6" ');
  206. writeln(' ---: "O" ', #179, ' --...: "7" ');
  207. writeln(' .--.: "P" ', #179, ' ---..: "8" ');
  208. writeln(' --.-: "Q" ', #179, ' ----.: "9" ');
  209. writeln(' .-.: "R" ', #179, ' -----: "0" ');
  210. windowframe(3, 3, 38, 23);
  211. end else
  212. windowframe(x1, y1, x2, y2);
  213. write('Input: ');
  214. readln(s);
  215. if Symbolcheck(s) then errorwindow(err1, err2);
  216. until not Symbolcheck(s);
  217. letter := '';
  218. output := '';
  219. spaces := 0;
  220. for i := 1 to length(s) do
  221. begin
  222. if s[i] = ' '
  223. then
  224. inc(spaces)
  225. else
  226. if spaces = 0
  227. then
  228. letter := letter + s[i]
  229. else
  230. begin
  231. output := output + Decode(letter);
  232. letter := s[i];
  233. if spaces >= 2 then output := output + ' ';
  234. spaces := 0;
  235. end;
  236. end;
  237. if s[length(s)] <> ' ' then
  238. output := output + Decode(letter);
  239.  
  240. windowframe(x1, y1, x2, y2);
  241. windowframe(3, 3, 38, 23);
  242. write('Input: ', s);
  243. windowframe(42, 3, 39, 23);
  244. write('Output: ', output);
  245.  
  246.  
  247. readkey();
  248.  
  249. //Repeating
  250. windowframe(x1, y1, x2, y2);
  251. clrscr;
  252. windowframe(28, 8, 30, 7);
  253. write('Do you want to repeat?');
  254. window(38, 11, 50, 11);
  255. gotoxy(38, 11);
  256. write('Yes/No?');
  257. gotoxy(37, 12);
  258. window(37, 12, 42, 12);
  259. repeat
  260. {$I-}{$R-}useranswer := readkey;{$I+}{$R+}
  261. Io := ioresult;
  262. until (io = 0) and ((useranswer = 'Y') or (useranswer = 'N') or (useranswer = 'n') or (useranswer = 'y') or (useranswer = '­') or (useranswer = 'Ќ') or (useranswer = 'в') or (useranswer = '’'));
  263. if ((useranswer = 'N') or (useranswer = 'n') or (useranswer = '’') or (useranswer = 'в')) then finish := true else finish := false;
  264. until finish;
  265. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement