Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2008, 16:39   #1
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию шифрования

Известный метод шифрования квадратом: некоторое сообщение вписывается в квадрат по строкам. При этом пропуска заменяют знаком '*', а если в последней строке квадрата остались свободные клеточки, они заполняются точками ('.'). После этого, прочитавши содержимое квадрата столбец за столбцом, получают зашифрованный текст.
Ваша задача состоит в том, чтобы зашифровать входное сообщение.
Входные данные:
В файле Z1.dat содержится сообщения, длиной не больше 5000 символов. При считывании символы переведения строки необходимо игнорировать.
Исходные данные: В файл Z1.sol вывести зашифрованное сообщение.
Пример:
Z1.dat:
Attack at dawn or we are done for
Промежуточное представление в виде квадрата:
A t t a c k
* a t * d a
w n * o r *
w e * a r e
* d o n e *
f o r . . .
Z1.sol:
A*ww*ftanedott**ora*oan.cdrre.ka*e* .
Snake08 вне форума Ответить с цитированием
Старый 27.11.2008, 01:42   #2
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

Ну помогите хто нибудь!! Пожалуста!
Snake08 вне форума Ответить с цитированием
Старый 27.11.2008, 04:17   #3
lexus_ilia
Студентик :)
Пользователь
 
Аватар для lexus_ilia
 
Регистрация: 29.09.2008
Сообщений: 84
По умолчанию

Лови, сделал только потому, что понравилось задание... Кстати если создать файл z1.sol, то его нереально прочитать, поэтому я в твою задачу добавил вывод на экран, что-бы понять, как оно выводиться в файл...Разбирайся, что не понятно, спрашивай.
Код:
Program xa;
var
 a:array [1..70,1..70] of char;
 i,n,j,k,l:integer;
 f:file;
 name,s:string;
begin
 Writeln('BBedute HauMeHoBaHu9 Faula c DaHHblmu');
 readln(name);
 assign(f,name);
 reset(f,1);
 i:=1;
 while not eof(f) do
 begin
  blockread(f,s[i],1);
  inc(i);
 end;
 close(f);
 l:=i;
 n:=round(sqrt(i))+1;
 writeln(i, ' n= ' ,n);
 i:=1;
 j:=1;
 k:=1;
 for i:=1 to n do
  for j:=1 to n do
  begin
   if k>l then
    a[i,j]:='.'
   else
    if s[k]<>' ' then
     a[i,j]:=s[k]
    else
     a[i,j]:='*';
   inc(k);
  end;

 {for i:=1 to n do
 begin
  for j:=1 to n do
   Write(a[i,j], ' ');
  Writeln;
 end;}

 assign(f,'Z1.sol');
 rewrite(f);
 for i:=1 to n do
  for j:=1 to n do
  begin
   blockwrite(f,a[j,i],1);
   write(a[j,i]);
  end;
 close(f);
 readln
end.
lexus_ilia вне форума Ответить с цитированием
Старый 27.11.2008, 04:20   #4
lexus_ilia
Студентик :)
Пользователь
 
Аватар для lexus_ilia
 
Регистрация: 29.09.2008
Сообщений: 84
По умолчанию

И да, закомментированная строка, это твоя промежуточная матрица, если хочешь раскомментируй.
lexus_ilia вне форума Ответить с цитированием
Старый 27.11.2008, 17:58   #5
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
Печаль

Ой извини я не правильно условия записал!
От пример ввода и вывода в файле!
Z1.dat:
Attack at dawn or we are done for
Z1.sol:
A*ww*ftanedott**ora*oan.cdrre.ka*e* .
Помоги пожалуста!
Snake08 вне форума Ответить с цитированием
Старый 27.11.2008, 17:58   #6
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
Печаль

Ой извини я не правильно условия записал!
От пример ввода и вывода в файле!
Z1.dat:
Attack at dawn or we are done for
Z1.sol:
A*ww*ftanedott**ora*oan.cdrre.ka*e* .
Помоги пожалуста!
Snake08 вне форума Ответить с цитированием
Старый 27.11.2008, 18:05   #7
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

Чото у меня не работает!
Моешь зделать задачу так штобы при вводе
Z1.dat:
Attack at dawn or we are done for
выводило:
Z1.sol:
A*ww*ftanedott**ora*oan.cdrre.ka*e* .
Здель пожалуста умоляю!
Snake08 вне форума Ответить с цитированием
Старый 28.11.2008, 01:39   #8
lexus_ilia
Студентик :)
Пользователь
 
Аватар для lexus_ilia
 
Регистрация: 29.09.2008
Сообщений: 84
По умолчанию

Конечно могу, просто я сделал так, как я сделал из-за того, что при высчитывании порядка матрицы, бывают траблы, но т.к. тебе очень надо, то просто вместо
Код:
 n:=round(sqrt(i))+1;
напиши
Код:
 n:=round(sqrt(i));
И будет тебе счастье...
lexus_ilia вне форума Ответить с цитированием
Старый 28.11.2008, 08:42   #9
Snake08
Пользователь
 
Регистрация: 06.11.2008
Сообщений: 25
По умолчанию

Помоги мне пожалуйста зделать так штоб я вводил данные в файл и выводило их тоже в файл!
var
a:array [1..70,1..70] of char;
i,n,j,k,l:integer;
f:file;
name,s:string;
begin
Writeln('BBedute HauMeHoBaHu9 Faula c DaHHblmu');
readln(name);
assign(f,name);
reset(f,1);
i:=1;
while not eof(f) do
begin
blockread(f,s[i],1);
inc(i);
end;
close(f);
l:=i;
n:=round(sqrt(i))+1;
writeln(i, ' n= ' ,n);
i:=1;
j:=1;
k:=1;
for i:=1 to n do
for j:=1 to n do
begin
if k>l then
a[i,j]:='.'
else
if s[k]<>' ' then
a[i,j]:=s[k]
else
a[i,j]:='*';
inc(k);
end;

{for i:=1 to n do
begin
for j:=1 to n do
Write(a[i,j], ' ');
Writeln;
end;}

assign(f,'Z1.sol');
rewrite(f);
for i:=1 to n do
for j:=1 to n do
begin
blockwrite(f,a[j,i],1);
write(a[j,i]);
end;
close(f);
readln
end.
Зделай пожалуйста!
Snake08 вне форума Ответить с цитированием
Старый 28.11.2008, 08:55   #10
lexus_ilia
Студентик :)
Пользователь
 
Аватар для lexus_ilia
 
Регистрация: 29.09.2008
Сообщений: 84
По умолчанию

Так ты их в файл и выводишь, файл называется Z1.sol он у тебя в папке bin появился, просто из-за расширения, прочитать там что-либо как-то сложновато...И не надо копировать целый код программы, для таких вопросов...
lexus_ilia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Алгоритм] Симметричного шифрования tuxx32 Помощь студентам 6 13.05.2010 09:39
Ипользование md5 шифрования в C? fis Общие вопросы C/C++ 1 06.06.2008 16:58
Методы шифрования D@rk M@k Свободное общение 3 27.02.2008 13:56
Алгоритм шифрования Simply-Art Общие вопросы Delphi 14 01.02.2008 14:30