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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2016, 17:52   #1
Smile189
Пользователь
 
Регистрация: 01.10.2016
Сообщений: 25
По умолчанию Программа работает. Помогите добавить условие

Программа работает. Помогите добавить условие, что если символ не входит в русский алфавит выдать ошибку (данная программа просто удаляет символы которые не входят в алфавит, а нужно что бы об этом еще и сообщалось)

Код:
program zi3;
 
{$APPTYPE CONSOLE}
 
uses
  windows,
  SysUtils;
 
//Шифрование Цезаря
function Cesar_Crypt(s:string):string;
const
  SizeA = 34; //Размер алфавита
  RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; //Алфавит
var i, P , n :integer;
    temp:string;
begin
Result:=' ';
writeln('Введите размер шага');
readln(n);
 s:=AnsiLowerCase(s);
temp:='';
 
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
 
  P:=pos(s[i],RusA)+n;
 
  if P>SizeA then
  P:=P-SizeA;
  Result:=Result+RusA[P];
 
  end;
end;
 
//Расшифровка Цезаря
function Cesar_DeCrypt(s:string):string;
const
  SizeA = 34; //Размер алфавита
  RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; //Алфавит
var i, P, n :integer;
    temp:string;
begin
writeln('Введите размер шага');
readln(n);
s:=AnsiLowerCase(s);
temp:='';
 
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA)-3;
  if P<=0 then
  P:=P+SizeA;
  Result:=Result+RusA[P];
  end;
end;
 
var
 aStr : String;
 bStr: string;
begin
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
writeln ('введите фразу для шифрования');
readln ( aStr );
writeln ('зашифрованный текст - ',Cesar_Crypt(aStr));
 
writeln('введите фразу для расшифрования');
readln ( bStr );
writeln ('расшифрованный текст - ',Cesar_DeCrypt(bStr));
readln;
end.
Smile189 вне форума Ответить с цитированием
Старый 29.10.2016, 19:40   #2
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Код:
// Шифрование Цезаря
function Cesar_Crypt(s: string): string;
const
  SizeA = 34; // Размер алфавита
  RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; // Алфавит
var
  i, P, n: integer;
  temp: string;
  flag: boolean;
  Q: string;
begin
flag:=false;
  Result := ' ';
  writeln('Введите размер шага');
  readln(n);
  s := AnsiLowerCase(s);
  temp := '';

  // удаление символов сообщения, не входящих в наш алфавит
  for i := 1 to length(s) do
    if pos(s[i], RusA) <> 0 then
      temp := temp + s[i]
    else
      flag := true;
  if flag then
  begin
    writeln('удалить буржуйские буквы? да/нет');
    readln(Q);
    if Q = 'да' then
      s := temp
    else if Q <> 'нет' then
      begin
         writeln('неверный ввод = кривые руки:=да. Буквы удалим ');
         readln;
         s := temp
     end;
  end;
  for i := 1 to length(s) do
  begin

    P := pos(s[i], RusA) + n;

    if P > SizeA then
      P := P - SizeA;
    Result := Result + RusA[P];

  end;
end;

Последний раз редактировалось Replicant; 29.10.2016 в 19:52.
Replicant вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие в PHP - Не работает условие: не выводит сообщение. Ave_Ave_Ave PHP 13 17.06.2016 12:20
C++builder: Помогите добавить условие, для правельного выполнения RendomID Помощь студентам 3 20.06.2014 00:32
Добавить условие в цикл 9tech Паскаль, Turbo Pascal, PascalABC.NET 0 19.05.2011 06:50
Обьясните как работает программа условие и код есть max0072233 Общие вопросы C/C++ 0 16.01.2011 16:09
Добавить условие в макрос Pilot Microsoft Office Excel 8 20.02.2010 17:35