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

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

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

> Задача на массив и кодировку, Помогите решить!!!
Лекса
сообщение 17.04.2006 19:31
Сообщение #1





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

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


Срочно нужно написать программу. Условие:

"Для заданного массива (можно взять любой файл), рассматривая его как двоичное кодирование. вычислить коэффициенты экономии или перерасхода памяти (отношения использованных объёмов при разных способах хранения) при хранении его в виде длин цепочек с полубайтовым, байтовым и двухбайтовым представлением длин цепочек."

Может у кого есть готовая или кто нибудь по быстрому накатает. Заранее всем спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
Malice
сообщение 18.04.2006 11:20
Сообщение #2


Профи
****

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

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


По быстрому никто катать не будет. Что-то уже сделал ? Показывай. В принципе все просто, осталось уточнить формат кодирования (мне кажется условие неоднозначно). Я вижу 2 возможных варианта (приведу на примере байта):
1. первый байт - значение, второй количество. значение=[0,1];
2. только количество. Считаем, что 1-цы и нули чередуются. Тогда пусть сперва всегда 0, дальше по очереди (если нет, то количество=0, тоже самое при недостатке разрядов в количестве).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Лекса
сообщение 18.04.2006 17:21
Сообщение #3





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

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


Возможно. Только мне кажеться что начинать нужно не с нуля, а с единици. И уже их количество считать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 18.04.2006 21:24
Сообщение #4


Профи
****

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

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


Цитата(Лекса @ 18.04.2006 17:21) *
Возможно. Только мне кажеться что начинать нужно не с нуля, а с единици. И уже их количество считать.

Не понял, что возможно, и какая разница с чего начинать. Вот набросок второго варианта:
uses crt;
const max:array [0..2] of word =($f,$ff,$ffff);
var q:byte;
f:file of byte;
j,b,i,c:byte;
l,ct:longint;
begin
assign (f,'c:\test.dat');
for j:=0 to 2 do begin
l:=0; reset (f); c:=0; ct:=0;
repeat
read(f,b); q:=128;
for i:=7 downto 0 do begin
if (b and q) shr i=c then begin
inc (ct);
if ct>max[j] then begin
inc(l,2); ct:=1; end;
end else begin c:=1-c; ct:=1; inc(l); end;
q:=q shr 1;
end;
until eof(f);
inc(l);
writeln (max[j],'=',l*((1 shl j)/2):0:1, ' bytes');
end;
close(f);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Лекса
сообщение 19.04.2006 18:34
Сообщение #5





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

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


Спасибо, пашет как лошадь. Глотает даже музыку и анимацию.
Я только хотел уточнить. Он при выводе пишет:
15=*.*
255=*.*
56535=*.*

15 - это длинна строки в полбайта, 255 - в байт, а 65535 - в два байта?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 19.04.2006 19:26
Сообщение #6


Профи
****

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

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


Цитата(Лекса @ 19.04.2006 18:34) *

Спасибо, пашет как лошадь. Глотает даже музыку и анимацию.

Пожалуйста. smile.gif Разобрался хоть ?
Цитата

15 - это длинна строки в полбайта, 255 - в байт, а 65535 - в два байта?

Да, именно так.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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