![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
MultiBlock |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Народ, помогите, пожалуйста, с программой! Нужно соединить 2 части (шифратор и дешифратор) + нужно чтобы текст забивался через программу, либо читался из файла, а результат записывался тоже в файл, но в другой. И цифровой ключ должен вводиться тоже через программу! Помогите!
P.S. Спасибо всем кто откликнется! Код { Шифровальщик Программа читает файл s и записывает результат в s1 } function getnum(c: char): integer; var n: integer; begin case c of '0': n := 0; '1': n := 1; '2': n := 2; '3': n := 3; '4': n := 4; '5': n := 5; '6': n := 6; '7': n := 7; '8': n := 8; '9': n := 9; else n := -1; end; getnum := n; end; const N1 = 10; { максимальное количество строк в файле } N2 = 2; { количество алфавитов } var f,f1: text; s,n,s1: string; i,j,k,l,m: integer; c: integer; { счётчик пизиции в строке кода } w : array [1..N1] of string; { строки } w1 : array [1..N1] of string; { строки } abc : array [1..N2] of string; { алфавиты } begin abc[1] := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; abc[2] := 'abcdefghijklmnopqrstuvwxyz'; writeln(''); writeln(' *** Шифровка методом Гронсфельда ***'); { write('Имя файла: '); readln(s); write('Цифровой ключ (4 или меньше цифры ): '); readln(n); } s := 'C:\Work4\1.dat'; s1 := 'C:\Work4\2.dat'; n := '2718'; assign(f,s); assign(f1,s1); reset(f); rewrite(f1); i := 1; { читаем файл } while not EOF(f) and (i<=N1) do begin readln(f,w[i]); w1[i]:=w[i]; inc(i); end; { кодируем } { 1-й цикл - по строкам из файла } { 2-й цикл - по элементам в строке из файла } { 3-й цикл - по алфавитам } { 4-й цикл - по элементам алфавита } c := 1; for i := 1 to N1 do if ord(w[i][0])<>0 then for j := 1 to (ord(w[i][0])+1) do for k := 1 to N2 do for l := 1 to (ord(abc[k][0])+1) do begin if abc[k][l]=w[i][j] then begin m := l+getnum(n[c]); inc(c); if c>ord(n[0]) then c := 1; if m>ord(abc[k][0]) then m := m-ord(abc[k][0]); w1[i][j] := abc[k][m]; end; end; writeln(''); for i:=1 to N1 do begin writeln(w[i]); writeln(w1[i]); end; for i := 1 to N1 do begin for j := 1 to ord(w1[i][0]) do write(f1,w1[i][j]); writeln(f1,''); end; writeln('Нажмите Enter'); read(s); end. Код { Дешифратор Программа читает файл s и записывает результат в s1 } function getnum(c: char): integer; var n: integer; begin case c of '0': n := 0; '1': n := 1; '2': n := 2; '3': n := 3; '4': n := 4; '5': n := 5; '6': n := 6; '7': n := 7; '8': n := 8; '9': n := 9; else n := -1; end; getnum := n; end; const N1 = 10; { максимальное количество строк в файле } N2 = 2; { количество алфавитов } var f,f1: text; s,n,s1: string; i,j,k,l,m: integer; c: integer; { счётчик пизиции в строке кода } w : array [1..N1] of string; { строки } w1 : array [1..N1] of string; { строки } abc : array [1..N2] of string; { алфавиты } begin abc[1] := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; abc[2] := 'abcdefghijklmnopqrstuvwxyz'; writeln(''); writeln(' *** Шифровка методом Гронсфельда ***'); { write('Имя файла: '); readln(s); write('Цифровой ключ (4 или меньше цифры ): '); readln(n); } s := 'C:\Work4\2.dat'; s1 := 'C:\Work4\3.dat'; n := '2718'; assign(f,s); assign(f1,s1); reset(f); rewrite(f1); i := 1; { читаем файл } while not EOF(f) and (i<=N1) do begin readln(f,w[i]); w1[i]:=w[i]; inc(i); end; { кодируем } { 1-й цикл - по строкам из файла } { 2-й цикл - по элементам в строке из файла } { 3-й цикл - по алфавитам } { 4-й цикл - по элементам алфавита } c := 1; for i := 1 to N1 do if ord(w[i][0])<>0 then for j := 1 to (ord(w[i][0])+1) do for k := 1 to N2 do for l := 1 to (ord(abc[k][0])+1) do begin if abc[k][l]=w[i][j] then begin m := l-getnum(n[c]); inc(c); if c>ord(n[0]) then c := 1; if m<1 then m := m+ord(abc[k][0]); w1[i][j] := abc[k][m]; end; end; writeln(''); for i:=1 to N1 do begin writeln(w[i]); writeln(w1[i]); end; for i := 1 to N1 do begin for j := 1 to ord(w[i][0]) do write(f1,w1[i][j]); writeln(f1,''); end; writeln('Нажмите Enter'); read(s); end. Сообщение отредактировано: MultiBlock - 4.10.2006 16:14 |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 10:01 |