Program vektor;
const
a:array[1..10] of integer = (1,2,4,7,9,12,16,20,23,31);
c:array[1..6] of integer = (6,15,19,28,35,44);
var
f:array[1..16] of integer;
i,j,z:integer;
e:boolean;
begin
i:=1;j:=1;z:=1;
while (i<=10) and (j<=6) and (z<=16) do
begin
if (a[i]<c[j]) and (e=false) then
begin
f[z]:=a[i];
if i<10 then i:=i+1 else e:=true
end
else
begin
f[z]:=c[j];
if j<10 then j:=j+1
end;
write(f[z]:3);
z:=z+1;
end;
end.
program matrix;
var
m:array [1..8,1..8] of integer;
i,j:integer;
begin
for j:=1 to 8 do
begin
for i:=1 to 8 do
begin
m[i][j]:=i+8*(j-1);
write(m[i][j]:3);
end;
writeln;
end;
end.
Для этого надо воспользоваться формулой Шеннона H(a)=−∑(i=1 до N)Pi*log(Pi), где N — количество состояний системы, Pi — вероятность нахождения системы в i-ом состоянии
Мне не очень понятно что есть 5*2, поэтому рассмотрим несколько случаев.
1. 10 — пронумерованных шаров от 0 до 9. В этом случае после наша система после вынимания любого из шаров имеет 10 возможнзых состояний, соотвественно:
вынули шар 0 — в мешке шары от 1 до 9
вынули шар 1 — в мешке шары 0, от 2 до 9
вынули шар 2 — в мешке шары 0,1, от 3 до 9
и т.д.
Таким образом количество состояний системы 10, вероятность нахождения системы в каждом из состоянии просто соответствует частоте появления данного состояний 1/N = 1/10. Таким образом по формуле:
-0,1*log(0,1)-0,1*log(0,1)-… ещё 8 раз, итого получаем -10*0,1*-3,3=~3,3бит (логарифм берём по основанию 2, т.к. считаем информацию в битах).
Собственно если переходить к двоичной арифметике, точнее к прикладным задачам то можно сказать — для того чтобы варазить 10 различных состояний нам необходимо использовать 4бита, т.к. 3 битное число может выразить 8 возможных состояний 2^3. А 4 бита 16 состояний 2^4.
2. Вариант второй у нас 10 шаров номера на которых повторяются каждый по два раза, т.е. два шара 0, два шара 1, и т.д. В этом случае количество состояний нашей системы всего 5:
вынули шар 0 — в мешке шары 0 и от 1 до 4 два раза
вынули шар 1 — в мешке шары 0 два раза, 1 и от 2 до 4 два раза
вынули шар 2 — в мешке шары от 0 до 1 два раза, 2 и от 3 до 4 два раза
вынули шар 3 - в мешке шары от 0 до 2 два раза, 3 и 4 два раза
вынули шар 4 — от 0 до 3 два раза и 4
Но т.к. достать мы можем 10 шаров, вероятность (частота) каждого состояния 2/10 таким образом
-5*0,2*log(0,2)=~2,3бит
Отличие от первого варианта только в подсчёте количества состояний, т.е. фактически для варианта доставания одного шара из мешка у нас всегда меняется состояние системы, поэтому мы получаем сразу много (полную) информацию о системе.
Дальше мы достаём ещё один шар. Для первого случая.
1. Количество состояний системы:
Первый шар был 0, достали 1, остались 2,3,4,5,6,7,8,9
Первый шар был 0, достали 2, остались 1,3,4,5,6,7,8,9
...
Первый шар был 1, достали 0, остались 2,3,4,5,6,7,8,9
и т.д. Видно что каждое состояние повторяется 2 раза, т.к. мы не делаем разницу между вариантами 1 и 0, или 0 и 1, таким образом по тем шарам которые достали:
01,02,03,04,05,06,07,08,09 — 9 состояний по два раза
12,13,14,15,16,17,18,19 — 8 состояний по два раза
23,24,25,26,27,28,29 - 7 состояний по два раза
и т.д. всего 9+8+7+6+5+4+3+2+1=45 уникальных состояний
вероятность(частота) каждого 2/90 (т.к. 01 и 10 для нас одно и тоже)/90(всего возможных состояний по 9 состояний для каждого случая: сначала вытащили 0, сначала вытащили 1, и т.д.)=2/90. Применяем формулу:
-45*2/90*log(2/90)=~5,5бит. Добавили 5,5-3,3=2,2 бит. Сложность системы выросла, но новый шар принёс меньше полезной информации, т.к. появлется больше предсказуемости в том какой шар появится дальше. Вынув 9 шаров из 10, мы на 100% будем знать какой шар будет следующим и ценность 10-ого шара будет 0бит.
2. Для второго случая
00
01,02,03,04 — по два раза
11
12,13,14 — по два раза
22
23,24 — по два раза
33
34 — по два раза
44
Всего (1+1+1+1+1)+(4+3+2+1)=15 уникальных состояний и 25 всего. Вероятность каждого состояния не одинакова. Двойные шары имеют вероятность 1/25, а остальные 2/25 (т.к. см. предыдущий пункт у 34 и 43 для нас одинаковы). Применяем формулу:
Если вы говорите про табличный процессор, попробуйте изменить формат ячейки с формулой на числовой. Правая кнопка мыши на ячейке -> формат ячейки -> выбрать числовой.
'Задача #1
REM Организоывть массив и вывести на дисплей значение и индекс
REM предпоследнего положительного элемента
DIM A(1 TO 10) 'Массив из 10 элементов
J = 0 'Индекс предпоследнего положительного
K = 0 'Индекс последнего положительного
FOR I = 1 TO 10
PRINT «Введите элемент массива А(»; I; ")";
INPUT ":", A(I)
IF A(I) > 0 THEN
J = K
K = I
END IF
NEXT I
IF J <> 0 THEN
PRINT «Предпоследний положительный элемент =»; A(J);
PRINT «индекс =»; J
ELSE
PRINT «Найдено меньше двух положительных элементов»
END IF
'Задача #2
REM Дано три числа. Если все три отрицательные, то вычислить и
REM напечатать куб второго числа, в противном случае произведение
REM двух первых чисел.
INPUT «Первое число:», A
INPUT «Второе число:», B
INPUT «Третье число:», C
IF A < 0 AND B < 0 AND C < 0 THEN
PRINT «Куб второго числа =»; B * B * B
ELSE
PRINT «Произведение двух первых чисел =»; A * B
END IF
Если я правильно понял формулу: X2*not(X3)+X1*X3+not(X2). Это ДНФ, чтобы привести к СДНФ нам надо чтобы в каждой из групп коньюнкций (умножений) присутствовали все литералы (переменные X1, X2 и X3). Таких групп у нас 3, недостающие переменные вставим в виде [X+not(X)], а потом раскроем скобки и немного упростим.
program one;
var
a,b:real;
begin
write('Введите первое число: ');
readln(a);
write('Введите второе число: ');
readln(b);
if (a<b) br=""> begin
writeln('Первое число меньше, его куб = ',a*a*a:0:5);
end
else
if (b<a) br=""> begin
writeln('Второе число меньше, его куб = ',a*a*a:0:5);
end
else
writeln('Числа равны');
write('Нажмите ENTER для завершения');
readln
end.
</a)></b)>
<b) br=""><a) br="">
-----------------Номер ДВА
program two;
var
a,b:real;
begin
write('Введите первое число: ');
readln(a);
write('Введите второе число: ');
readln(b);
if (a<0) then writeln('Первое число отрицательное');
if (b<0) then writeln('Второе число отрицательное');
if (a>=0) and (b>=0) then writeln('Отрицательных нет');
write('Нажмите ENTER для завершения');
readln
end.
<b) br="" then="">
Всё проверил во FreePASCAL, при выводе использовал модификаторы :0:2 и :0:5 для вещественных чисел, которые означают количество выводимых цифр до запаятой и соответсвенно после запятой (0 значит всё что есть, а также влияет на ведущие или последующие нули, можете поиграться при желании)</b)>
'Упорядочить массив 6 на 7 по возрастанию
N = 6
M = 7
R = 1000
DIM A(1 TO N, 1 TO M)
RANDOMIZE TIMER
CLS
PRINT "--- Исходная матрица ---"
FOR I = 1 TO N
FOR J = 1 TO M
A(I, J) = INT((R — 1) * RND) + 1
PRINT A(I, J);
NEXT
PRINT
NEXT
C = 0
FOR I = 1 TO N
FOR J = 1 TO M — 1
C = C + 1
IF A(I, J) > A(I, J + 1) THEN
T = A(I, J)
A(I, J) = A(I, J + 1)
A(I, J + 1) = T
J = 0
I = 1
END IF
IF I < N THEN
IF A(I, M) > A(I + 1, 1) THEN
T = A(I, M)
A(I, M) = A(I + 1, 1)
A(I + 1, 1) = T
J = 0
I = 1
END IF
END IF
NEXT J
NEXT I
PRINT "--- Отсортированная матрица ---"
FOR I = 1 TO N
FOR J = 1 TO M
PRINT A(I, J);
NEXT
PRINT
NEXT
PRINT "Всего шагов сортировки ", C
A = 1 и B = 0 что и требовалось, если брать произвольные A и B то представив в двоичном виде и расширив действия приведённые выше на все разряды то получаем искомое. Единственное условие операция XOR должна быть определена в том множестве систем в которых определяется и сам алгоритм.