Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Зерханалық жұмыс




бағалау баллы - 3

тапсыру уақыты 11 - апта

 

Символдарды ауыстыру арқылы шифрлеу (skytale шифрі)

(тапсырма атауы)

:

Төмендегі келтірілген программаға келесілерді орындаңыз:

 

1. алгоритмның блок – схемасын келтіріңіз;

2. осы программаны Делфи тіліне аударыңыз;

3. программаның нәтижесінде экранда құпиясөзді енгізу терезесі мен құпияланған сөздің терезесі болу қажет.

Орындау әдісі

 

ПРОГРАММА ЛИСТИНГІ:

Program skytale; Type str100 = string[100]; str80 = string[80]; Var inf, outf: str80; sky: str100; t: integer; ch: char; Procedure code(inf, outf: str80); Var infile, outfile: file Of char; t, t2: integer;Begin assign(infile, inf); reset(infile); assign(outfile, outf); rewrite(outfile); t:= 1;{ считывание текстового файла, как одномерной матрицы } while (Not eof(infile)) and (t<=100) Do Begin Read(infile, sky[t]); t:= t+1; End;{запись в матрицу размера 5х20} For t:= 1 To 5 Do For t2:= 0 To 19 Do Write(outfile, sky[t+(t2*5)]); WriteLn('файл закодирован'); close(infile); close(outfile);End; Procedure decode(inf, outf: str80); Var infile, outfile: file Of char; t, t2: integer;Begin assign(infile, inf); reset(infile); assign(outfile, outf); rewrite(outfile);{ считывание матрицы размером 5х20 } For t:= 1 To 5 Do For t2:= 0 To 19 Do Read(infile, sky[t+(t2*5)]);{ вывод в качестве строки } For t:= 1 To 100 Do Write(outfile, sky[t]); WriteLn('файл декодирован'); close(infile); close(outfile);End; Begin{ заполнение символов "#" } For t:= 1 To 100 Do sky[t]:= '#'; Write('введите имя входного файла: '); ReadLn(inf); Write('введите имя выходного файла: '); ReadLn(outf); Write('кодировать или декодировать (C or D): '); ReadLn(ch); If upcase(ch)='C' Then code(inf, outf) Else If upcase(ch)='D' Then decode(inf, outf);End.

Зерханалық жұмыс

бағалау баллы - 3

тапсыру уақыты 12 - апта

 

Символдарды ауыстыру арқылы шифрлеу

(тапсырма атауы)

Төмендегі келтірілген программаға келесілерді орындаңыз:

 

1. алгоритмның блок – схемасын келтіріңіз;

2. осы программаны Делфи тіліне аударыңыз;

3. программаның нәтижесінде экранда құпиясөзді енгізу терезесі мен құпияланған сөздің терезесі болу қажет.

Орындау әдісі

 

1 – вариант (қарапайым ауыстыру)

ПРОГРАММА ЛИСТИНГІ:

Program subst; Type str80 = string[80]; Var inf, outf: str80; start: integer; ch: char; Procedure code (inf, outf: str80; start: integer);Var infile, outfile: file Of char; ch: char; t: integer;Begin assign(infile, inf); reset(infile); assign(outfile, outf); rewrite(outfile); while not eof(infile) Do Begin Read(infile, ch); ch:= upcase(ch); If (ch>='A') And (ch<='Z') Then Begin t:= ord(ch)+start; If t>ord('Z') Then t:= t-26; ch:= chr(t); End; Write(outfile, ch); End; WriteLn('файл закодирован'); close(infile); close(outfile);End; Procedure decode(inf, outf: str80; start: integer); Var infile, outfile: file Of char; ch: char; t: integer;Begin assign(infile, inf); reset(infile); assign(outfile, outf); rewrite(outfile); while not eof(infile) Do Begin read(infile, ch); ch:= upcase(ch); If (ch>='A') And (ch<='Z') Then Begin t:= ord(ch)-start; If t<ord('A') Then t:= t+26; ch:= chr(t); End; Write(outfile, ch); End; WriteLn('файл декодирован'); close(infile); close(outfile);End;Begin Write('введите имя входного файла: '); ReadLn(inf); Write('введите имя выходного файла: '); ReadLn(outf); Write('начальная позиция (1-26): '); ReadLn(start); Write('кодировать или декодировать (C or D): '); ReadLn(ch); If upcase(ch)='C' Then code(inf, outf, start) Else If upcase(ch)='D' Then decode(inf,outf,start);End.

2 – вариант (кұрделі ауыстыру)

ПРОГРАММА ЛИСТИНГІ:

Program subs1; Type str80 = string[80]; Var inf, outf: str80; alphabet,sub: str80; ch: char; {данная функция возвращает индекс в алфавите замены } Function find(alphabet: str80; ch: char): integer; Var t: integer;Begin find:= -1; { код ошибки } For t:= 1 To 27 Do If ch=alphabet[t] Then find:= t;End; {данная функция возвращает TRUE истина, если с - это буква алфавита } Function isalpha(ch: char): boolean;Begin isalpha:= (upcase(ch)>='A') And (upcase(ch)<='Z');End; Procedure code(inf, outf: str80); Var infile, outfile: file Of char; ch: char;Begin assign(infile, inf); reset(infile); assign(outfile, outf); rewrite(outfile); while not eof(infile) Do Begin Read(infile, ch); ch:= upcase(ch); If isalpha(ch) Or (ch=' ') Then Begin ch:= sub[find(alphabet, ch)]; { найти замену } End; Write(outfile, ch); End; WriteLn('файл закодирован'); close(infile); close(outfile);End; Procedure decode(inf, outf: str80); Var infile, outfile: file Of char; ch: char;Begin assign(infile, inf); reset(infile); assign(outfile, outf); rewrite(outfile); while not eof(infile) Do Begin Read(infile, ch); ch:= upcase(ch); If isalpha(ch) Or (ch=' ') Then ch:= alphabet[find(sub,ch)]; {замена снова на реальный алфавит } Write(outfile, ch); End; WriteLn('файл декодирован'); close(infile); close(outfile);End; Begin alphabet:= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ '; sub:= 'CAZWSXEDCRFVTGBYHNUJM IKOLP'; Write('введите имя входного файла: '); ReadLn(inf); Write('введите имя выходного файла: '); ReadLn(outf); Write('кодировать или декодировать (C or D): '); ReadLn(ch); If upcase(ch)='C' Then code(inf, outf) Else If upcase(ch)='D' Then decode(inf, outf);End.




Поделиться с друзьями:


Дата добавления: 2016-09-06; Мы поможем в написании ваших работ!; просмотров: 458 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

2281 - | 2210 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.