Шифрования
|
|
snaper1993 | Дата: Понедельник, 24.11.2008, 23:12 | Сообщение # 1 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Известный метод шифрования квадратом: некоторое сообщение вписывается в квадрат по строкам. При этом пропуска заменяют знаком '*', а если в последней строке квадрата остались свободные клеточки, они заполняются точками ('.'). После этого, прочитавши содержимое квадрата столбец за столбцом, получают зашифрованный текст. Ваша задача состоит в том, чтобы зашифровать входное сообщение. Входные данные: В файле Z1.dat содержится сообщения, длиной не больше 5000 символов. При считывании символы переведения строки необходимо игнорировать. Исходные данные: В файл Z1.sol вывести зашифрованное сообщение. Пример: Z1.dat: Attack at dawn or we are done for Промежуточное представление в виде квадрата: A t t a c k * a t * d a w n * o r * w e * a r e * d o n e * f o r . . . Z1.sol: A*ww*ftanedott**ora*oan.cdrre.ka*e*.
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 25.11.2008, 00:39 | Сообщение # 2 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| И в чём проблема? Смотрим размер файла, из него находим размер матрицы. Затем выделяем память под эту матрицу и переписываем в другой файл её же только транспонированную и в одну строчку.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Вторник, 25.11.2008, 00:57 | Сообщение # 3 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Alexander, из того что ти написал я понял только слово "матрица"! Помоги пожалуста, с написанием!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 25.11.2008, 03:22 | Сообщение # 4 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| ну так пиши, а я помогу.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Вторник, 25.11.2008, 03:54 | Сообщение # 5 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Ну я не знаю с чево тут начинать! И што здесь писать?! обще не режу!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 25.11.2008, 03:58 | Сообщение # 6 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| ну начни с открытия файла и проверки его размера. Исходя из этого вычисли порядок матрицы.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Вторник, 25.11.2008, 05:25 | Сообщение # 7 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Quote проверки его размера. Исходя из этого вычисли порядок матрицы. А как ето зделать!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 25.11.2008, 05:45 | Сообщение # 8 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| FileSize, порядок матрицы [sqrt(FileSize(...))]
Скажем дружно- нафиг нужно!
|
|
| |
Seqular | Дата: Вторник, 25.11.2008, 06:46 | Сообщение # 9 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| snaper1993, Учитывая, что матрица квадратная(!), число строк будет равно числу столбцов. А значит общий размер сообщения равен их произведению. И представь, что размер сообщения нам известен, а число строк нужно найти. Как? Извлечением корня из размера. Почитай паскалевский хелп по функции FileSize и по sqrt. И кидай свои догадки сюда
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
snaper1993 | Дата: Вторник, 25.11.2008, 07:33 | Сообщение # 10 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Seqular, если чесно я ничего не понял с выше написаного! Кагбудто на разных языках розговариваем! Пожалуста напишы приблезительный код!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 25.11.2008, 08:01 | Сообщение # 11 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (snaper1993) Кагбудто на разных языках розговариваем! это точно, давай уже на русский переходи .
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Вторник, 02.12.2008, 01:09 | Сообщение # 12 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Alexander, хватит прикаловаться! Я сёрйозно розговариваю а ти....! Помогите с кодом пожалуйста!Добавлено (01.12.2008, 18:09) --------------------------------------------- Вот я зделал, тоже вроди всьо правильно, но когда пишешь не в одной строке то оно фиг зна што выдайот: Code var i,m,n,k,j: integer; x: char; a: array[1..5000]of char; f1,f2: text; b: real; begin assign(f1,'z1.in'); assign(f2,'z1.out'); reset(f1); n:=0;i:=0; while not eof(f1) do begin while not eoln(f1) do begin inc(i); read(f1,x); if x=' ' then a[i]:='*' else a[i]:=x; end; readln(f1); end; a[i]:=a[i+1]; writeln(a[16]); rewrite(f2); n:=i; b:=sqrt(n); writeln(n); k:=trunc(b); if k*k<n then m:=k+1; for i:=(n+1) to m*m do begin a[i]:='.'; end; for i:=1 to m do begin j:=0; while j<=(m*m-1) do begin write(f2,a[j+i]); j:=j+m; end; end; close(f1);close(f2); end. Alexander, Seqular, помогите!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Seqular | Дата: Вторник, 02.12.2008, 09:59 | Сообщение # 13 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| snaper1993, А ты разобрался почему такое происходит? Что значит не в одной строке? Что-то типа: Code фывлфыовлфыовлыовфыв ыфвыфвыфвфывывывывывыв Запускай под отладкой с наблюдением переменной и посмотри, что там не так
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
snaper1993 | Дата: Вторник, 02.12.2008, 16:07 | Сообщение # 14 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Seqular, Да типа вот так! Я не знаю как ето зделать можешь помоч!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Seqular | Дата: Среда, 03.12.2008, 09:08 | Сообщение # 15 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Читай тут
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |