Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите доработать шифр
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Nastya
var
s, key: string;
index: array[1 .. 255] of integer;
i, j, T: integer;

len, curr: integer;
begin
s := 'Анастасия';
key := '987321456';
len := length(key);
for i := 1 to len do index[i] := i;
for i := 1 to len do
for j := len downto i + 1 do
begin
if key[index[j - 1]] > key[index[j]] then
begin
T := index[j - 1]; index[j - 1] := index[j]; index[j] := T;
end;
end;
for i := 1 to len do
begin
curr := index[i];
while curr <= length(s) do
begin
write(s[curr]);
inc(curr, len);
end;
end;
writeln;
end.
_________
Помогите сделать так, чтобы ввод текста, размер ключа, сам ключ и вывод текста вводилось в ручную!Пожалуйста!
Федосеев Павел
program Anastasia;

var
s: string;
index, key: array[1 .. 255] of integer;
i, j, T: integer;

len, curr: integer;
begin
Write('Введите текст: ');
readln(s);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;

for i := 1 to len do
index[i] := i;
for i := 1 to len do
for j := len downto i + 1 do
begin
if key[index[j - 1]] > key[index[j]] then
begin
T := index[j - 1];
index[j - 1] := index[j];
index[j] := T;
end;
end;
for i := 1 to len do
begin
curr := index[i];
while curr <= length(s) do
begin
Write(s[curr]);
Inc(curr, len);
end;
end;
writeln;
end.

Nastya
Цитата(Федосеев Павел @ 12.12.2016 13:56) *

program Anastasia;

var
s: string;
index, key: array[1 .. 255] of integer;
i, j, T: integer;

len, curr: integer;
begin
Write('Введите текст: ');
readln(s);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;

for i := 1 to len do
index[i] := i;
for i := 1 to len do
for j := len downto i + 1 do
begin
if key[index[j - 1]] > key[index[j]] then
begin
T := index[j - 1];
index[j - 1] := index[j];
index[j] := T;
end;
end;
for i := 1 to len do
begin
curr := index[i];
while curr <= length(s) do
begin
Write(s[curr]);
Inc(curr, len);
end;
end;
writeln;
end.




__________________
спасибо Вам огромное!!!!!!!!!!!!!! rolleyes.gif good.gif yes2.gif
Извиняюсь за беспокойство, но не могли бы вы мне помочь написать программу расшифровки? Буду очень вам признательна! !zdarov.gif
Федосеев Павел
program Anastasia;

var
key: array[1 .. 255] of integer;
i, j: integer;

len, curr: integer;

encString, decString: string;
begin
Write('Введите текст: ');
readln(encString);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;

decString := encString;
j := 1;
for i := 1 to len do
begin
curr := key[i];
while curr <= length(encString) do
begin
decString[curr] := encString[j];
Inc(j);
Inc(curr, len);
end;
end;
writeln(decString);
end.

Nastya
Цитата(Федосеев Павел @ 12.12.2016 21:19) *

program Anastasia;

var
key: array[1 .. 255] of integer;
i, j: integer;

len, curr: integer;

encString, decString: string;
begin
Write('Введите текст: ');
readln(encString);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;

decString := encString;
j := 1;
for i := 1 to len do
begin
curr := key[i];
while curr <= length(encString) do
begin
decString[curr] := encString[j];
Inc(j);
Inc(curr, len);
end;
end;
writeln(decString);
end.



_______
Простите, но я наверное не так выразилась... Я имела ввиду, чтобы была программа шифровка и в ней же расшифровка и наоборот. Например, я ввела имя, закодировала его, а потом ввела ключ и раскодировала. Так возможно? Я просто не очень разбираюсь.. Пожалуйста, помогите smile.gif unsure.gif
Федосеев Павел
За сегодняшний день:
1. Перечислите как должно выглядеть. Что нужно набирать.
Nastya
Цитата(Федосеев Павел @ 13.12.2016 1:49) *

За сегодняшний день:
1. Перечислите как должно выглядеть. Что нужно набирать.

______________
Задайте текст:
скороновыйгод
Закодированная строка:
нвоыгйдоксоро
Декодирование:
скороновыйгод
............................
только чтобы с вводом и выводом данных.
Примерно так. Если возможно такое сделать, то пожалуйста, будьте добры, помогите.
Федосеев Павел
program Anastasia;

var
encString, decString: string;
index, key: array[1 .. 255] of integer;
i, j, T: integer;

len, curr: integer;
begin
writeln('Кодирование текста');
Write('Введите текст: ');
readln(decString);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;
for i := 1 to len do
index[i] := i;
for i := 1 to len do
for j := len downto i + 1 do
begin
if key[index[j - 1]] > key[index[j]] then
begin
T := index[j - 1];
index[j - 1] := index[j];
index[j] := T;
end;
end;
j := 1;
encString := decString;
for i := 1 to len do
begin
curr := index[i];
while curr <= length(decString) do
begin
encString[j] := decString[curr];
Inc(curr, len);
Inc(j);
end;
end;
writeln(encString);

writeln('Декодирование текста');
Write('Введите текст: ');
readln(encString);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;

decString := encString;
j := 1;
for i := 1 to len do
begin
curr := key[i];
while curr <= length(encString) do
begin
decString[curr] := encString[j];
Inc(j);
Inc(curr, len);
end;
end;
writeln(decString);
end.

Nastya
Цитата(Федосеев Павел @ 13.12.2016 13:28) *

program Anastasia;

var
encString, decString: string;
index, key: array[1 .. 255] of integer;
i, j, T: integer;

len, curr: integer;
begin
writeln('Кодирование текста');
Write('Введите текст: ');
readln(decString);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;
for i := 1 to len do
index[i] := i;
for i := 1 to len do
for j := len downto i + 1 do
begin
if key[index[j - 1]] > key[index[j]] then
begin
T := index[j - 1];
index[j - 1] := index[j];
index[j] := T;
end;
end;
j := 1;
encString := decString;
for i := 1 to len do
begin
curr := index[i];
while curr <= length(decString) do
begin
encString[j] := decString[curr];
Inc(curr, len);
Inc(j);
end;
end;
writeln(encString);

writeln('Декодирование текста');
Write('Введите текст: ');
readln(encString);
Write('Введите длину ключа: ');
readln(len);
Write('Введите числа ключа через пробел: ');
for i := 1 to len do
Read(key[i]);
readln;

decString := encString;
j := 1;
for i := 1 to len do
begin
curr := key[i];
while curr <= length(encString) do
begin
decString[curr] := encString[j];
Inc(j);
Inc(curr, len);
end;
end;
writeln(decString);
end.



______________________________
Спасибо Вам огромное за помощь! yes2.gif Вы мне очень помогли! good.gif smile.gif Всего вам самого наилучшего! give_rose.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.