 
        
        - •Var a,b,c,d,p:real;
- •Var m,n:real;
- •Var x1,y1,x2,y2,x3,y3,x4,y4:real;
- •Var X,p:real;
- •Var f,a:real;
- •Var a:array[1..12] of integer;
- •I,s:integer;
- •Var a:array[1..100] of integer;
- •I,n:integer;
- •Var a:array[1..M,1..N] of real;
- •I,j,k:integer;
- •Var a:array[1..10,1..10] of integer;
- •I,j,m,n:integer;
- •Var k,m,n,l,z:real;
- •Var I:integer;
- •Var I,k,a:integer;
Задание№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, в противном случае 
уменьшить в два раза.
увеличить на 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.
из 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. Массив вывести до
и после преобразования.
элементов. Каждый третий элемент в
массиве заменить остатком от деления
этого элемента на 2. Массив вывести до
и после преобразования.

