PDA

Показать полную графическую версию : Ребята помогите решить задачу на делфях!


Lenich
05-06-2008, 03:48
Ребята есть программа которая шифрует текст методом магического квадрата, вот ее код:

function encrypt(str:string):string;
const
base:array [1..16] of byte = (16, 3, 2, 13,
5, 10, 11, 8,
9, 6, 7, 12,
4, 15, 14, 1);
var
i,j:integer;
begin
str:=StringReplace(str,#32,'',[rfReplaceAll]);
If Length(str)>length(base) then SetLength(str,length(base))
else if Length(str)<length(base) then
begin
for i:=Length(str) to length(base) do
str:=str+'.';
end;
Result:='';
for j:=1 to length(base) do
for i:=1 to length(str) do
begin
If i=base[j] then
Result:=Result+str[i];
end;
end;

Но нужен код для дешифровки текаста которая зашифровала эта программа! Очень прошу помощи! И заранее благодорю!
За программу шифровки спасибо некому Voyager!!!

Altair86
05-06-2008, 16:08
str:=StringReplace(str,#32,'',[rfReplaceAll]); »
Можно нубский вопрос: а что на что здесь заменяет функция StringReplace? В делфи не секу :( , но в алгоритме попробую разобраться вечером.

Admiral
05-06-2008, 16:40
Эта функция заменяет #32 в строчке str на ", а флаг rfReplaceAll указывает найти все найденные. Результат выполнения сохраняет в саму же строчку str.
StringReplace - Функция. Справочник - Основы Delphi (http://delphibasics.ru/StringReplace.php)

Altair86
05-06-2008, 18:20
Эта функция заменяет #32 в строчке str на " »
В смысле, это получается удаление пробелов из строчки? #32-- пробел вроде, а '' -- пустая строка?

Altair86
06-06-2008, 16:02
Попробуй в качестве кода для дешифровки использовать ту же программу. Если меня не глючит, должно сработать.

Lenich
07-06-2008, 00:49
Altair86, Дружище спасибо тебе большое!!!!

Altair86, есть еще одна проблема... при шифровке появляються лищние точки, не подскажешь еще как избавиться от них?

Admiral
07-06-2008, 01:14
Это критично?
str:=str+'.'; »

Altair86
07-06-2008, 11:37
при шифровке появляються лищние точки, не подскажешь еще как избавиться от них? »
Не подскажу. Если заранее неизвестно, заканчивалась ли шифруемая фраза точкой, то как определить, все точки лишние или (все-1)? Можно к программе-дешифратору пришить "хвост", считающий точки в конце строки и убирающий либо их все, либо все, кроме одной.

Lenich
08-06-2008, 19:12
Всем большое спасибо!!! Очень мне помогли!!! :up




© OSzone.net 2001-2012