IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Кодирование и декодлирование текстовой информации методом Гронсфельда
MultiBlock
сообщение 4.10.2006 16:12
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Народ, помогите, пожалуйста, с программой! Нужно соединить 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 6.10.2006 14:49
Сообщение #2


Гость






MultiBlock, я бы попросил добавлять в следующий раз "У МЕНЯ не работает", договорились? Если я его выложил, значит все сработало. Могу прикрепить EXE, если нужно. Версия компилятора какая? (ЭТО, кстати, нужно указывать СРАЗУ!)

Также ЖЕЛАТЕЛЬНО привести командную строку, которой запускалась программа, иначе рассматриваться всерьез такие заявления не могут...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
MultiBlock   Кодирование и декодлирование текстовой информации методом Гронсфельда   4.10.2006 16:12
volvo   Здесь есть реализация процедур шифровки/дешифровки...   4.10.2006 16:26
MultiBlock   Я видел... дело в том что я только начал осваивать...   4.10.2006 16:39
volvo   Файл GRONSFLD.PAS function GronsfeldEncipher(toCod...   4.10.2006 17:00
MultiBlock   Не работает код :blink: просто вылетает сразу по...   6.10.2006 14:46
volvo   MultiBlock, я бы попросил добавлять в следующий ра...   6.10.2006 14:49
MultiBlock   Может я что-то не правильно делаю, поэтому и не ра...   6.10.2006 15:15
MultiBlock   Опять обращаюсь к Вам за помощью. Вот объединил дв...   16.10.2006 21:57
volvo   У тебя скорее всего не хватает End-ов в программе,...   17.10.2006 1:36
lygger   volvo выложи пожалуйста ЕХЕ своей программы. буду ...   25.04.2007 16:11
volvo   Вот EXE: Как пользоваться - см. пост №4 ...   25.04.2007 17:39
Mihanik   Как пользоваться - см. пост №4 ... ув. Volvo...   11.05.2007 20:25
lygger   спасибо огромное!   2.05.2007 17:41
Mihanik   Неужели так трудно нарисовать алгоритм?   13.05.2007 14:00
volvo   Под алгоритмом имеется в виду ЧТО? Блок-схема? Неу...   13.05.2007 14:06
Mihanik   Под алгоритмом имеется в виду ЧТО? Блок-схема? Не...   13.05.2007 14:35


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 10:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"