Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [C/C++/C#] Алгоритм шифра частокола |
Автор: porfavor 10.2.2011, 02:34 |
Всем доброго времени суток1 У меня задача создания алгоритма шифра частокола. юзер задает слово и висоту частокола. Допустим слово *криптосистема* с висотой 2 результат будет *рпоитмкитссеа* с висотой 3 результат будет *исерпоитмктса* и тд... я вот видал здесь похожую тему но там реализация только с висотой 2, а мне вот нужно чтоб прога считалла взависимости от висоти, указаной юзером 2,3,5, или же 10... Может ктото знает какойто алгоритм с зацикленостями или какие идеи? а то день сидел уже мозги плавляться и правильно никак невиходит( |
Автор: Роман2502 10.2.2011, 15:54 |
Та же проблема нужна такая же программа... если скинеш прогу с висотой 2 могу что то посмотреть и передалать...может и виканает |
Автор: porfavor 10.2.2011, 16:55 | ||
http://forum.vingrad.ru/forum/topic-111340/unread-1.html писали на ++. ето мой код на # (подходит под висоту 2 только пишет шифр начиная с нижнего етажа):
под каждую висоту написать можно, но циклом под висоту юзера невиходит, потомучто разний алгоритм.. |
Автор: Роман2502 2.3.2011, 13:41 |
код на делфі прога работает unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin; type TForm1 = class(TForm) Memo1: TMemo; Memo2: TMemo; Button1: TButton; SpinEdit1: TSpinEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const size = 100; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var s,rez,b: string; matr: array[0..size, 0..size] of string; i,a,j,z,g,k,n,t,pr:integer; begin memo2.Clear; z:=memo1.Lines.Count; for g:=0 to z-1 do begin rez:=''; t:=form1.SpinEdit1.Value-1; s:=''; b:=memo1.lines[g]; for i:=1 to length(b) do begin if b[i]<>' ' then s:=s+b[i]; end; k:=length(s); pr:=0; for i:=0 to t do for j:= 0 to k do matr[i][j]:=''; a:=0; for j:=1 to k do begin if pr=0 then begin matr[t-a][j]:=s[j]; if a=t then begin a:=a-1; pr:=1; continue; end; a:=a+1; end else begin matr[t-a][j]:=s[j]; if a=0 then begin a:=a+1; pr:=0; continue; end; a:=a-1; end; end; for i:=0 to t do for j:= 0 to k do if matr[i][j]<>'' then rez:=rez+matr[i][j]; memo2.Lines.Add(rez); end; end; end. |
Автор: GodOFCod 13.1.2012, 19:45 |
Роман что нужно изменить в программе (Delphi) чтобы она дешифровала, допустим - 'рпоитмкитссеа' в результате получили 'криптосистема' с висотой 2 (как сказал porfavor). Буду очень благодарен. |
Автор: Mirkes 14.1.2012, 15:03 | ||
Вот код кодировщика/декодировщика на Java.
|
Автор: GodOFCod 14.1.2012, 15:29 |
Спасибо Mirkes но мне надо программу на Delphi или C/C + +. |
Автор: Mirkes 16.1.2012, 17:40 | ||
Так переведи. С не знаю. На delphi переводится легко:
Но вообще говоря это уже запредельная лень. ![]() |
Автор: xam9111 31.1.2012, 10:21 |
Здрасте. у меня такая проблема, мне нужно програмно реализовать дешифровку с использованием шифра частокола и провести криптоанализ текста ""ротзкиюпеарнзлдуюкитссеівдртмлчмрцдршфуанєааьоотпоупиміикеоуивягнсн"" при висоте 4. Желательно на С++, но можна и на Delphi Заранее благодарю. |
Автор: Mirkes 1.2.2012, 07:21 |
Выше приведен текст на Delphi и Java. Выбирай любой. Следует учесть, что в моих текстах запись велась начиная с минимальной а первый кол имел максимальную высоту. |