Министерство образования Российской федерации
Волгоградский государственный технический университет
Контрольная работа
по Основам программирования
(наименование дисциплины)
Выполнил: студент гр.АУЗ-164с
Бужан Александр Васильевич
(Ф. И. О.)
Шифр 20101617
(№ зачетной книжки)
Проверил____________________
(Ф.И.О. преподавателя)
Волгоград 2012
Задание 1.
1. 1 Кодирование Шеннона-Фано
Закодировать свою фамилию имя отчество Кодом Шеннона-Фано с мощностью кода 4.
Бужан Александр Васильевич
Длина строки 26 символов. Определим вероятности для каждого символа и выпишем их в порядке убывания вероятностей:
Буква |
Вероятность |
Шаг 1 |
Шаг 2 |
Шаг 3 |
Итог |
А |
4/26 |
0 |
0 |
|
00 |
Н |
2/26 |
1 |
|
01 |
|
Л |
2/26 |
1 |
0 |
|
10 |
Е |
2/26 |
1 |
|
11 |
|
С |
2/26 |
2 |
|
12 |
|
В |
2/26 |
2 |
0 |
|
20 |
И |
2/26 |
1 |
|
21 |
|
_ |
2/26 |
2 |
0 |
220 |
|
Б |
1/26 |
1 |
221 |
||
У |
1/26 |
3 |
0 |
0 |
300 |
Ж |
1/26 |
1 |
301 |
||
К |
1/26 |
1 |
0 |
310 |
|
Д |
1/26 |
1 |
311 |
||
Р |
1/26 |
2 |
0 |
320 |
|
Ь |
1/26 |
1 |
321 |
||
Ч |
1/26 |
2 |
322 |
Шаг 1. Разбиваем вероятности на 4 группы, в каждой из которых суммарная вероятность примерно равна 26/4=6,5. Каждой группе ставим в соответствии код от 0, 1, 2 или 3 (т.к. мощность 4).
Шаг 2. Каждую группу, полученную на шаге 1, делим на необходимое количество частей с примерно одинаковыми вероятностями. Каждой группе ставим в соответствии код от 0, 1, 2 или 3. Причем в каждой новой группе нумерация начинается заново.
Задание 3. Номер студенческого билета (последние 4 цифры) в прямом и обратном порядке перевести в двоичную систему, восьмеричную, шестнадцетиричную. Произвести сложение и вычитание полученных значений.
Номер зачетной книжки 20101617 последние 4 цифры 1617
161710 =110010100012
161710=31218
161710=65116
Теперь в обратном порядке:
716110=11011111110012
716110=157718
716110=1BF916
Произведем сложение в каждой из систем счисления
11011111110012 + 110010100012 =100010010010102
157718 + 31218 = 211128
1BF916 + 65116 = 224А16
Произведем вычитание в каждой из систем счисления (из большего числа вычтем меньшее).
11011111110012 - 110010100012 = 10101101010002
157718 - 31218 = 126058
1BF916 - 65116 = 15А816
Задание 4. Линейные вычислительные процессы. Тема 1
Вычислить, упростив при помощи дополнительной переменной.
Блок-схема
Нет
Да
Листинг программы на Pascal.
program pr4;
uses math;
var a,b,c,x,m:real;
begin
readln(a,b,c);
if b<>1 then
begin
x:=abs((a+b+power(a,c))/(b*b-1));
m:=ln(x)*ln(x)+4*sin(exp(x));
writeln(m);
end
else
writeln('dividing by zero!');
end.
Задание 5. Разветвляющиеся вычислительные процессы.
2.3. Простые развилки
14. Для дроби
m/n определить превышает ли дробная часть числа 0,5. Если превышает, то число m удвоить, иначе удвоить число n
Блок-схема
mn:=m/n
mn:=frac(mn)
m:=m*2
Да
Нет
n:=n*2
Да
Нет
Листинг программы на Pascal
program pr5;
uses math;
var m,n:integer;
var mn:real;
begin
readln(m,n);
mn:=m/n;
mn:=frac(mn);
if mn>0.5 then
m:=m*2;
if mn<=0.5 then
n:=n*2;
writeln(m);
writeln(n);
end.
Задание 6. Разветвляющиеся вычислительные процессы.2.4.
Ввести целочисленные переменные a, b, c , если все три значения кратны
3, то вычислить их сумму, в противном случае чётные значения a, b, c утроить.
Блок-схема
Да
Нет
a=3*a
b=3*b
c=3*c
Да
Нет
Да
Нет
Да
Нет
Листинг программы на Pascal
program pr6;
var a,b,c:integer;
begin
readln(a,b,c);
if ((a mod 3 = 0) and (b mod 3 = 0) and (c mod 3 = 0)) then
writeln(a+b+c)
else
begin
if a mod 2 = 0 then a:=3*a;
if b mod 2 = 0 then b:=3*b;
if c mod 2 = 0 then c:=3*c;
writeln(a,', ',b,', ',c);
end;
end.
Задание 7. Циклические вычислительные процессы. 3.4.
Используя три различных цикла определить значение. Суммы,
Б
sum:=sum + (2/(
(i+x)*(i+x)*(i+x)))