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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2012, 15:54   #1
skorik-1992
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 19
По умолчанию Задача на шифрование

Здравствуйте. Помогите пожалуйста решить задачу, никак не получается сообразить как это сделать, вот условие:

Дан массив 5:5, который содержит символы:

r e v n g
a b c d f
h i k l m
o p q s t
u w x y z

Нужно запрограммировать так, что-бы слово, которое вводится пользователем(вводимое слово всегда будет чётным) шифровалось следующим образом:
1)если 2 последовательные буквы слова, введенного пользователем, находятся в одной строке(массива), тогда заменить каждую букву, на следующую в перёд, в этой же строке. Пример: в слове есть такое сочетание букв "er", результатом должно быть "ve".
2)если 2 последовательные буквы слова, введенного пользователем, находятся в одном столбце(массива), тогда заменить каждую букву, на следующую вниз, в этом же столбце. Пример: в слове есть такое сочетание букв "ha", результатом должно быть "oh".
Есть ещё 3е условие, но его довольно трудно так объяснить, если пойму как эти 2 пункта сделать, 3е сам смогу сделать.
В общем, например попадется такое слово: "dlvn", рассматриваем его(просто так визуальней проще) как отдельные 2 пары букв dl и vn, программа должна зашифровать его "lsng"(ls и ng).
Прошу, подскажите пожалуйста, как реализовать это задание, уже пол вечера сижу, не могу ничего путёвого придумать. Вот то, что я сам написал, дальше нет идей:
Код:
program shifr;
uses crt;

var
        i,g,k:integer;
        s:string;
        c:char;
        m:array [1..5,1..5] of char;

begin
m[1,1]:='r';
m[1,2]:='e';
m[1,3]:='v';
m[1,4]:='n';
m[1,5]:='g';

m[2,1]:='a';
m[2,2]:='b';
m[2,3]:='c';
m[2,4]:='d';
m[2,5]:='f';

m[3,1]:='h';
m[3,2]:='i';
m[3,3]:='k';
m[3,4]:='l';
m[3,5]:='m';

m[4,1]:='o';
m[4,2]:='p';
m[4,3]:='q';
m[4,4]:='s';
m[4,5]:='t';

m[5,1]:='u';
m[5,2]:='w';
m[5,3]:='x';
m[5,4]:='y';
m[5,5]:='z';

write('Введите слово:');
readln(s);

for i:=1 to 5 do
 for g:=1 to 5 do
  for k:=1 to length(s) do if s(k)=m[i,g] then begin
skorik-1992 вне форума Ответить с цитированием
Старый 05.10.2012, 16:04   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
1)если 2 последовательные буквы слова, введенного пользователем, находятся в одной строке(массива), тогда заменить каждую букву, на следующую в перёд, в этой же строке. Пример: в слове есть такое сочетание букв "er", результатом должно быть "ve".
Например: "ng" - находятся в одной строке... как будут шифроваться? что в начале "g" - это понятно, а что будет дальше?

и со столбцами аналогично...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 05.10.2012, 16:29   #3
skorik-1992
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 19
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
Например: "ng" - находятся в одной строке... как будут шифроваться? что в начале "g" - это понятно, а что будет дальше?

и со столбцами аналогично...
в случае ng заместо g будет r, т.е по кругу короче. со столбцами аналогично, т.е. например для буквы x будет v
skorik-1992 вне форума Ответить с цитированием
Старый 05.10.2012, 16:56   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от skorik-1992 Посмотреть сообщение
в случае ng заместо g будет r, т.е по кругу короче. со столбцами аналогично, т.е. например для буквы x будет v
опять же: я введу "evn" - что получится в результате?

и как зашифруется фраза "rb"? или останется неизменна?

з.ы. если внимательно посмотрите, то третье условие следует из двух первых и ничего не меняет...

з.з.ы. я бы на вашем месте не использовал квадратный массив, а строку из 25 символов - намного проще жить будет)
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 05.10.2012 в 17:00.
DiemonStar вне форума Ответить с цитированием
Старый 05.10.2012, 17:13   #5
skorik-1992
Пользователь
 
Регистрация: 13.03.2012
Сообщений: 19
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
опять же: я введу "evn" - что получится в результате?

и как зашифруется фраза "rb"? или останется неизменна?

з.ы. если внимательно посмотрите, то третье условие следует из двух первых и ничего не меняет...

з.з.ы. я бы на вашем месте не использовал квадратный массив, а строку из 25 символов - намного проще жить будет)
"слово, которое вводится пользователем(вводимое слово всегда будет чётным)", т.е. evn - такого не будет, потому-что преподователь сказал, что программу писать, только для чётного количества символов, т.е. будет слово например hpuytm, то все символы будут рассматриваться по парно, hp, uy, tm.
Третье условие....блин, нет, они не не изменными остаются, я не уверен что мне удасться толково объяснить ну да ладно......вот например, вы спросили про rb, они из разных строк, и из разных столбцов, мы мысленно вырисовываем квадрат для этих символо т.е. рассматривать тогда будем такой массив
r e
a b
и "r" примет значение "a", а "b" примет значение "e" , получится "ae".

И про строку.... - я бы с удовольствием, но задание сделать именно по массиву(( скажите пожалуйста, у вас есть идеи как реализовать первые два пункта?
skorik-1992 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование Runner Помощь студентам 11 17.06.2010 22:17
шифрование Runner Паскаль, Turbo Pascal, PascalABC.NET 0 17.06.2010 17:34
Шифрование buenosaire Помощь студентам 1 15.06.2010 21:54
Шифрование SnowSin Помощь студентам 0 13.12.2009 12:14
шифрование Stanislav Свободное общение 10 04.03.2008 05:09