![]() |
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 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
MultiBlock, я бы попросил добавлять в следующий раз "У МЕНЯ не работает", договорились? Если я его выложил, значит все сработало. Могу прикрепить EXE, если нужно. Версия компилятора какая? (ЭТО, кстати, нужно указывать СРАЗУ!)
Также ЖЕЛАТЕЛЬНО привести командную строку, которой запускалась программа, иначе рассматриваться всерьез такие заявления не могут... |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 10:02 |