Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 2

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 24.11.2024

  Лабораторная работа №2.

«Преобразование информации в семибитный код».

 

Выполненные работы необходимо присылать тьютору по адресу michnick@aspu.ru. Студенту необходимо выбрать себе один вариант и реализовать программу на любом языке компилируемом языке программирования. Тьютору предоставлять откомпилированный вариант и полные исходные тексты.

 

Долгое время компьютерные сети были способны передавать только семибитные данные (значения байтов меньше 128). Это было связано как с тем, что таблица ASCII содержит только 128 значений (0-127), так и с тем, что восьмой бит использовался для контроля четности.

На одном из конкурсов для программистов была предложена следующая задача:

Написать программу, преобразующую поданный ей на вход файл, в вид, пригодный для передачи по подобной сети. Поскольку на другом конце сети должно производиться восстановление исходного вида файла, а наличие на компьютере-получателе программы кодирования/декодирования неизвестно, то программа передается вместе с файлом. В силу этого, сама программа должна содержать лишь байты, меньшие 128.

 

2.1  Задание на лабораторную работу.

 

В качестве параметра командной строки задается имя файла произвольного вида. Программа должна рассматривать переданный ей файл как бинарный. В ходе работы программы осуществляется преобразование файла к семибитному виду. Преобразование должно быть обратимым. В качестве дополнительного задания возможна реализация второй части: сама программа должна быть семибитной.

Предлагается использовать следующий метод: читаем семь байт из файла и формируем из их старших битов восьмой.

 

program Code;

begin

read(f,a1..a7);

sum:=0;

for i:=1 to 7 do

 s:=ai and 10000000b;

 s:=s shr 7;

 sum:=sum shl 1;

 sum:=sum or s;

endfor

write(f,a1..a7,sum);

end;

 

program decode;

begin

read(f,a1..a7,sum);

for i:=1 to 7 do

 s:=sum mod 2;

 sum:=sum div 2;

 s:=s shl 7;

 ai:=ai or s;

endfor

write(f,a1..a7);

end;

Решение.

  1.  program lr2;
  2.  const n=16;
  3.  var bin,bin1:file of integer;
  4.  i,j:byte;
  5.  a1:array[1..n] of integer;
  6.  b:array[1..n] of string;
  7.  str1,str:string;
  8.  function per1 (s:string):integer;
  9.  var a,i,k,code,n:integer;
  10.  begin
  11.    for i:=1 to 7 do
  12.      begin
  13.      val(s[i],k,code);
  14.      a:=a+trunc(k*power(2,7-i));
  15.      end;
  16.    result:=a;
  17.    end;
  18.  function per (a:integer):string;
  19.  var s : string;
  20.  m,i,k,code,n:integer;
  21.  begin
  22.   m:=1;
  23.   if a<0 then m:=0;
  24.   s:='';
  25.   while a<>0 do
  26.   begin
  27.     if  (abs(a) mod 2)<>0 then s:='1'+s
  28.      else s:='0'+s;
  29.     a:=abs(a) div 2;
  30.   end;
  31.   if m=0 then
  32.   begin
  33.   for i:=1 to 8 do
  34.      if s[i]='0' then s[i]:='1' else s[i]:='0';
  35.   for i:=1 to length(s) do
  36.      begin
  37.      val(s[i],k,code);
  38.      a:=a+trunc(k*power(2,length(s)-i));
  39.      end;
  40.   a:=a+1;
  41.   s:='';
  42.   end;
  43.   if m=0 then
  44.    while a<>0 do
  45.    begin
  46.     if  (abs(a) mod 2)<>0 then s:='1'+s
  47.      else s:='0'+s;
  48.      a:=abs(a) div 2;
  49.    end;
  50.    for i:=1 to 8 do
  51.        if length(s)<8 then s:='0'+s;
  52.    result:=s;
  53.  end;
  54.  begin
  55.  Assign(bin,'bin.dat');
  56.  Assign(bin1,'bin1.dat');
  57.  Rewrite(bin);
  58.  Rewrite(bin1);
  59.  for i:=1 to n do
  60.  write(bin,random(256));
  61.  Reset(bin);
  62.  i:=1;
  63.  while not eof(bin) do
  64.  begin
  65.        read(bin,a1[i]);
  66.        i:=i+1;
  67.  end;
  68.  writeln;
  69.  for i:=1 to n do
  70.          write (a1[i],' ');
  71.  close(bin);
  72.  for i:=1 to n do
  73.  b[i]:=per(a1[i]);
  74.  writeln;
  75.  str:='';
  76.  for i:=1 to n do
  77.      str:=str + b[i];
  78.  writeln (str);
  79.  for i:=1 to n do
  80.  begin
  81.        if length(str) mod 7 <>0 then str:='0' + str;
  82.        i:=i+1;
  83.  end;
  84.  writeln (str);
  85.  for i:=1 to length(str) do
  86.      begin
  87.           str1:=copy(str,i,7);
  88.           write(bin1,per1(str));
  89.           i:=i+6;
  90.      end;
  91.  close(bin1);
  92.  end.
  93.  

  1.  




1. Вознаграждения работникам ПРЕДИСЛОВИЕ Перед вами учебное пособие из се.html
2. Огненная Земля
3. Психофизиологические основы памяти- процесс консолидации следа реверберационные круги возбуждения
4. Этнические конфликты причины возникновения и способы урегулирования
5. СУРГУТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ХАНТЫМАНСИЙСКОГО ОКРУГА ЮГРА
6. Продуктивное использование воспитательных моментов в образовательном процессе
7. Моя педагогическая деятельность
8. технічна база дозволяють виокремити в Україні такі зони
9. Показатели возможной экономической эффективности инвестиций
10. Ярмарка тщеславия В настоящее время ее зовут Глорвина Поски ныне майорша Поски
11. тематически элегантный метод работающий в объектном пространстве
12. язык гипертекстовой разметки; стандартный язык разметки документов во Всемирной паутине
13. Реферат- Невербальные способы общения в психологии
14. .12.2013 среда
15. Политическая наука в XIX-ХХ вв
16. вариант ответа обведя его в кружок или где это возможно выберите свой вариант и напишите его в отведенном д
17. .2013 Интенсивность игры 421 баллов КомандаИгрок
18. Work out To compenste for To mke up for To tolerte To put up with To go towrds To hed for If something tht you hve hoped for or expected it relly hppens Comes true rubbish or pieces
19. Рекреационные ресурсы Северо-Кавказского района
20. записка к курсовому проекту