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

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

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

> Смесь из литер., алгоритм шифрования (перестановка)
кзои
сообщение 7.12.2005 16:29
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Евгений

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


Приветствую всех. Я вообще новичок в програмировании и вот в ВУЗЕ мне предложили одну задачу, я парюсь и не могу зделать самое главное. В двух словах дана таблица (кодировочная). Приводить её не буду, потому как получится, что я озадачиваю вас писать эту программу. Скажу только, что символы кодируются двумя цифрами


И далее идёт алгоритм смеси.
1)смесь разбивается на группы по N=<число слов в тексте>
2)выделяются 1-е, 2-е и т.д. символы из каждой группы
3)подряд идущие пробелы и знаки препинания объединяются в один символ


Выглядит всё это примерно так.

Исходный текст
ПРИМЕР СОСТАВЛЕНИЯ СМЕСИ.

Результат шифрования
ПССРОМИСЕМТСЕАИРВ._Л._Е._Н._И._Я._ _.

Результат дешифровки (N=3)
1) ПСС|РОМ|ИСЕ|МТС|ЕАИ|РВ.|_Л.|_Е.|_Н.|_И.|_Я.|_ _.
2) ПРИМЕР_ _ _ _ _
СОСТАВЛЕНИЯ_
СМЕСИ…….
3) ПРИМЕР_СОСТАВЛЕНИЯ_СМЕСИ.

=================================================

А теперь о самой проблемме, я не могу реализовать сам этот алгоритм (слишком мало опыта), в принципе вся эта таблица уже находится в программе. Подскажите пожалуйста, как такое реализовать при кодировании. Заранее огромное спасибо, извините за лемерство.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 7.12.2005 20:26
Сообщение #2


Гость






кзои, вот тебе пример реализации самого шифрования/дешифрования...
const
max_word = 255;
delimiter = [#32, ',', '.', '!', ':'];
type
wrd_info = record
start, len: byte;
end;

function encode(s: string; var count: integer): string;
var
words: array[1 .. max_word] of wrd_info;
max, i, j, curr_len: byte;

encoded: string;
begin

count := 0; i := 1;
while i <= length(s) do begin

while (s[i] in delimiter) and (i <= length(s)) do inc(i);

curr_len := 0;
while not (s[i] in delimiter) and (i <= length(s)) do begin
inc(i); inc(curr_len);
end;

if curr_len > 0 then begin
inc(count);
with words[count] do begin
start := i - curr_len;
len := curr_len
end;
end;

end;

max := 0;
for i := 1 to count do
if max < words[i].len then max := words[i].len;

encoded := '';
for j := 1 to max + 1 do
for i := 1 to count do begin
if j <= words[i].len then encoded := encoded + s[words[i].start + j - 1]
else encoded := encoded + s[words[i].start + words[i].len];
end;

encode := encoded;
end;

function decode(s: string; n: integer): string;
var
decoded: string;
i, j: integer;
begin
decoded := '';
for i := 1 to n do begin

j := i;
while j <= length(s) do begin
decoded := decoded + s[j];
inc(j, n)
end;

end;

i := 2;
while i <= length(decoded) do begin
if decoded[pred(i)] = decoded[i] then
delete(decoded, i, 1)
else inc(i)
end;

decode := decoded;
end;


var
s: string;
was_encoded, was_decoded: string;
n: integer;

begin
s := 'Пример составления смеси.';
was_encoded := encode(s, n);
writeln('Зашифровано: ', was_encoded)

was_decoded := decode(was_encoded, n);
writeln('Восстановлено: ', was_decoded);
end.


Дальше сам справишься? Что-то я, если честно, не совсем разобрался, что там с таблицей дальше делать?
 К началу страницы 
+ Ответить 

Сообщений в этой теме
кзои   Смесь из литер.   7.12.2005 16:29
volvo   кзои, я не понял, ты закодировать это не можешь, и...   7.12.2005 16:49
кзои   Мне нужно закодировать и раскодировать файл. А про...   7.12.2005 17:12
volvo   кзои, вот тебе пример реализации самого шифрования...   7.12.2005 20:26
кзои   Знаете, чувствую не решить мне проблемму. Вот в фа...   8.12.2005 11:56
volvo   кзои, в приведенной тобой программе я не разбиралс...   8.12.2005 13:43
кзои   Сначала производится смесь, а потом кодирование. К...   8.12.2005 14:19
volvo   Повторить вопрос?   8.12.2005 14:21
кзои   Получается, что нигде. Сначала всё смешивается, по...   8.12.2005 14:54
volvo   Проверяй: const max_word = 255; delimiter = [#...   8.12.2005 16:20
кзои   Вот, что получилось Текст файла before.txt: Всё, ...   8.12.2005 17:54
volvo   кзои, а в какой кодировке before.txt? А символы в...   8.12.2005 19:10
кзои   Кодировка была DOS, символы большие. Ну в общем сп...   8.12.2005 20:09
кзои   Извините за назойливость :unsure: не могли бы В ...   9.12.2005 19:19


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

 



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