Зерханалық жұмыс
бағалау баллы - 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 – вариант (кұрделі ауыстыру)
ПРОГРАММА ЛИСТИНГІ: