от 0 p.
Решаю инженерные задачи в области вычислительных сетей, пишу программы.
Всего эксперт дал 31 ответов, Рейтинг: +46 (9 лучших ответа, 2 голоса - За, 1 голоса - Против).
Ответ эксперта

Немного не красиво получилось, но работает.

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.

04.02.13
Ответ эксперта

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.

04.02.13
Ответ эксперта

Для этого надо воспользоваться формулой Шеннона 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 для нас одинаковы). Применяем формулу:

5*1/25*log(1/25)+ 10*2/25*log(2/25)=~3,8бит. Добавили 3,8-2,3=1,5бит

04.02.13
Лучший ответ по мнению автора
Ответ эксперта

Если вы говорите про табличный процессор, попробуйте изменить формат ячейки с формулой на числовой. Правая кнопка мыши на ячейке -> формат ячейки -> выбрать числовой.

04.02.13
Ответ эксперта

'Задача #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

16.07.11
Ответ эксперта

Если я правильно понял формулу: X2*not(X3)+X1*X3+not(X2). Это ДНФ, чтобы привести к СДНФ нам надо чтобы в каждой из групп коньюнкций (умножений) присутствовали все литералы (переменные X1, X2 и X3). Таких групп у нас 3, недостающие переменные вставим в виде [X+not(X)], а потом раскроем скобки и немного упростим.

X2*not(X3)+X1*X3+not(X2) =

[X1+not(X1)]*X2*not(X3)+

X1*[X2+not(X2)]*X3+

[X1+not(X1)]*not(X2)*[X3+not(X3)]=

X1*X2*not(X3)+not(X1)*X2*not(X3)+

X1*X2*X3+X1*not(X2)*X3+

X1*not(X2)*X3+X1*not(X2)*not(X3)+not(X1)*not(X2)*X3+not(X1)*not(X2)*not(X3)

теперь найдём повторяющиеся группы (отметил одним цветом) и оставим одну из них по правилу X+X=X

В итоге получаем:

X1*X2*not(X3)+not(X1)*X2*not(X3)+X1*X2*X3+X1*not(X2)*X3+X1*not(X2)*not(X3)+not(X1)*not(X2)*X3+not(X1)*not(X2)*not(X3)

СДНФ больше ДНФ за счёт того что в ней обязаны присутствовать все литералы, но каждая из групп должна оставаться уникальной.

15.07.11
Ответ эксперта

----------------НОМЕР ТРИ

program three;
var
a,b:real;
begin
write('Введите стоимость покупки: ');
readln(a);
write('Введите полученные деньги: ');
readln(b);

if (a=b) then writeln('Спасибо') else
if (a<b) br="" then=""> writeln('Недостаточно средств: ',a-b:0:2);

write('Нажмите ENTER для завершения');
readln

end.
 </b)>

фильт убирает знаки больше меньше, не могу нормально код запостить, скиньте почту что-ли?

26.01.11
Ответ эксперта

-----------------Номер РАЗ

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)>

 

 

 

 

 

 

 

</a)></b)>

26.01.11
Лучший ответ по мнению автора
Ответ эксперта

А ответов сложных и не надо:

'Упорядочить массив 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
 

14.12.10
Ответ эксперта

Пример приведён для чисел A = 0 и B = 1

1. A=A XOR B ;A = 0 XOR 1 = 1

2. B=A XOR B ;B = 1 XOR 1 = 0

3. A=A XOR B ;A = 1 XOR 0 = 1

A = 1 и B = 0 что и требовалось, если брать произвольные A и B то представив в двоичном виде и расширив действия приведённые выше на все разряды то получаем искомое. Единственное условие операция XOR должна быть определена в том множестве систем в которых определяется и сам алгоритм.

Таблица состояний XOR

x y [x XOR y]

0 0 0

0 1 1

1 0 1

1 1 0

02.11.10
Лучший ответ по мнению автора
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store