Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по паскалю.  (Прочитано 6936 раз)
0 Пользователей и 1 Гость смотрят эту тему.
M31
Помогающий

ua
Offline Offline

« : 30-04-2005 16:45 » 

Мне нужно сделать следующие: я загружаю текс в программу. Затем присваиваю каждому символу свой номер из АСКИ, затем ввожу ключ слово. Затем присваиваю каждому символу ключ слова тоже свой номер. Затем сдвигаю номер символа из текста на номер символа из ключ слова (следующим образом пусть ключ слово имеет 2 символа тогда сдвиг будет 1-го символ из текста на 1-ой символ из ключ слова , 2 на 2 , 3 на 1 и т. д.), затем сохраняю результат в файле.
У меня следующий вопрос. Как присвоит каждому символу свой номер, как сделать сдвиг. Если можно, то дайте код этих действий. Заранее благодарен.
Записан
Alf
Гость
« Ответ #1 : 30-04-2005 22:55 » 

У меня следующий вопрос. Как присвоит каждому символу свой номер, как сделать сдвиг.

1. Порядковый номер символа C в алфавите, используемом на данном компьютере, возвращает функция Ord(C)

2. Определись сначала сам, что хочешь сделать. Ибо "сдвигаю номер символа из текста на номер символа из ключ слова" - это просто набор слов, лишенный смысла. Что подразумевается под сдвигом номера на номер?
Записан
M31
Помогающий

ua
Offline Offline

« Ответ #2 : 01-05-2005 06:28 » 

пример. пусть текст будет следующим абвгд, а ключ да. допустим у букв следующие номера, а=1,б=2,в=3,г=4,д=5.
Получаем следующий сдвиг: 1+5,2+1,3+5,4+1,5+5. переводим обратно и выходит1+5=6 это буква е, 3-в,8-з,5-д,10-к. в результате получили слово евздк.
вот что я имел ввиду.
Записан
Alf
Гость
« Ответ #3 : 01-05-2005 19:55 » new

Вообще-то в арифметике этот "сдвиг" суммой называется...

После операции сложения понадобится обратная к Ord(C) операция - Chr(I). Эта стандартная функция возвращает символ, номер которого в данном алфавите задается значением I.
Записан
M31
Помогающий

ua
Offline Offline

« Ответ #4 : 01-05-2005 19:57 » 

Если кому интересно вот самое элементарное решение:
Код:
var
  word: string; { слово, которое будем шифровать }
  key: string; { слово - ключ }
  i: byte;
begin
  word := 'abcde';  key := 'da';
writeln(word);
writeln(key);
  for i := 1 to length(word) do begin
    word[i] := chr( ord(word[i]) + ord(key[succ(i mod length(key))]) - pred(ord('a')) );
  end;
  writeln(word);
end.
« Последнее редактирование: 20-12-2007 18:39 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines