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

бағалау баллы - 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 – вариант (кұрделі ауыстыру)

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