Задача на кодирование |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задача на кодирование |
In |
Сообщение
#1
|
Гость |
Помогите решить задачу! Валюсь на сессии..
Нужно закодировать вводимую с клавиатуры строку. Символ меняется на последовательность из 4 знаков (букв или цифр). Если символ стоит между 2-мя гласными или 2-мя согласными, то он меняется на иную последовательность, например, из 3 знаков (букв или цифр). И так вся строка!! Помогите, особые затруднения вызывает часть замены исходного символа на код (этот цикл никак не могу сделать)..( |
In |
Сообщение
#2
|
Гость |
вот мои попытки..правда они не закончены.
Код program academy3; const A:set of char=['B'..'D', 'F'..'H','J'..'N','P'..'T', 'V'..'X','Z','z']; B:set of char=['A','E','I','O','U','Y']; n=2; m=13; type mas=array[1..n,1..m] of string[4]; var text,result:string; {Исходная и конечная строка} q:integer; {Элементы строки} s,s1:mas; i,j,i1,j1:integer; begin Writeln ('Введите 2 цифры от 01 до 26 и 2 буквы '); begin for i:=1 to n do for j:=1 to m do Readln(s[i,j]); end; Writeln ('Введите 2 цифры от 26 до 54 и 2 буквы'); begin for i1:=1 to n do for j1:=1 to m do Readln(s1[i1,j1]); end; Writeln ('Введите строку не более 266 символов на английском заглавыми буквами'); Readln(text); for q:=1 to 255 do begin Read(text[2]);{читаем второй символ строки} if (text[q] in A) and (text[q+2] in B) then text:=text+s[1;1] begin end; end; end. |
trminator |
Сообщение
#3
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Код program coding; var s : string; pas1, pas2 : string; const sogl : set of char = ['q','w','r','t','p','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']; glasn: set of char = ['e','y','u','i','o','a']; procedure code(var s:string; const pas1, pas2: string); var sn : string; i : integer; begin sn:=pas1+s[1]; for i:=2 to length(s)-1 do begin if ((s[i-1] in glasn)and(s[i+1] in glasn)) or ((s[i-1] in sogl)and(s[i+1] in sogl)) then sn:=sn+pas2+s[i] else sn:=sn+pas1+s[i] end; sn:=sn+pas1+s[length(s)]; s:=sn end; procedure decode(var s:string; const pas1, pas2: string); var i : integer; sn : string; begin i:=1; sn:=''; while i<=length(s) do begin if s[i] = pas1[1] then begin inc(i, length(pas1)); sn:=sn+s[i] end else begin inc(i, length(pas2)); sn:=sn+s[i] end; inc(i) end; s:=sn end; begin Write('Ввелите строку для кодирования ');ReadLn(s); Write('Введите первый пароль ');ReadLn(pas1); Write('Введите второй пароль ');ReadLn(pas2); code(s, pas1, pas2); Write('Закодировали: ');writeLn(s); decode(s, pas1, pas2); Write('Раскодировали: ');writeLn(s) end. -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Текстовая версия | 16.10.2024 15:41 |