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

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

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

 
 Ответить  Открыть новую тему 
> Задача на массив и кодировку, Помогите решить!!!
сообщение
Сообщение #1





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

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


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

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

Может у кого есть готовая или кто нибудь по быстрому накатает. Заранее всем спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


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





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

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


Возможно. Только мне кажеться что начинать нужно не с нуля, а с единици. И уже их количество считать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


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

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


Профи
****

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

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


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

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

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

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

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

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

 




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