Вариант №2
Задание 1: Закодировать свою фамилию имя отчество кодом Шеннона–Фано с мощностью кода 4.
Петров Павел Алексеевич
Буква | Вероятность | Шаг 1 | Шаг 2 | Шаг 3 | Итог |
Е | 5/23 | ||||
В | 3/23 | ||||
_ | 2/23 | ||||
А | 2/23 | ||||
П | 2/23 | ||||
Л | 2/23 | ||||
О | 1/23 | ||||
Р | 1/23 | ||||
Т | 1/23 | ||||
К | 1/23 | ||||
С | 1/23 | ||||
И | 1/23 | ||||
Ч | 1/23 |
П | е | т | р | о | в | П | а | в | е | л | А | л | е | к | с | е | е | в | и | ч |
Ответ: 21 00 311 310 30 10 11 21 20 10 00 22 11 20 22 00 320 321 00 00 10 330 331
Задание 2: Номер студенческого билета (последние 4 цифры) в прямом и обратном порядке перевести в двоичную систему, восьмеричную, шестнадцатеричную. Произвести сложение и вычитание полученных значений.
Номер студенческого билета: 3572, наоборот 2753
357210=1101111101002
275310=1010110000012
357210=67648
275310=53018
357210=DF416
275310=AC116
Сложение:
Десятичная:357210 + 275310 = 632510
Двоичная: 1101111101002 +1010110000012 = 1100011001001012
Восьмеричная: 67648 + 53018 = 614458
Шестнадцатеричная: DF416 + AC116 = 632516
Вычитание:
Десятичная:357210 - 275310 = 81910
Двоичная: 1101111101002 -1010110000012 = 11001100112
Восьмеричная: 67648 - 53018 = 14638
Шестнадцатеричная: DF416 - AC116 = 33316
N | Выражение | Варианты значений переменных a, x и P | |||||
(ln(x)<x) и не Р и (sqrt(x)>x*x) или (2*x=x) | истинно | х=2.5 Р=нет | х=2.5 Р=да | х=0.5 Р=да | х=0.5 Р=нет | х=2 Р=нет | |
Задание 3.1:Записать выражение с помощью логических функций и определить, при каких значениях переменных (числовой и логической) выражение истинно (или ложно)
Решение:
1) Для x = 2.5 и P = нет. выражение (ln(x)<x) и не Р и (sqrt(x)>x*x)или (2*x=x) ложно
2) Для x = 2.5 и P = да. выражение (ln(x)<x) и не Р и (sqrt(x)>x*x)или (2*x=x) ложно
3) Для x = 0.5 и P = нет. выражение (ln(x)<x) и не Р и (sqrt(x)>x*x)или (2*x=x)истина
4) Для x = 0.5 и P = да. выражение (ln(x)<x) и не Р и (sqrt(x)>x*x)или (2*x=x) ложно
5) Для x = 2и P = нет. выражение (ln(x)<x) и не Р и (sqrt(x)>x*x)или (2*x=x) ложно
Задание 3.3: Решить следующие задачи (один вариант для всех):
Указать порядок выполнения операций
А) aandbornotcandd
б) a or b and not a or c and not d
2. Указать при каких значениях параметров выражение, истинное при выполнении указанного условия и ложное в противном случае (записать диапазон значений параметров):
а) 0<x<1
б) x=max(x,y,z)
в) x≠max(x,y,z) (операцию not не использовать)
г) по крайней мере одна из логических переменных a или b имеет значение true
д) только одна из логических переменных a или b имеет значение true
е) обе логические переменные a и b имеет значение true
ж) только одна из логических переменных a, b, с имеет значение true
з) целые числа n и k имеют одинаковую четность
Жирным выделены правильные варианты ответа
Задание 4: Составить блок-схему и алгоритм решения задач. Упростить выражение при помощи дополнительной переменной. Значения параметров выбрать самостоятельно таким образом, чтобы не было деления на ноль и отрицательного подкоренного выражения (для корня четной степени)
Блок-схема:
Листинг Задачи:
program zadanie4; var A: integer = 3; B: integer = 5; C: integer = 4; x,sqrx,y:real; begin WriteLn('Введите значение для A, B, C'); readln(A,B,C); x:= A+B+C; sqrx:= sqr(A) + sqr(B) + sqr(C); ifsqrx = 0 thenWriteLn('При данных значениях A,B,C происходит деление на 0!') else begin y:=B * exp(0.5 * (x/sqrx))*(abs(x) - x/sqrx); end; Writeln(y); readln(); end. |
Задание 5: Вывести сумму чисел x+y+z, определить четная ли она, если четная, то найти значение произведения x*y*z.
Блок-схема:
Листинг Задачи:
program zadacha5; var x, y, z, s, p: integer; begin readln(x, y, z); s:= x + y + z; writeln(s); if s mod 2 = 0 then begin p:= x * y * z; writeln(p); end; end. |
Задание 6: Составить блок – схему алгоритма и программу для следующих задач: Ввести три действительных числа. Наименьшее из них заменить их средним арифметическим значением, а наибольшее их удвоенным произведением.
Блок-Схема:
Листинг Задачи:
program zadanie6; var a,b,c:Integer; min, max:Double; begin writeln('Введитетричисла:'); readln(a,b,c); min:= a; max:= a; if b > max then max:= b; if b < min then min:= b; if c > max then max:= c; if c < min then min:= c; writeln('Наименьшее число:', min); min:= (a+b+c)/3; writeln('Средне арифметическое значение:', min); writeln('Наибольшее число:', max); max:= (a*b*c)*2; writeln('Удвоенное произведение:', max); end. |
Задание 7: Составить блок – схему алгоритма и программу, используя три различных цикла, определить значение:
Блок-схема:
Листинг кода:
program zadanie7; var p1,p2,p3:integer; n1,n2,n3:integer; x:integer; begin p1:=1; p2:=1; p3:=1; writeln('Введитечисло x:'); readln(x); for n1:=1 to 4 do p1:= p1 * (sqr(n1)+x); while n2<= 4 do begin p2:= p2 * (sqr(n2)+x); Inc(n2); end; repeat p3:= p3 * (sqr(n3)+x); Inc(n3); until n3 < 4; writeln('Значение произведения через цикл for:' + p1); writeln('Значение произведения через цикл while:' + p1); writeln('Значение произведения через цикл until:' + p1); end. |
Задание 8: Используя три различных цикла, трижды протабулироватьфункцию:
Блок-схема:
Листинг задачи:
program zadanie8; var a, upper, down, x1, x2, x3: integer; p1:Double; begin writeln('Введите значение переменной a:'); readln(a); x2:= -4; x3:= -4; for x1:=-4 to 5 do begin upper:= 2 * x1 + a; down:= (x1*x1*x1 - 2 * sqr(x1) - x1 + 2); ifdown = 0 thenwriteln('Невозможно вычислить выражение! Деление на ноль! x=' + x1 + ' a=' + a) else p1:= upper/down; end; while x2 <= 5 do begin upper:= 2 * x2 + a; down:= (x2*x2*x2 - 2 * sqr(x2) - x2 + 2); ifdown = 0 thenwriteln('Невозможно вычислить выражение! Деление на ноль! x=' + x2 + ' a=' + a) else p1:= upper/down; Inc(x2); end; repeat begin upper:= 2 * x3 + a; down:= (x3*x3*x3 - 2 * sqr(x3) - x3 + 2); ifdown = 0 thenwriteln('Невозможно вычислить выражение! Деление на ноль! x=' + x3 + ' a=' + a) else p1:= upper/down; Inc(x3); end; until x3 > 4; end. |
Задание 9: Определить n первых членов рекуррентной последовательности:
Блок-схема:
ЛистингЗадачи:
program zadacha9; var n:integer; a:array [1..4] of real; s:real; i:integer; begin read(n); a[1]:= 0; a[2]:= 0; a[3]:=2; s:=2; if (n <= 3) then writeln(s) else begin for i:=4 to n do begin a[4]:= (a[i-2]*sqrt(a[i-1])) + (2 * i * a[i-3]); a[1]:=a[2]; a[2]:=a[3]; a[3]:=a[4]; s:= s * a[3]; end; writeln(s); end; end. |
Задание 10: Составить блок – схему алгоритма и программу для следующих задач:
Ввести одномерный массив A из 12 элементов. Определить в нём произведение чётных элементов
Блок-схема:
Листинг задачи:
program zadanie10; const n = 12; var a: array[1..n] of integer; p, i: integer; begin writeln('введитемассив='); for i:= 1 to n do begin readln(a[i]); end; p:= 1; for i:= 1 to n do begin if a[i] mod 2 = 0 then begin p:= p * a[i]; end; end; writeln('произведение четных элементов=', p); readln; end. |
Задание 11: Составить блок – схему и разработать алгоритм решения следующих задач:
Ввести одномерный массив A из N элементов. Каждый четный элемент массива нацело разделить на два. Массив вывести до и после преобразования.
Блок-схема:
program zadanie11; const n = 11; var a: array[0..n] of integer; i: integer; begin for i:= 0 to n do begin writeln('Введите a[' + i + '] элемент:'); readln(a[i]); end; writeln('Массивдопреобразования:'); for i:= 0 to n do begin writeln('a[' + i + ']:' + a[i]); end; writeln('Массив после преобразования:'); for i:= 0 to n do begin if a[i] mod 2 = 0 then a[i]:= a[i] div 2; writeln('a[' + i + ']:' + a[i]); end; end. |
Листинг задачи:
Задание 12: Составить блок – схему алгоритма и разработать программу решения следующих задач: Ввести двумерный массив A 4х3. Определить в нём среднее геометрическое элементов, значения которых лежат в диапазоне [2;10].
Блок-схемы:
Листингкода:
program zadanie12; const n = 3; m = 4; var a: array[1..n, 1..m] of integer; i, j: integer; s: integer; geom: real; begin s:= 1; for i:= 1 to n do begin for j:= 1 to m do begin Writeln('Введите a[' + i + ',' + j + '] элементмассива:'); readln(a[i, j]); if (a[i, j] >= 2) and (a[i, j] <= 10) then s:= s * a[i, j]; end; end; geom:= power(s, 1 / 9); writeln('Среднеегеометрическое = ', geom: 8: 2); end. |
Задание 13: Составить блок – схему алгоритма и разработать программу решения следующих задач:
Ввести двумерный массив ANхM Все элементы, которые не кратны 2 и лежат вне диапазона [-2; 6] увеличить на 5. Массив вывести до и после преобразования.
Блок-схема:
Листинг кода:
program zadanie13; const n = 3; m = 4; var a: array[1..n, 1..m] of integer; i, j: integer; begin for i:= 1 to n do begin for j:= 1 to m do begin Writeln('Введите a[' + i + ',' + j + '] элементмассива:'); readln(a[i, j]); Writeln('До изменения a[' + i + ',' + j + '] элемента массива:' + a[i, j]); if (a[i, j] mod 2 <> 0) and ((a[i, j] < -2) or (a[i, j] > 6)) then a[i, j]:= a[i, j] + 5; Writeln('Послеизменения a[' + i + ',' + j + '] элементамассива:' + a[i, j]); end; end; end. |
Задание 14: Составить блок – схему и алгоритм решения следующих задач:
Ввести файл F из 14 элементов. Определить в нём произведение элементов, квадрат которых меньше 16.
Блок-Схема:
Листинг-кода:
program zadanie14; type fint = file of integer; var b,i:integer; p: longint; f: fint; begin assign(f,'file.txt'); rewrite(f); writeLn('Введите 14 компонентовфайла F:'); for i:=1 to 14 do begin readLn(b); write(f,b); end; reset(f); p:= 1; while not EOF(f) do begin read(f,b); if sqr(b) < 16 then p:= p * b; end; close(f); writeln('Произведение элементов, квадрат которых меньше 16 = ', p); readln(); end. |
-
Дополнительное задание 16: Составить блок – схему алгоритма и разработать программу решения следующих задач:
Ввести одномерный массив A целых чисел, вывести его. Найти произведение первых трѐх отрицательных элементов. Произведением заменить все нечетные элементы, если это невозможно, то сообщить об этом.
Дополнительное задание 17: Составить блок – схему алгоритма и разработать программу решения следующих задач:Ввести двумерный массив ANхM, вывести его. Найти максимальный по значению элемент массива и увеличить его в два раза. Все остальные элементы массива уменьшить на значение минимума последней строки массива.
Дополнительное задание 18: Составить блок – схему алгоритма и разработать программу решения cледующих задач: дважды вычислить значение выражения, первый раз используя процедуру, а второй – функцию.
Дополнительное задание 19: Составить блок – схему алгоритма и разработать программу решения cледующих задач:
Ввести матрицы XNXxMX, YNYxMY. В матрицах найти максимумы, которые вывести. Преобразовать каждую матрицу, уменьшив еѐ положительные элементы на значение максимума другой матрицы. Исходные и преобразованные матрицы вывести на экран. (При решении реализовать процедуры ввода и вывода массивов: Vvod2m(A,N,M,Name), Vivod2m(A,N,M,Name) и Zamena(A,N,M,Vichet) – уменьшение положительных элементов матрицы на величину Vichet, а также функцию Maximum(A,N,M):<тип массива> – поиск максимума)