Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2014, 09:06   #1
AnLucius
 
Регистрация: 28.02.2014
Сообщений: 3
По умолчанию Шайтан машина! "пересечение диапазонов меток в операторе CASE"

Задание: Есть два алфавита:
абвгдежзийклмнопрстуфхцчшщъыьэюяАБВ ГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
сЭЯпэйФхдимЪъЛНщЩлИДЮрзГЙаХБфкЫтуУР АШнОЦЗКгвочВЕПюябжМЖТшСыьеЧцЬ
и есть зашифрованный текст( отрезок текста- АсЩЩд АуППЗюВч
). Надо текст расшифровать.
Код:

                             var
s: string;
i,k: integer;
begin
WriteLn('Введите строку:');
ReadLn(s);
k:=length(s);
for i:=1 to k do
case s[i] of
'а': s[i]:='с';
'б': s[i]:='Э';
'в': s[i]:='Я';
'г': s[i]:='п';
'д': s[i]:='э';
'е': s[i]:='й';
'ж': s[i]:='ф';
'з': s[i]:='х';
'и': s[i]:='д';
'й': s[i]:='и';
'к': s[i]:='м';
'л': s[i]:='Ъ';
'м': s[i]:='ъ';
'н': s[i]:='Л';
'о': s[i]:='Н';
'п': s[i]:='щ';
'р': s[i]:='Щ';
'с': s[i]:='л';
'т': s[i]:='И';
'у': s[i]:='Д';
'ф': s[i]:='Ю';
'х': s[i]:='р';
'ц': s[i]:='з';
'ч': s[i]:='Г';
'ш': s[i]:='Й';
'щ': s[i]:='а';
'ъ': s[i]:='Х';
'ы': s[i]:='Б';
'ь': s[i]:='ф';
'э': s[i]:='к';
'ю': s[i]:='Ы';
'я': s[i]:='т';
'А': s[i]:='у';
'Б': s[i]:='У';
'В': s[i]:='Р';
'Г': s[i]:='А';
'Д': s[i]:='Ш';
'Е': s[i]:='н';
'Ж': s[i]:='О';
'З': s[i]:='Ц';
'И': s[i]:='З';
'Й': s[i]:='К';
'К': s[i]:='г';
'Л': s[i]:='в';
'М': s[i]:='о';
'Н': s[i]:='ч';
'О': s[i]:='В';
'П': s[i]:='Е';
'Р': s[i]:='П';
'С': s[i]:='ю';
'Т': s[i]:='я';
'У': s[i]:='б';
'Ф': s[i]:='ж';
'Х': s[i]:='М';
'Ц': s[i]:='Ж';
'Ч': s[i]:='Т';
'Ш': s[i]:='ш';
'Щ': s[i]:='С';
'Ъ': s[i]:='ы';
'Ы': s[i]:='ь';
'Ь': s[i]:='е';
'Э': s[i]:='Ч';
'Ю': s[i]:='ц';
'Я': s[i]:='Ь';

'с': s[i]:='а';
'Э': s[i]:='б';
'Я': s[i]:='в';
'п': s[i]:='г';
'э': s[i]:='д';
'й': s[i]:='е';
'ф': s[i]:='ж';
'х': s[i]:='з';
'д': s[i]:='и';
'и': s[i]:='й';
'м': s[i]:='к';
'Ъ': s[i]:='л';
'ъ': s[i]:='м';
'Л': s[i]:='н';
'Н': s[i]:='о';
'щ': s[i]:='п';
'Щ': s[i]:='р';
'л': s[i]:='с';
'И': s[i]:='т';
'Д': s[i]:='у';
'Ю': s[i]:='ф';
'р': s[i]:='х';
'з': s[i]:='ц';
'Г': s[i]:='ч';
'Й': s[i]:='ш';
'а': s[i]:='щ';
'Х': s[i]:='ъ';
'Б': s[i]:='ы';
'Ф': s[i]:='ь';
'к': s[i]:='э';
'Б': s[i]:='ю';
'т': s[i]:='я';
'У': s[i]:='А';
'у': s[i]:='Б';
'Р': s[i]:='В';
'А': s[i]:='Г';
'Ш': s[i]:='Д';
'н': s[i]:='Е';
'О': s[i]:='Ж';
'Ц': s[i]:='З';
'З': s[i]:='И';
'К': s[i]:='Й';
'г': s[i]:='К';
'в': s[i]:='Л';
'о': s[i]:='М';
'ч': s[i]:='Н';
'В': s[i]:='О';
'Е': s[i]:='П';
'П': s[i]:='Р';
'ю': s[i]:='С';
'я': s[i]:='Т';
'б': s[i]:='У';
'ж': s[i]:='Ф';
'М': s[i]:='Х';
'Ж': s[i]:='Ц';
'Т': s[i]:='Ч';
'ш': s[i]:='Ш';
'С': s[i]:='Щ';
'ы': s[i]:='Ъ';
'ь': s[i]:='Ы';
'е': s[i]:='Ь';
'Ч': s[i]:='Э';
'ц': s[i]:='Ю';
'Ь': s[i]:='Я';
end;
Write(s);
end.
Тётьки-дядьки, почму не работает?

Последний раз редактировалось Stilet; 28.02.2014 в 09:18.
AnLucius вне форума Ответить с цитированием
Старый 28.02.2014, 09:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Шайтан-программа:
Код:
const
 a:array[1..2] of string =(
   'абвгдежзийклмнопрстуфхцчшщъыьэюяАБВ ГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',
   'сЭЯпэйФхдимЪъЛНщЩлИДЮрзГЙаХБфкЫтуУР АШнОЦЗКгвочВЕПюябжМЖТшСыьеЧцЬ'
);
var s:string; i:integer;
begin
 s:='АсЩЩд АуППЗюВч';
 for i:=1 to Length(s) do s[i]:=a[1][pos(a[2],s[i])];
 write(s); readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.02.2014, 09:59   #3
AnLucius
 
Регистрация: 28.02.2014
Сообщений: 3
По умолчанию

Stilet, спасибо за быстрый ответ), но чёт не работает. Как результат выдаёт ААААА
AnLucius вне форума Ответить с цитированием
Старый 28.02.2014, 10:07   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Убери лишние пробелы в константах и подправь
Код:
for i:=1 to Length(s) do s[i]:=a[1][pos(s[i],a[2])];
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.02.2014, 10:17   #5
AnLucius
 
Регистрация: 28.02.2014
Сообщений: 3
По умолчанию

Межгалактический почёт и вечная уважуха!) а как поправить, что б вместо пробелов собаку(@) не ставил?
AnLucius вне форума Ответить с цитированием
Старый 28.02.2014, 10:56   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от AnLucius Посмотреть сообщение
Межгалактический почёт и вечная уважуха!) а как поправить, что б вместо пробелов собаку(@) не ставил?
Например, так:
Код:
 for i:=1 to Length(s) do
    if pos(s[i],a[2])>0 then  s[i]:=a[1][pos(s[i],a[2])];
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Почему не работает Case txt Like "текст1", "текст2" Oooleg Microsoft Office Excel 2 15.07.2009 10:08
обратиться к функции через " switch case " B@R@B@$HK@ Общие вопросы C/C++ 4 09.06.2009 19:15