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.
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.
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.
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.
За сегодняшний день:
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.
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.