Форум Кургана и Курганской области и наших друзей

Зима. Форум Кургана и Курганской области и наших друзей
17 Октябрь 2019, 14:12:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите написать коментарий к программам.  (Прочитано 1940 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mr.GROZNY
Коллежский регистратор


Карма: 0
Offline Offline

Сообщений: 2


Награды
« : 20 Декабрь 2008, 11:03:22 »

Здравствуйте! Помогите пожалуйста написать коментарий к программам, т.е. что в каждой строке исходного кода программы выполняется.
Вот две задачи и исходный код их.


1) Абаракадабра:
Последовательность из латинских букв строится следующим образом. На первом шаге она пуста. На каждом последующем шаге последовательность удваивается, после чего к ней слева дописывается очередная буква латинского алфавита (а, b, с, ...). Ниже приведены первые шаги построения последовательности:
Шаг 1. пустая последовательность
Шаг 2. а
Шаг 3. baa
Шаг 4. cbaabaa
Шаг 5. dcbaabaacbaabaa
Задача состоит в том, чтобы по заданному числу N определить символ, который стоит на N-ом месте в последовательности, получившейся после 26-го шага.

Технические требования:
Входной файл: INPUT.TXT
Выходной файл: OUTPUT.TXT

Ограничение времени: 20 секунд

Формат входных данных: Во входном файле записано одно натуральное число N (1 <= N <= 2в26степени).

Формат выходных данных: Запишите в выходной файл символ, стоящий в позиции N получившейся последовательности.

Пример файлов входных и выходных данных:
INPUT.TXT   OUTPUT.TXT
4              w

ИСХОДНЫЙ КОД:

const
maxn=26;
var
a:array[1..maxn]of longint;
k,n:longint;
i:integer;
begin
readln(n);
a[1]:=1;
for i:=1 to maxn-1 do
a[i+1]:=1+2*a;
for k:=26 downto 1 do
begin
if n=1
then
begin
write(chr(ord('a') + k - 1));
break
end
else
if n>a[k-1]+1
then
n:=n-1-a[k-1]
else n:=n-1;
end;
end.

------------------------------------------------------
2) Криптограмма

Текст закодирован с помощью таблицы, в которой цифрой 0 обозначено отверстие. Для того, чтобы раскодировать сообщение, нужно наложить  сетку на текст так, чтобы в отверстия были видны символы закодированного текста. Сначала на таблицу букв накладывается исходная сетка и читается набор символов, затем сетка поворачивается по часовой стрелке на 90 градусов и читается следующий набор символов и так далее до полного оборота сетки на 360 градусов. Напишите программу SHIFR, которая с помощью сетки расшифровывает закодированный текст.

Входные данные:

Текст и решетка задаются в виде квадратных таблиц в текстовых файлах SHIFR1.DAT и SHIFR2.DAT соответственно, каждая строка таблицы размещается в отдельной строке файла, элементы вводятся через пробел.

Выходных данные:

Файл SHIFR.SOL содержит строку расшифрованного текста.

Пример входных данных:

SHIFR1.DAT

ж б в у н р

и ы н е я е

к х м б р р

о г у р л к

т и р я о о

с е н ю е т

SHIFR2.DAT

1 0 1 0 1 0

1 1 1 1 0 1

1 1 0 1 1 1

1 0 1 1 0 1

1 1 1 1 1 0

1 1 1 0 1 1

 

Пример выходных данных:

SHIFR1.SOL
бурямглоюнебокроетвихриснежныекрутя

ИСХОДНЫЙ КОД:

program kodik;
uses crt;
const
n = 8;
type
sType = string[n];
matrix = array[1 .. n] of sType;
const
mask: matrix = (
    'x...x...',
    '.x...x..',
    '..x...x.',
    '...x...x',
    '..x...x.',
    '...x....',
    'x...x..x',
    '..x..x..'
  );

st: string =
    'сколькоцелыхчетырёхзначныхчиселможнополучитьизцифрнольодиндватри';

var
encoded: matrix;
masked: matrix;

{ Процедура поворота матрицы }
procedure T(var res: matrix);
var
i, j: integer;
mx: matrix;
begin
mx := res;
for i := 1 to n do
for j := 1 to n do
res[j, n - i + 1] := mx[i, j];
end;

{ Зашифровка текста }
procedure EncodeText(const s: string;
const mask: matrix; var mx: matrix);
var
i, j, count: integer;
masked: matrix;
begin
  { Заполнение матрицы mx строками по N пробелов }
for i := 1 to n do
for j := 1 to n do mx := mx + #32;

masked := mask;
count := 1;
while count <= length(s) do begin

for i := 1 to n do
for j := 1 to n do
if masked[i, j] = 'x' then begin
mx[j] := s[count];
inc(count)
end;
T(masked);

end;
end;

{ Расшифровка текста }
function DecodeText(const mask, encoded: matrix): string;
var
s: string;
i, j, count: integer;
masked: matrix;
begin

masked := mask;
count := 0; s := '';
while length(s) < n*n do begin
for i := 1 to n do
for j := 1 to n do
if masked[i, j] = 'x' then s := s + encoded[i, j];
T(masked);
end;
DecodeText := s;

end;
var
i: integer;
begin

EncodeText(st, mask, encoded);

writeln('encoded text: ');
for i := 1 to n do begin
writeln(encoded);
end;

writeln(DecodeText(mask, encoded));

end.



ПОМОГИТЕ ПОЖАЛУЙСТА!!! Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC
rss | wap
Valid XHTML 1.0! Valid CSS!