Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 9.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. Фромм считал что в массе у человека чувство бессилия невозможность сопротивляться
2. Т6 Решение задачи о притоке газа к скважине методом последовательной смены стационарных состояний Вновь
3. Комплексный анализ финансово-хозяйственной деятельности ОАО Экономайзер
4. 2014 Понедельник Вторник
5. Психологическое исследование личностных особенностей родителей с различным стилем отношения к ребенку
6. МСФО 12. 1 Необходимость отражения отложенного налога МСФО 12
7. Интернет и телефон
8. задание
9. Воскресенье
10. Основные принципы трудового права
11. Высокое искусство самообразования
12.  ~ 1312 с Всемирная энциклопедия
13. Реферат- Лимонник китайский
14. Реферат- Політична історія Київської Русі
15. Назначение поэзии- Гамлет и его проблемы
16. Подбор параметра
17. Тема ’ 1. Законы царя Вавилона Хаммурапи 4 ч.html
18. Біопрогнозування надзвичайних ситуацій
19. Реферат- Источники излучения в интегрально-оптических схемах
20. заданием. Лабораторные работы преследуют следующие цели- приучить студента к экспериментальны