Олимпиада. Шпион - Pascal
Формулировка задачи:
Ваня и Саша решили закодировать свои сообщения след.образов: строчные и заглавные буквы, знаки препинания ( . , : ; ? ! ) и пробел заменить на бинарные расширения коды ASCII записанные наоборот, остальные символы оставить без изменений. Помогите закодировать сообщение для Саши.
Пример:
Ввод: 2а+3B?
Вывод:210000110+30100001011111100.
Спасибо. Огромное
Решение задачи: «Олимпиада. Шпион»
textual
Листинг программы
var s,r,t:string; j,i:integer; begin readln(s); for i:=1 to length(s)do begin if s[i] in ['a'..'z','A'..'Z','а'..'я','А'..'Я','ё','Ё','.',',',':',';',' ','?','!'] then begin j:=ord(s[i]);t:=''; while j>0 do begin t:=t+chr(j mod 2+48); j:=j div 2; end; for j:=length(t) to 7 do t:=t+'0' end else t:=s[i]; r:=r+t; end; writeln(r) end.
Объяснение кода листинга программы
- Объявляются переменные:
s,r,tтипа string, для хранения строковых значений.j,iтипа integer, для хранения целочисленных значений.
- Вводится значение переменной
sс клавиатуры. - Выполняется цикл от 1 до длины строки
s.- Если текущий символ строки
sявляется буквой, цифрой, пробелом, знаком препинания или другим специальным символом, то:- Присваивается переменной
jкод текущего символа. - Очищается переменная
t. - Используется цикл, чтобы перевести код символа в двоичную систему, добавляя остатки от деления на 2 к переменной
t. - Добавляются нули к двоичному коду, чтобы дополнить его до 8 символов.
- Присваивается переменной
- Иначе текущий символ копируется в переменную
t. - Значение переменной
tдобавляется к переменнойr.
- Если текущий символ строки
- Выводится значение переменной
r. Таким образом, данный код преобразует введенную строку, заменяя каждый символ его двоичным представлением и добавляя нули для заполнения до 8 бит, затем выводит результат.