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

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

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

 
 Ответить  Открыть новую тему 
> Шифрование, Заканчиваем 11 класс, а тут программирование совсем сложным стало... П
Black Zi
сообщение 19.03.2007 17:41
Сообщение #1





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

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


1. Создать программу шифровщик-дишифровщик. Вначале выбераем шифровку или дишифровку выполняем. Для шифровки вводим русский текст, преобразуем все буквы в заглавные, а затем прибавляем каждому коду буквы сдвиг (сдвиг может быть и отрицательным, мы сами его вводим). А на дишифровщике точно на оборот... Заранее благодарю!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 19.03.2007 18:05
Сообщение #2


Профи
****

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

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


Ну вот вроде шифровка так выглядит, если я правильно понял ( или с русскими по другому? ), для любых сиволов. Это только шифровка обратный процесс аналогичен:

uses crt;
var s : string;
ch : char;
n,i : integer;
newstring : string;
begin
Clrscr;
writeln ('Vvedite stroku');
readln (s);
newstring:=s;
writeln ('Shifrujem: Y/N');
readln (ch);
if (Ch='y') or (Ch='y') then
begin
writeln ('Vvedite velichinu smeshenija? ');
readln (n);
for i:=1 to Length(S) do
begin
newstring[i]:=Upcase(chr(ord(s[i])+n));
end;
end else exit;
writeln ('Novaja stroka: ',newstring);
readkey;
end.



Сообщение отредактировано: Tan - 19.03.2007 18:20


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 19.03.2007 18:30
Сообщение #3


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


 ! 
Если тема не будет переименована, она будет закрыта



Tan, и что выдаст твоя программа для строки

ab при n = -4 ?

Пользуемся поиском, задача решалась !


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 19.03.2007 18:38
Сообщение #4


Профи
****

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

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


Границы смещения я и не ставил, если ты про это конечно, если человек понял идею для него это не проблема.


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 19.03.2007 18:39
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Да что ты ! А что-же у тебя в программе знначат вот эти строки ?

 writeln ('Vvedite velichinu smeshenija? ');
readln (n);

//....

newstring[i]:=Upcase(chr(ord(s[i])+n))


?

+ Смотрел какой результат UpCase дает для кириллицы ? А ведь именно с ней надо работать по заданию.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 19.03.2007 20:48
Сообщение #6


Человек
*****

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

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


Цитата(klem4 @ 19.03.2007 17:30) *

Если тема не будет переименована, она будет закрыта

а пользыватели могут периименовывать темы? Мы простые смертные на это к сожелению не способны...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 19.03.2007 21:08
Сообщение #7


Помощник капитана
****

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

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


{$X+}
function UpNCase(ch: char): char;
begin
case ch of
'А'..'п': begin UpNCase:=chr(ord('А')+ord(ch)-ord('а')); end;
'р'..'я': begin UpNCase:=chr(ord('Р')+ord(ch)-ord('р')) end;
end;
end;


Вот подкидываю с кириллицей..


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 20.03.2007 11:53
Сообщение #8


Гость






Шифрование текста (метод Цезаря)
 К началу страницы 
+ Ответить 
Black Zi
сообщение 20.03.2007 17:07
Сообщение #9





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

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


Ребят, век не забудем... Я пока не проверял, но выгледит красиво. Надеюсь машине тоже понравится... А переименовать почему-то не могу тему. Мож потому что я с мини оперы сдеся...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 20.03.2007 17:21
Сообщение #10


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Мне кажется просто Цезарь это не совсем то что нужно, я думаю должно быть что-то вроде этого:

const
s_alpha = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
b_alpha = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';

function Lower(s: String): String;
var
i: Integer;
begin
for i := 1 to Length(s) do
s[i] := s_alpha[ Pos(s[i], b_alpha) ];
Lower := s;
end;

function Crypt(const s: String; shift: Integer): String;
var
newPos, i, delta: Integer;
r: String;
begin

shift := shift - 33 * (shift div 33);

if shift < 0 then shift := 33 + shift;

r := '';

for i := 1 to Length(s) do begin
newPos := Pos(s[i], s_alpha) + shift;
if newPos > 33 then dec(newPos, 33);
r := r + b_alpha[newPos];
end;

Crypt := r;
end;

function DeCrypt(s: String; shift: Integer): String;
begin
Decrypt := Lower(Crypt(Lower(s), -shift));
end;

var
s: String;

begin
s := 'абвя';
writeln(s);
s := Crypt(s, -34);
writeln(s);
s := DeCrypt(s, -34);
writeln(s);
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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