Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 8 вариант.docx
Скачиваний:
1
Добавлен:
11.11.2019
Размер:
248.21 Кб
Скачать

Задание№1 Кодирование Шеннона-Фано

Фоменко Валентина Леонидовна

Длина строки 28 символов. Определим вероятность для каждого символа и выпишем их в порядке убывания вероятности:

Шаг 1

28/4=7

Буква

Вероятность

Шаг 1

Шаг 2

Шаг 3

Итог

Н

5/28

0

0

00

О

4/28

1

01

А

3/28

1

0

10

Е

3/28

1

11

_

2/28

2

0

20

В

2/28

1

21

И

2/28

2

22

Л

2/28

3

1

31

Д

1/28

2

32

Т

1/28

3

33

Ф

1/28

4

34

Задание№2 Кодирование Хаффмена

Закодировать свою фамилию имя отчество Кодом Хаффмена с мощностью кода 4.

Фоменко Валентина Леонидовна

Длина строки 28 символов. Для кодирования методом Хаффмена с мощностью кода 4 нам не хватает 1 буквы, поэтому добавим две фиктивные буквы с нулевыми вероятностями. Затем определим вероятности для каждого символа и выпишем их в порядке убывания вероятностей.

Буква

Вероятность

Шаг 1

Шаг 2

Н

5/28

5/28

6/28(2)

О

4/28

4/28

4/28

А

3/28

3/28

3/28

Е

3/28

3/28

3/28

_

2/28

2/28(1)

В

2/28

2/28

И

2/28

2/28

Л

2/28

2/28

Д

1/28

Т

1/28

Ф

1/28

0/28

На каждом шаге «склеиваем» 4 (по мощности кода) нижних вероятности и переупорядочиваем преобразованные вероятности по убыванию. «Склеиваемые» вероятности выделены жирным курсивом, а место куда попала суммарная вероятность отмечено в скобках номером шага.

Теперь идем в обратную сторону. Каждому символу в последней группе

(шаг 4) ставим в соответствии код от 0, 1, 2 или 3 (т.к. мощность 4).

Шаг 1

Код

5/28

1

4/28

2

3/28

3

3/28

00

2/28(1)

01

2/28

02

2/28

03

2/28

11

Шаг 2

Код

6/28 (2)

0

4/28

1

3/28

2

3/28

3


Получаем:

Буква

Вероятность

Код

Шаг 1

Код

Шаг 2

Код

Н

5/28

5

5/28

1

6/28(2)

0

О

4/28

00

4/28

2

4/28

1

А

3/28

01

3/28

3

3/28

2

Е

3/28

02

3/28

00

3/28

3

_

2/28

03

2/28(1)

01

В

2/28

11

2/28

02

И

2/28

12

2/28

03

Л

2/28

13

2/28

11

Д

1/28

20

Т

1/28

21

Ф

1/28

22

0/28

23

ЗАДАНИЕ№4 1. Линейные вычислительные процессы.

Вычислить значение при различных значениях аргументов.

Var a,b,c,d,p:real;

Begin

writeln('Введите данные');

write('A = ');

readln(A);

write('B = ');

readln(B);

write('C = ');

readln(C);

D:=exp(ln(abs(A))*B)+sqr(C);

P:=ln(D)+sqr(sin(sqrt(D)/(A*B-C)));

writeln('P = ',P:7:3);

readln;

end.

ЗАДАНИЕ№5

2.3. Простые развилки.

Если больше чем , то увеличить на 10, в противном случае уменьшить в два раза.

Var m,n:real;

Begin

writeln('Введите m,n');

write('m=');

readln(m);

n:=exp(ln(2)*m);

writeln('2^m = ',n:5:3,' 2m = ',2*m:5:3);

if n>2*m

then m:=m+10

else m:=m/2;

writeln('m = ',m:5:3);

readln;

end.

ЗАДАНИЕ№6

2.4. Задачи с несколькими развилками.

Ввести , , – координаты трёх вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвёртой вершины.

Var x1,y1,x2,y2,x3,y3,x4,y4:real;

Begin

writeln('Введите данные');

write('x1= ');

readln(x1);

write('y1= ');

readln(y1);

write('x2= ');

readln(x2);

write('y2= ');

readln(y2);

write('x3= ');

readln(x3);

write('y3= ');

readln(y3);

if x1=x2

then x4:=x3

else x4:=x1;

if y1=y2

then y4:=y3

else y4:=y1;

writeln('x4 = ',x4:5:3,' y4 = ',y4:5:3);

readln;

End.

ЗАДАНИЕ№7

3.4. Математические ряды.

Используя три различных цикла определить значение.

Произведения, .

Var X,p:real;

n:integer;

Begin

write('Введите х = ');

readln(x);

p:=1;

for n:=1 to 5 do

p:=p*(1/sqrt(2*n)+x);

writeln('Цикл For = ',P:7:4);

p:=1;

n:=1;

while n<=5 do

begin

p:=p*(1/sqrt(2*n)+x);

n:=n+1;

end;

writeln('Цикл While = ',P:7:4);

p:=1;

n:=0;

Repeat

n:=n+1;

p:=p*(1/sqrt(2*n)+x);

Until n=5;

writeln('Цикл Repeat = ',P:7:4);

readln;

end.

ЗАДАНИЕ№8

3.5. Табулирование функции.

Используя три различных цикла, трижды протабулировать функцию.

на интервале , .

const k1=-3;

k2=8;

Var f,a:real;

k:integer;

Begin

write('Введите a =');

readln(a);

writeln('Табулирование функции на интервале [',k1,',',k2,'] с шагом 1 цикл for');

for k:=k1 to k2 do

begin

if k mod 2=0

then f:=k*k*k+a

else f:=a*k;

writeln('f(',k,') = ',f:5:3);

end;

writeln('Табулирование функции на интервале [',k1,',',k2,'] с шагом 1 цикл while');

k:=k1;

while k<=k2 do

begin

if k mod 2=0

then f:=k*k*k+a

else f:=a*k;

writeln('f(',k,') = ',f:5:3);

k:=k+1;

end;

writeln('Табулирование функции на интервале [',k1,',',k2,'] с шагом 1 цикл repeat');

k:=k1;

Repeat

if k mod 2=0

then f:=k*k*k+a

else f:=a*k;

writeln('f(',k,') = ',f:5:3);

k:=k+1;

Until k>k2;

readln;

end.

ЗАДАНИЕ№9

4.1. Расчеты и обработка данных.

Ввести одномерный массив из 12 элементов. Определить в нём сумму элементов чье значение без остатка делится на 3 и не делится на 2.

Var a:array[1..12] of integer;

I,s:integer;

Begin

s:=0;

writeln('Введите массив A');

for i:=1 to 12 do

begin

write('A[',i,'] = ');

readln(A[i]);

if (A[i] mod 3=0) and (A[i] mod 2<>0)

then s:=s+A[i];

end;

write('массив A :');

for i:=1 to 12 do

write(A[i]:5);

writeln;

writeln('Cуммa элементов чье значение без остатка делится на 3 и не делится на 2 = ',S);

readln;

end.

ЗАДАНИЕ№10

4.2. Обработка элементов массива.

Ввести одномерный массив из элементов. Каждый третий элемент в массиве заменить остатком от деления этого элемента на 2. Массив вывести до и после преобразования.