|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2008, 08:03 | #1 |
Новичок
Джуниор
Регистрация: 14.12.2008
Сообщений: 2
|
Помогите написать коментарий к программам.
Здравствуйте! Помогите пожалуйста написать коментарий к программам, т.е. что в каждой строке исходного кода программы выполняется.
Вот две задачи и исходный код их. 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[i]; 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[i] := mx[i] + #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[i][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[i]); end; writeln(DecodeText(mask, encoded)); end. ПОМОГИТЕ ПОЖАЛУЙСТА!!! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Литература по офисным программам | mihali4 | Microsoft Office Excel | 2 | 31.10.2008 16:19 |
ПОМОГИТЕ НАПИСАТЬ | pilevas | Помощь студентам | 1 | 17.06.2008 14:22 |
задача под windows,помогите написать.Надо написать на Borland C++Builder 6. | eddddii | Помощь студентам | 9 | 23.05.2008 17:04 |
Помогите написать БД | stillret | Фриланс | 2 | 13.05.2008 23:58 |
Помогите написать прогу!Среди заданных целых чисел k, l, m найти пары кратных.Написать по проще чемЭесть | vdv08 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 04.04.2008 16:56 |