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

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

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

> Файлы - кодирование и декодирование
Татка
сообщение 7.06.2005 21:08
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


Создать программу кодирования и декодирования файла по следующему принципу: пользователь вводит пароль, программа на основе символов пароля циклически увеличивает символы в файле.

Например:
Пароль содержит символы с кодами 46,54,105.
Файл содержит символы с кодами 35,200,34,221,10,13.
Результирующий файл содержит символы с кодами (35+46,200+54,34+105,221+46,10+54,13+105).

:p2:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
volvo
сообщение 7.06.2005 21:26
Сообщение #2


Гость






Цитата(Татка @ 7.06.05 21:08)
Результирующий файл содержит символы с кодами (35+46,200+54,34+105,221+46,10+54,13+105).

wacko.gif
Код символа ограничен: 0 - 255, там выходит 267, что будем делать?
 К началу страницы 
+ Ответить 
Татка
сообщение 7.06.2005 22:24
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


Я думаю, если код символа больше 255, то код символа минус 255. Ну а обратно принцип понятен. :p2:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.06.2005 22:39
Сообщение #4


Гость






Цитата(Татка @ 7.06.05 22:24)
Ну а обратно принцип понятен.

Ну, раз понятен, то попробуй реализовать... Вот мне например не понятен rolleyes.gif Вот шифрование:
var
f_in, f_out, f_key: text;
ch, key_ch: char;
begin
assign(f_in, 'file_in.txt'); reset(f_in);
assign(f_key, 'file_key.txt'); reset(f_key);

assign(f_out, 'file_out.txt'); rewrite(f_out);

while not eof(f_in) do begin
read(f_in, ch);

read(f_key, key_ch);
if eof(f_key) then reset(f_key);

ch := char((ord(ch) + ord(key_ch)) mod 255);
write(f_out, ch);
end;

close(f_out);
close(f_key);
close(f_in);
end.
 К началу страницы 
+ Ответить 
Татка
сообщение 7.06.2005 22:54
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


Цитата
Ну, раз понятен, то попробуй реализовать... Вот мне например не понятен 


Ну с Паскалем у меня туговато, а вот аналитически - пожалуйста:
например:
250 + 46 = 296

шифруем:
(296 > 255) ? 296 - 255 = 41

дешифруем:
41 - 46 = -5

(-5 < 0) ? 255 + (-5) = 250
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.06.2005 23:05
Сообщение #6


Гость






Ну, я же привел шифрование уже...
Тогда дешифрование будет таким:
var
f_in, f_out, f_key: text;
ch, key_ch: char;
T: shortint;
begin
assign(f_in, 'file_out.txt'); reset(f_in);
{ то что зашифровали предыдущей программой }

assign(f_key, 'file_key.txt'); reset(f_key);
{ тот же ключ }

assign(f_out, 'file_sec.txt'); rewrite(f_out);
{ то что расшифруется - должно быть идентично file_in.txt }

while not eof(f_in) do begin
read(f_in, ch);

read(f_key, key_ch);
if eof(f_key) then reset(f_key);

T := ord(ch) - ord(key_ch);
ch := char(T + byte(T < 0)*255);
write(f_out, ch);
end;

close(f_out);
close(f_key);
close(f_in);
end.
 К началу страницы 
+ Ответить 
Татка
сообщение 7.06.2005 23:10
Сообщение #7





Группа: Пользователи
Сообщений: 8
Пол: Женский

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


:flowers:
Спасибо, спасибо, спасибо!!! :molitva:
:rose:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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