Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР по Программированию.doc
Скачиваний:
1
Добавлен:
06.08.2019
Размер:
302.08 Кб
Скачать

Министерство образования Российской федерации

Волгоградский государственный технический университет

Контрольная работа

по Основам программирования

(наименование дисциплины)

Выполнил: студент гр.АУЗ-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)))

лок-схема