Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 13.07.2017
Сообщений: 3

Программа для шифровки/дешифровки

13.07.2017, 16:56. Показов 3185. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли написать программку, которая будет преобразовывать слова (предложения) на русском по такому типу: заменяет буквы на противоположные а-я, б-ю, в-э, г-ь, д-ы, е-ъ, ё-щ, ж-ш, з-ч, и-ц, й-х, к-ф, л-у, м-т, н-с, о-р, п-п;
Если возможно, помогите пожалуйста, паскаль учил год назад, ничего не помню, а программа такая нужна.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2017, 16:56
Ответы с готовыми решениями:

Написать функции для шифровки и расшифровки строк
Создайте функции для шифровки и расшифровки строк. Способ шифрования заключается в замене 1 символа с 3, 2 из 4 и т.д. Строка для...

Программа шифровки и дешифровки
Составить программу шифровки и дешифровки заданного текста по следующему правилу: «первая буква алфавита заменяется на одиннадцатую,...

Создание ключа для шифровки / дешифровки
Приветствую всех. Столкнулся с такой проблемой "как создать свой ключ для (де)шифровки файла". таким способом ...

17
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
13.07.2017, 17:14
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
const n=33;
      alf:string[n]='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
var s1,s2:string;
    i:integer;
begin
writeln('Введите строку из малых русских букв');
readln(s1);
//шифрование
s2:='';
for i:=1 to length(s1) do
s2:=s2+alf[n-pos(s1[i],alf)+1];
write(s2);
end.
1
0 / 0 / 0
Регистрация: 13.07.2017
Сообщений: 3
13.07.2017, 18:10  [ТС]
А как добавить сюда пробел, что бы пропуски между словами делать?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
13.07.2017, 18:12
Pascal
1
2
3
4
s2:='';
for i:=1 to length(s1) do
if s1[i]=' ' then s2:=s2+s1[i]
else s2:=s2+alf[n-pos(s1[i],alf)+1];
1
0 / 0 / 0
Регистрация: 13.07.2017
Сообщений: 3
13.07.2017, 18:16  [ТС]
Большое человеческое спасибо
0
13.07.2017, 22:16

Не по теме:

Ох уж эти короткие коды с крутыми методами...

0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
13.07.2017, 23:05
kolay_ne, эм, а что крутого ты здесь нашел? Или,может быть, "крутого"?
0
13.07.2017, 23:20

Не по теме:

Zwelenewskiy, Во-первых, это не по теме - BB-тэг OFF. Во-вторых они крутые тем, что они высокоуровневые.
Ну тип, вместо кучи действий реализован один метод.

0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
14.07.2017, 05:53
В стиле TP (как у Puporev):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
const
  A = ' абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
  B = ' яюэьыъщшчцхфутсрпонмлкйизжёедгвба';
var
  S : String;
  i : Integer;
begin
  ReadLn(S);
  for i := 1 to Length(S) do
    if Pos(S[i], A) > 0 then
      S[i] := B[Pos(S[i], A)];
  WriteLn(S);
end.
Хотя, проще вот так:
Pascal
1
2
3
4
5
6
const
  A = ' абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
  B = ' яюэьыъщшчцхфутсрпонмлкйизжёедгвба';
begin
  WriteLn(ReadLnString.ToCharArray.Select(c->A.IndexOf(c)<0?c:B[A.IndexOf(c)+1]).JoinIntoString);
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,901
Записей в блоге: 12
14.07.2017, 08:52
проще вот так
Еще проще будет не хардкодить константу B, а получить ее из A, через ReverseString. Меньше исправлений при изменении алфавита, меньше вероятности ошибиться -> выше надёжность
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
14.07.2017, 14:10
Пытался дополнить программу цифрами и символами - попытка провалилась...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const
  a = ' abcdefghijklmnopqrstuvwxyz0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
  b = ' !,.<>\/|=+_-()*?&:^%;$№#"@9876543210zyxwvutsrqponmlkjihgfedcba';
  c = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
  d = ' !,.<>\/|=+_-()*?&:^%;$№#"@9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA';
 
var
  st: string;
  i: integer;
 
begin
  readln(st);
  for i := 1 to Length(st) do   
    if st[i] in a
      then st[i] := b[Pos(st[i], a)]
    else st[i] := d[Pos(st[i], c)];
  writeln(st);
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2017, 14:14
Pascal
1
2
3
4
5
6
7
const
* a:string = ' abcdefghijklmnopqrstuvwxyz0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
* b:string = ' !,.<>\/|=+_-()*?&:^%;$№#"@9876543210zyxwvutsrqponmlkjihgfedcba';
* c:string = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
* d:stribg = ' !,.<>\/|=+_-()*?&:^%;$№#"@9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA';
.........................................
if pos(st[i],a)>0 then
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
14.07.2017, 14:17
Удалил

Добавлено через 2 минуты
Puporev, проблема не в этом,а в том,что предложение некорректно шифруется. И,вроде бы, в константах есть автоопределение типа..
0
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
14.07.2017, 15:05
Zwelenewskiy, Не люблю отлавливать ошибки, люблю брать и заново писать задачу. Что я и сделал:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function reverse(str:string):string;
begin
  for i: integer := length(str) downto 1 do
    result += str[i];
end;
 
const
  a = ' abcdefghijklmnopqrstuvwxyz0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
  b = reverse(a);
  c = uppercase(a);
  d = uppercase(b);
 
begin
  var s: string;
  readln(s);
  for i: integer := 1 to length(s) do
  begin
    if s[i] in a then
      write(b[pos(s[i], a)])
    else if s[i] in c then
      write(d[pos(s[i], c)])
    else
      begin
        writeln;
        writeln('Ошибка, неизвестный символ');
      end;
  end;
end.
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
14.07.2017, 21:52
Окончательный рабочий вариант
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const
  a = ' abcdefghijklmnopqrstuvwxyz';
  b = ' zyxwvutsrqponmlkjihgfedcba';
  c = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  d = ' ZYXWVUTSRQPONMLKJIHGFEDCBA';
  e = '0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
  f = '!,.></\|=+_-)(*?&:^%;$№#"@9876543210';
 
var
  st: string;
  i: integer;
 
begin
  readln(st);
  for i := 1 to Length(st) do    
    if st[i] in a
      then st[i] := b[Pos(st[i], a)]
    else if st[i] in e
      then st[i] := f[Pos(st[i], e)]
    else st[i] := d[Pos(st[i], c)];
  
  writeln(st);
end.


Добавлено через 45 секунд
Правда, его нельзя использовать для латиницы... Но это поправимо =))
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.07.2017, 08:09
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
Правда, его нельзя использовать для латиницы.
Для китаиницы что ли написано?
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
15.07.2017, 10:31
Puporev, мда,голова уже шла кругом: что крутилось в ней,то и написал... =)))
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
17.07.2017, 06:45
Zwelenewskiy, вы всегда пытаетесь идти какими-то сложными путями…
А не проще было взять и объединить ваши константы в две?
Вместо:
Pascal
1
2
3
4
5
6
a = ' abcdefghijklmnopqrstuvwxyz';
  b = ' zyxwvutsrqponmlkjihgfedcba';
  c = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  d = ' ZYXWVUTSRQPONMLKJIHGFEDCBA';
  e = '0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
  f = '!,.></\|=+_-)(*?&:^%;$№#"@9876543210';
Написать:
Pascal
1
2
3
4
5
6
7
const
  a = ' abcdefghijklmnopqrstuvwxyz' +
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
       '0123456789@"#№$;%^:&?*()-_+=|\/<>.,!';
  b = ' zyxwvutsrqponmlkjihgfedcba' +
       'ZYXWVUTSRQPONMLKJIHGFEDCBA' +
       '!,.></\|=+_-)(*?&:^%;$№#"@9876543210';
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.07.2017, 06:45
Помогаю со студенческими работами здесь

Составить программу шифровки и дешифровки текста
&quot;Составить программу шифровки и дешифровки текста&quot; . Больше в задании ничего не сказано ... Ну а я немного не бум-бум )

Разработать программу шифровки-дешифровки текста
Помогите, пожалуйста, написать это на шарпе: 1)Разработать программу шифровки-дешифровки текста путем замены каждой буквы текста...

Создать программу шифровки/дешифровки (шифрование перестановкой)
создать программу шифровки дешефровки вот задание открытый текст &quot;шифрование_перестановкой&quot;.ключ правило перестановки: группы...

Поправьте, пожалуйста, код шифровки-дешифровки файлов
Здравствуйте, поправьте немного программку. Создал приложение чтобы шифровать и расшифровывать файлы, но сохраняет как то странно и не...

Составить программу шифровки и дешифровки данного текста по правилу
Составить программу шифровки и дешифровки данного текста по следующему правилу: Каждая буква от а до ю заменяется на следующую по алфавиту,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru