var p,i,x,count: integer;
begin
count := 0;
p := 0 ;
for i := 1 to 4 do begin
read (x);
if x >= 0 then begin
p := p*x;
count := count+1
end
end;
if count > 0 then begin
writeln(х );
writeln(p);
end
else
writeln('NO')
end
Переменная p в начале равняется нулю. В эту переменную будет записываться общее произведение неотрицательных чисел, умножая p на каждое неотрицательное число, но при умножении любого числа на 0 произведение будет 0, поэтому нужно в начале присвоить ей единицуВ конце выводится последнее введённое число, а нужно вывести количествоПосле end не стоит точкаПравильный вариант программыvar p,i,x,count: integer;
begin
count := 0;
p := 1;
for i := 1 to 4 do begin
read (x);
if x >= 0 then begin
p := p*x;
count := count+1
end
end;
if count > 0 then begin
writeln(count);
writeln(p);
end
else
writeln('NO')
end.
Поделитесь своими знаниями, ответьте на вопрос:
1. Как открыть новое окно программы? 2. Как сохранить новый текст программы? 3. Как проверить текст программы на ошибки? 4. Что такое компиляция программы? 5. Как «запустить» программу? 6. Назовите оператор вывода в Turbo Pascal. 7. Назовите оператор ввода в Turbo Pascal. 8. Какие арифметические действия применимы к переменным вещественного типа? 9. Какой тип данных применен в этой практической работе
3. Ткёт ткач ткани
Объяснение:
Строим дерево по таблице количеств повторений символов:
Символ "Т" повторяется 4 раза
Символ "К" повторяется 3 раза
Символ "Ё" повторяется 1 раз
Символ " " повторяется 2 раза
Символ "А" повторяется 2 раза
Символ "Ч" повторяется 1 раз
Символ "Н" повторяется 1 раз
Символ "И" повторяется 1 раз
Каждый символ является конечным узлом дерева, количество повторений символа это вес узла.
Создадим список нераспределенных узлов по возрастанию весов.
{"Ё"(1)} {"Ч"(1)} {"Н"(1)} {"И"(1)} {"_"(2)} {"А"(2)} {"К"(3)} {"Т"(4)}Объединим узлы с минимальным весом {"Ё"(1)} и {"Ч"(1)} в новый узел с весом 1+1=2
и поставим этот узел в список вместо исходных узлов в соответствии с получившимся весом:
{"Н"(1)} {"И"(1)} {"1 (2)":{"Ё"(1)},{"Ч"(1)}} {"_"(2)} {"А"(2)} {"К"(3)} {"Т"(4)}Объединим узлы с минимальным весом {Н(1)} и {И(1)} в новый узел с весом 1+1=2, поставим этот узел в список и отсортируем по весу узлов:
{"2 (2)":{"Н"(1)},{"И"(1)}} {"1 (2)":{"Ё"(1)},{"Ч2(1)}} {"_"(2)} {"А"(2)} {"К"(3)} {"Т"(4)}Теперь объединяем узлы {"2 (2)":{"Н"(1)},{"И"(1)}} и {"1 (2)":{"Ё"(1)},{"Ч"(1)}} в узел 3 с весом 2+2=4
{"_"(2)} {"А"(2)} {"К"(3)} {"3 (4)":{"2 (2)":{"Н"(1)},{"И"(1)}},{"1 (2)":{"Ё"(1)},{"Ч"(1)}}} {"Т"(4)}Повторим с объединением "_" и "А" в узел 4 с весом 2+2=4
{"К"(3)} {"4 (4)":{"_"(2)},{"А"(2)}} {"3 (4)":{"2 (2)":{"Н"(1)},{"И"(1)}},{"1 (2)":{"Ё"(1)},{"Ч"(1)}}} {"Т"(4)}далее объединение узлов "К" и 4 в узел 5 с весом 4+3=7
{"3 (4)":{"2 (2)":{"Н"(1)},{"И"(1)}},{"1 (2)":{"Ё"(1)},{"Ч"(1)}}} {"Т"(4)} {"5 (7)":{"К"(3)},{"4 (4)":{"_"(2)},{"А"(2)}}}узлы 3 и "Т" объединяем в узел 6 с весом 4+4=8
{"6 (8)":{"3 (4)":{"2 (2)":{"Н"(1)},{"И"(1)}},{"1 (2)":{"Ё"(1)},{"Ч"(1)}}},{"Т"(4)}} {"5 (7)":{"К"(3)},{"4 (4)":{"_"(2)},{"А"(2)}}}Оставшиеся 2 узла объединяются в корневой узел 7 с весом 7+8=15 и дерево готово.
код каждого символа получается как путь по дереву от корня до соответствующего листа:
"Т" код равен "11"
"К" код равен "00"
"А" код равен "011"
" " код равен "010"
"И" код равен "1001"
"Н" код равен "1000"
"Ч" код равен "1011"
"Ё" код равен "1010"
Длина кодированного сообщения равна сумме произведений количества повторений каждого символа на длину его кода:
4*2+3*2+1*4+2*3+2*3+1*4+1*4+1*4=42 бит
Длина кодированного сообщения равна 42 бит:
110010101101011000111011010110001110001001
ТКЁТ ТКАЧ ТКАНИ
Длина исходного сообщения 15 байт или 120 бит в ASCII:
сообщение содержит 8 различных символов. Длина кода одного символа при равномерном кодировании равна log₂(8)=3 бит
при равномерном кодировании длина текста равна 15*3=45 бит
Сжатие по отношению к 8-ми битному коду равно 120/42=~2.86
Сжатие по отношению к равномерному коду равно 45/42=~1.07
http://www.bolshoyvopros.ru/questions/3211301-kak-algoritmom-haffmana-postroit-derevo-i-kody-dlja-frazy-tkjot-tkach-tkani.html