ОЧЕНЬ Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 127 идущих подряд цифр «9»? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (333) ИЛИ нашлось (999)
ЕСЛИ нашлось (333)
ТО заменить (333, 9)
ИНАЧЕ заменить (999, 3)
КОНЕЦ ЕСЛИ
КОНЕЦ
желательно с полным объяснением!
Объяснение:
Вначале определим, что такое кодирование (также и кодирование сообщений) методом RLE:
"Кодирование длин серий (англ. run-length encoding, RLE) или кодирование повторов — алгоритм сжатия данных, заменяющий повторяющиеся символы (серии) на один символ и число его повторов. Серией называется последовательность, состоящая из нескольких одинаковых символов. При кодировании (упаковке, сжатии) строка одинаковых символов, составляющих серию, заменяется строкой, содержащей сам повторяющийся символ и количество его повторов." Если внимательно это прочитать, то сразу становится понятно, как решать ваше задание:
1.) ИВВВ111у - 1И3В311у4ф
2.) еВпппВ11уфффуугггддд - 1е1В3п1В211у3ф2у3г3д
3.) РРппВ12уллл3336 - 2Р2п1В11121у3л4р3316
(жирным шрифтом обозначено количество одинаковых символов в строке, обозначается повторяющийся символ сразу после числа, прописаного жирным шрифтом).
Также можно сосчитать во сколько раз уменьшилась строка (то есть эффективность данной кодировки):
Для первой строки: 12÷10 = 1.2 (эффект присутствует)
Для второй строки: 20÷20 = 1 (никакого эффекта, к сожалению)
Для третей строки: 19÷20 = 0.95 (лучше бы не кодировали
1011010
Объяснение:
Алгоритм перевода в двоичную систему:
1)
Переводим модуль числа в двоичную систему
Выполнить деление исходного числа на 2. Если результат деления больше или равен 2, продолжать делить его на 2 до тех пор, пока результат деления не станет равен 1
2). Выписать результат последнего деления и все остатки от деления в обратном порядке в одну строку.
3) выполняем инверсию всех битов
4) к результату добавляем 1
Получается:
1) делим -89 на 2 = 44, остаток 1 - пишем -1, т. к. остаток 1
2) 44/2=22, без остатка, пишем 0
3) 22/2=11, без остатка, пишем 0
4) 11/2=5, остаток 1, пишем 1
5) 5/2=2, остаток 1, пишем 1
6) 2/2=1, без остатка, пишем 0
7) 1/2=0, остаток 1, пишем 1
Записываем в обратном порядке полученные 7 цифр 1011001
3) 0100110
4) 0100110
+ 1
получаем 1011010