Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program LABORATORNAYA_3;
- uses
- CRT;
- // Parametry okon
- const
- x1 = 3;
- y1 = 3;
- x2 = 78;
- y2 = 23;
- err1 = 35;
- err2 = 18;
- backcolor = lightgray;
- // Okoshki
- procedure windowframe(x, y, m, n: byte);
- var
- i, j: byte;
- begin
- window(x - 2, y - 2, x + m - 1, y + n - 1);
- clrscr;
- textbackground(black);
- clrscr;
- window(x - 1, y - 1, x + m - 2, y + n - 2);
- textbackground(lightgray);
- clrscr;
- textcolor(black);
- gotoxy(x - 1, y - 1);
- window(x - 1, y - 1, x - 1, y - 1);
- write(#201);
- for i := x to x + m - 3 do
- begin
- window(i, y - 1, i, y - 1);
- gotoxy(i, y - 1);
- write(#205);
- end;
- for j := y to y + n - 3 do
- begin
- gotoxy(x - 1, j);
- window(x - 1, j, x - 1, j);
- write(#186);
- window(x + m - 2, j, x + m - 2, j);
- gotoxy(x + m - 2, j);
- write(#186);
- end;
- for i := x to x + m - 2 do
- begin
- window(i, y + n - 2, i, y + n - 2);
- gotoxy(i, y + n - 2);
- write(#205);
- end;
- gotoxy(x - 1, y + n - 2);
- window(x - 1, y + n - 2, x - 1, y + n - 2);
- write(#200);
- gotoxy(x + m - 2, y - 1);
- window(x + m - 2, y - 1, x + m - 2, y - 1);
- write(#187);
- gotoxy(x + m - 2, y + n - 2);
- window(x + m - 2, y + n - 2, x + m - 2, y + n - 2);
- write(#188);
- window(x, y, x + m - 3, y + n - 3);
- gotoxy(1, 1);
- end;
- // Proverka na . i -
- function Symbolcheck(s: string): boolean;
- var
- mistake: boolean;
- err, i: integer;
- begin
- err := 0;
- mistake := true;
- for i := 1 to length(s) do
- if not ((s[i] = '.') or (s[i] = '-') or (s[i] = ' ')) then
- inc(err);
- if err = 0 then mistake := false;
- Symbolcheck := mistake;
- end;
- //Errorwindow
- procedure Errorwindow(x1, y1: integer);
- var
- i, j: byte;
- begin
- windowframe(x1, y1, 11, 5);
- textcolor(red);
- //ENDFRAME
- write(' !ERROR! ');
- write('Press any');
- write(' key!');
- readkey();
- window(x1, y1, x1 + 10, y1 + 5);
- textbackground(backcolor);
- clrscr;
- Textcolor(black);
- end;
- //Alphabeet decode
- function Decode(s: string): string;
- var
- letter: char;
- begin
- case s of
- '.-': letter := 'A';
- '-...': letter := 'B';
- '-.-.': letter := 'C';
- '-..': letter := 'D';
- '.': letter := 'E';
- '..-.': letter := 'F';
- '--.': letter := 'G';
- '....': letter := 'H';
- '..': letter := 'I';
- '.---': letter := 'J';
- '-.-': letter := 'K';
- '.-..': letter := 'L';
- '--': letter := 'M';
- '-.': letter := 'N';
- '---': letter := 'O';
- '.--.': letter := 'P';
- '--.-': letter := 'Q';
- '.-.': letter := 'R';
- '...': letter := 'S';
- '-': letter := 'T';
- '..-': letter := 'U';
- '...-': letter := 'V';
- '.--': letter := 'W';
- '-..-': letter := 'X';
- '-.--': letter := 'Y';
- '--..': letter := 'Z';
- '.----': letter := '1';
- '..---': letter := '2';
- '...--': letter := '3';
- '....-': letter := '4';
- '.....': letter := '5';
- '-....': letter := '6';
- '--...': letter := '7';
- '---..': letter := '8';
- '----.': letter := '9';
- '-----': letter := '0'
- else letter := '*';
- end;
- Decode := letter;
- end;
- //Variables
- var
- s, letter, output: string;
- spaces: byte;
- i, io: integer;
- useranswer: char;
- finish, alphabeet: boolean;
- begin
- repeat
- //Manual
- windowframe(x1, y1, x2, y2);
- windowframe(23, 6, 35, 17);
- gotoxy(7, 1);
- write('Good news everyone!');
- gotoxy(2, 2);
- write('I wrote the program, that will');
- gotoxy(1, 3);
- write('convert text from Morse alphabeet');
- gotoxy(6, 4);
- write('to normal text form.');
- gotoxy(1, 5);
- write('To type text use dots and dashes.');
- gotoxy(3, 6);
- write('If you need Morse alphabeet');
- gotoxy(7, 7);
- write('press Y, else press N.');
- gotoxy(7, 8);
- write('Good luck, have fun!');
- gotoxy(1, 12);
- write('Letters are separated by space,');
- gotoxy(1, 13);
- write('words are separated by two spaces');
- gotoxy(1, 14);
- textcolor(red);
- write('Note, if letter isnt convertable');
- gotoxy(4, 15);
- write('the program will type "*"!');
- textcolor(black);
- repeat
- {$I-}{$R-}useranswer := readkey;{$I+}{$R+}
- Io := ioresult;
- until (io = 0) and ((useranswer = 'Y') or (useranswer = 'N') or (useranswer = 'n') or (useranswer = 'y') or (useranswer = '') or (useranswer = 'Ќ') or (useranswer = 'в') or (useranswer = '’'));
- if ((useranswer = 'N') or (useranswer = 'n') or (useranswer = '’') or (useranswer = 'в')) then alphabeet := false else alphabeet := true;
- //Algoritm
- windowframe(x1, y1, x2, y2);
- repeat
- if alphabeet then begin
- windowframe(42, 3, 39, 23);
- writeln(' .-: "A" ', #179, ' ...: "S" ');
- writeln(' -...: "B" ', #179, ' -: "T" ');
- writeln(' -.-.: "C" ', #179, ' ..-: "U" ');
- writeln(' -..: "D" ', #179, ' ...-: "V" ');
- writeln(' .: "E" ', #179, ' .--: "W" ');
- writeln(' ..-.: "F" ', #179, ' -..-: "X" ');
- writeln(' --.: "G" ', #179, ' -.--: "Y" ');
- writeln(' ....: "H" ', #179, ' --..: "Z" ');
- writeln(' ..: "I" ', #179, ' .----: "1" ');
- writeln(' .---: "J" ', #179, ' ..---: "2" ');
- writeln(' -.-: "K" ', #179, ' ...--: "3" ');
- writeln(' .-..: "L" ', #179, ' ....-: "4" ');
- writeln(' --: "M" ', #179, ' .....: "5" ');
- writeln(' -.: "N" ', #179, ' -....: "6" ');
- writeln(' ---: "O" ', #179, ' --...: "7" ');
- writeln(' .--.: "P" ', #179, ' ---..: "8" ');
- writeln(' --.-: "Q" ', #179, ' ----.: "9" ');
- writeln(' .-.: "R" ', #179, ' -----: "0" ');
- windowframe(3, 3, 38, 23);
- end else
- windowframe(x1, y1, x2, y2);
- write('Input: ');
- readln(s);
- if Symbolcheck(s) then errorwindow(err1, err2);
- until not Symbolcheck(s);
- letter := '';
- output := '';
- spaces := 0;
- for i := 1 to length(s) do
- begin
- if s[i] = ' '
- then
- inc(spaces)
- else
- if spaces = 0
- then
- letter := letter + s[i]
- else
- begin
- output := output + Decode(letter);
- letter := s[i];
- if spaces >= 2 then output := output + ' ';
- spaces := 0;
- end;
- end;
- if s[length(s)] <> ' ' then
- output := output + Decode(letter);
- windowframe(x1, y1, x2, y2);
- windowframe(3, 3, 38, 23);
- write('Input: ', s);
- windowframe(42, 3, 39, 23);
- write('Output: ', output);
- readkey();
- //Repeating
- windowframe(x1, y1, x2, y2);
- clrscr;
- windowframe(28, 8, 30, 7);
- write('Do you want to repeat?');
- window(38, 11, 50, 11);
- gotoxy(38, 11);
- write('Yes/No?');
- gotoxy(37, 12);
- window(37, 12, 42, 12);
- repeat
- {$I-}{$R-}useranswer := readkey;{$I+}{$R+}
- Io := ioresult;
- until (io = 0) and ((useranswer = 'Y') or (useranswer = 'N') or (useranswer = 'n') or (useranswer = 'y') or (useranswer = '') or (useranswer = 'Ќ') or (useranswer = 'в') or (useranswer = '’'));
- if ((useranswer = 'N') or (useranswer = 'n') or (useranswer = '’') or (useranswer = 'в')) then finish := true else finish := false;
- until finish;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement